SOOJLE
1.0.0
1.0.0
  • SOOJLE Document
  • 프로젝트 요약
  • 프로젝트 개요
    • 프로젝트 소개
    • 추진 배경 및 필요성
    • 프로젝트 내용
      • 기능적 요구사항
      • 비기능적 요구사항
    • 개발환경 및 팀 구성
    • 워크플로우
      • 계획 수립 & 설계
      • 데이터 수집 및 정규화
      • 인공지능 개발
      • 서비스 모듈 개발
      • 성능 평가 및 보고
    • 프로젝트 예산 내역
  • 사전조사 & 의사결정
    • 사전조사
      • 재학생 대상 사전조사
      • 수집 URL 대상 목록
        • 세종대학교 직할
        • 세종대학교 학과
        • 공식 공지사항
        • 세종대 평생교육원
        • 외부 웹사이트
      • 학습 모델 사전조사
        • LSA - 잠재 의미 분석
        • LDA - 잠재 디리클레 할당
        • Word2Vec - 워드투벡터
        • FastText - 패스트텍스트
    • 의사결정
      • 사용자 인증 방식 의사결정
      • 데이터베이스 의사결정
        • MySQL vs MongoDB 성능 분석
      • 토픽별 의사결정
      • 부가 기능 의사 결정
  • 프로젝트 설계
    • 시스템 구조 설계
    • 핵심 기능 설계
      • 데이터 크롤러 설계
      • 게시물 토픽 정의 및 분류
      • 사용자 관심분야 측정
      • 뉴스피드 설계
        • 사용자-문서 유사도(Recommendation Score)
        • FaS (관심 분야 및 유사도 측정 - 추가)
        • 토픽 뉴스피드 목록
      • 검색 알고리즘 설계
        • 검색 알고리즘 1차 설계
        • 검색 알고리즘 1차 개선안
        • 검색 알고리즘 2차 설계
    • 요구사항 목록
      • DB 요구사항
      • 기능 요구사항
      • 품질 요구사항
      • 관리 요구사항
  • DB
    • 구조 설계
    • 테이블 명세
  • 데이터 크롤러
    • 데이터 크롤러 개요
    • 크롤링 URL 선정
    • 크롤러 구현을 위한 사전조사
    • 크롤러 개발 과정
      • 크롤러 프로그램 설계
      • 크롤러 규격화
      • 크롤러 정규화
      • 데이터 정제 과정
      • 에러 핸들러 구현
      • 배포 환경 이식을 위한 Porting
    • Issue & Exception
    • 결과 보고
  • 인공지능 개발
    • 인공지능 개발 개요
    • NLP 스터디
      • Bag of Words(BoW)
      • Document Term Matrix(DTM)
      • TF-IDF(Term Frequency-Inverse Document Frequency)
      • 문서 유사도(Document Similarity)
    • 데이터 전처리 과정
    • 개발 과정
      • 토크나이저 구현
      • LDA 모델 학습 및 구현
    • LDA 학습 모델링
      • 1차 파라미터 튜닝 결과 (NUM_TOPICS)
      • 2차 파라미터 튜닝 결과 (NUM_TOPICS)
      • 3차 파라미터 튜닝 결과 (NUM_TOPICS)
      • NUM_TOPICS 파라미터 의사결정
      • 4차 파라미터 튜닝 결과 (PASESS, ITERATION)
      • 최종 학습 모델 명세
    • Word2Vec(FastText) 학습 모델링
    • Issue & Exception
    • 성능 분석 결과
  • BackEnd
    • 서버 구축 및 배포
      • SOOJLE 서버 구조
      • 상용 서버 (UWSGI + NGINX) 구축
      • HTTPS 서버 구현
    • API 문서 개요
    • API 목록
      • Analysis
      • Auth API
      • Newsfeed API
      • Post API
      • Search API
      • Admin API
    • 세종 Auth API
    • 통계 기능 설계
    • Issue & Exception
    • 성능 분석 결과
  • FRONTEND
    • 프론트엔드 설계 개요
    • 디자인 설계 의사결정
      • 디자인 컨셉 및 기능 정의
      • 컴포넌트 디자인
      • Logo Variation
    • 화면 흐름도
    • 페이지 UI 명세
      • Main Page
      • Header
      • Footer
      • Mobile Control Bar
      • Login Page
      • Timeline Page
      • Menu Page
      • Hyperlink Icons Page
      • Search Component & Mobile Search Modal
      • Search Page
      • Post Block
      • Snackbar
  • 프로그램 배포
    • 프로그램 개요
    • 시스템 아키텍쳐
    • 주요 기능 및 명세
    • 프로그램 테스트
    • 구현 결과물 배포
  • 마무리
    • References
  • SOOJLE AI
  • SEJONG AUTH
  • IML Tokenizer
  • SOOJLE Crawler
  • SOOJLE Frontend
  • SOOJLE Backend
Powered by GitBook
On this page
  • 개요
  • 잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)
  • 각 문서의 토픽 분포
  • 각 토픽의 단어 분포
  • LDA 모델 아키텍쳐
  • LDA 수행 순서
  • 하이퍼 파라미터 토픽의 갯수 K를 할당
  • 모든 단어를 k개 중 하나의 토픽에 할당
  • 모든 문서의 모든 단어에 대해서 아래의 사항을 반복
  • 최적의 파라미터 도출과정
  • LDA 모델 분석

Was this helpful?

  1. 사전조사 & 의사결정
  2. 사전조사
  3. 학습 모델 사전조사

LDA - 잠재 디리클레 할당

PreviousLSA - 잠재 의미 분석NextWord2Vec - 워드투벡터

Last updated 5 years ago

Was this helpful?

개요

잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)은 토픽 모델링의 대표적인 알고리즘이다. LDA는 문서들은 토픽들의 혼합으로 구성 있으며, 토픽들은 확률 분포에 기반하여 단어들을 생성한다고 가정 하에 수행된다. LDA는 특정 데이터가 주어지면, 문서가 생성되던 과정을 역추적하는 과정을 수행한다.

잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)

LDA 또한 문서 집합에서 토픽이 몇 개가 존재할지 가정하는 것을 하이퍼 파라미터로 취급한다. LDA 또한 LSA와 마찬가지로 전처리 과정을 거친 DTM이 입력되어야 한다. 적절하게 학습된 LDA는 각 문서의 토픽 분포와 각 토픽 내의 단어 분포를 추정하여 입력된 문서의 토픽을 아래와 같이 추정한다.

각 문서의 토픽 분포

문서1 : 토픽 A 100% 문서2 : 토픽 B 100% 문서3 : 토픽 B 60%, 토픽 A 40%

각 토픽의 단어 분포

토픽A : 사과 20%, 바나나 40%, 먹어요 40%, 귀여운 0%, 강아지 0%, 깜찍하고 0%, 좋아요 0% 토픽B : 사과 0%, 바나나 0%, 먹어요 0%, 귀여운 33%, 강아지 33%, 깜찍하고 16%, 좋아요 16%

LDA 모델 아키텍쳐

LDA는 다음과 같은 가정 하에 알고리즘을 수행한다.

  • 빈도수 기반의 표현 방법이며, 단어의 순서는 토픽에 기여하지 않는다.

  • 하나의 문서는 복수의 토픽으로 이루어져 있다.

  • 문서는 복수의 토픽을 담기 위한 단어를 토픽의 확률 분포에 의해 결정한다.

LDA가 가정하는 문서 생성과정은 다음과 같다. D는 말뭉치 전체 문서 개수, K는 전체 토픽 수(하이퍼 파라터), N은 d번째 문서의 단어 수를 의미한. 여기서 관찰 가능한 변수는 d번째 문서에 등장한 n번째 단어 W(d,n)이 유일하다. 머신은 이 정보 만을 가지고 하이퍼 파라미터를 제외한 모든 잠재 변수를 추정하는 과정을 수행한다.

LDA 수행 순서

LDA는 다음과 같은 작동 방식으로 문서의 주제 분류를 수행한다.

하이퍼 파라미터 토픽의 갯수 K를 할당

LDA는 토픽의 개수 K를 입력받으면, K개의 토픽이 M개의 전체 문서에 걸쳐 분포되어 있다고 가정한다.

모든 단어를 k개 중 하나의 토픽에 할당

LDA는 모든 문서의 모든 단어에 대해서 k개 중 하나의 토픽을 랜덤으로 할당한다. 이 작업이 끝나면 각 문서는 토픽을 가지며, 토픽은 단어 분포를 가지는 상태이지만, 랜덤으로 할당하였기 때문에 이 결과는 대부분 틀린 결과일 것이다. 만약 한 단어가 한 문서에서 2회 이상 등장하였다면, 이것 역시 각 단어는 서로 다른 토픽에 할당되었을 확률도 높다.

모든 문서의 모든 단어에 대해서 아래의 사항을 반복

LDA는 각 단어의 토픽을 할당할 때, 어떤 문서의 각 단어 w는 자신은 잘못된 토픽에 할당 있지만, 다른 단어들은 전부 올바른 토픽에 할당돼 있는 상태라고 가정한다.

해당 가정 아래하에 LDA는 크게 2가지 기준으로 해당 단어의 토픽을 재할당한다.

  • p(topic t | document d) : 문서 d의 단어들 중 토픽 t에 해당하는 단어들의 비율

  • p(word w | topic t) : 단어 w를 갖고 있는 모든 문서들 중 토픽 t가 할당된 비율

해당 과정을 반복함으로 모든 단어에 대한 토픽 할당은 점점 수렴 상태로 통일되게 된다. d번째 문서 i번째 단어의 토픽 zd,i가 j번째에 할당될 확률은 다음과 같다.

위 수식에 사용된 각 변수 값은 아래와 같다.

위와 같은 과정을 통해 아래의 예제처럼 apple 단어의 토픽이 미할당된 상태일 경우, B의 토픽을 가질 확률이 높아진다.

최적의 파라미터 도출과정

앞서 언급하였듯이, LDA의 토픽수 K는 사용자가 지정하는 하이퍼 파라미터이다. 최적 토픽수 또한 여러 실험을 통해 구해야 하는 미지수이며, 보편적으로 최적 토픽수를 구하는 데 쓰는 Perplexity, Topic Coherence지표가 존재한다.

Perplexity의 기본 아이디어는 토픽을 생성하는 데에 기여를한 각 단어의 발생확률이 Test Data Set에서 높을 수록 잘 만들어진 모델이라는 개념이다.

Coherence는 주제의 일관성을 측정한다. 토픽에 높게 기여한 상위 단어 간의 유사도를 계산하면 실제로 해당 주제가 의미론적으로 일치하는 단어들끼리 모여있는지 알 수 있는 셈이다.

LDA 모델 분석

LDA는 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 이용하는 통계에 기반한 알고리즘이다. 단어에 기반하여 토픽을 구분하기 때문에 새로운 문서가 입력되어 있더라도 학습된 데이터 모델이 충분하다는 가정 하에 테스트 데이터 내에서도 준수한 성능을 보여주고 있다.