Generative AI/Language Model

[NLP] LDA(Latent Dirichlet Allocation)

데이터 세상 2021. 3. 12. 18:18
728x90
반응형

LDA(Latent Dirichlet Allocation)

  • 추출한 문서에 담긴 단어들의 주제(토픽)을 추출하는 ‘토픽모델링’ 기법 중 하나
  • 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합확률로 추정하여 토픽을 추출

 

토픽 모델링

각 단어나 문서들의 집합에 대해 숨겨진 주제를 찾아내어 문서나 키워드별로 주제끼리 묶어주는 비지도학습 알고리즘

 

LDA는 문서가 있고, 그 안에 단어가 있다면 확률분포 중 하나인 디리클레의 분포를 가정하고,

번호가 매겨진 토픽 안에 문서와 단어들을 하나씩 넣어보며 잠재적인 의미(토픽)을 찾아주는 과정


LDA 문서생성 및 토픽 산출 과정

  • α, β, K : 디리클레 분포 하이퍼 파라미터 값
    • α: 문서들의 토픽 분포를 얼마나 밀집되게 할 것인지에 대한 설정 값
    • β: 문서 내 단어들의 토픽 분포를 얼마나 밀집되게 할 것인지에 대한 설정 값
    • K: 토픽을 몇개로 설정할 것인지에 대한 설정 값
  • M: 문서 개수
  • N: 문서에 속한 단어의 갯수
  • θ: 문서의 토픽 디리클레 분포
  • φ: 주제의 단어
  • Z: 해당 단어가 속한 토픽의 번호
  • W : 실제 관측 가능한 값

 

의미 있는 인사이트를 얻기 위한 활동

추론된 주제들로 분류된 문서들과 단어들의 맥락을 살핀 후

  • 모델의 하이퍼파라미터 조절
  • 단어들을 대치
  • 해석 불용이한 문서들의 키워드를 찾아내어 제거
  • 사용자 사전을 조정하여 추출되는 단어들을 조정

 

LDA 모델 평가

Perplexity

특정 확률 모델이 실제로 관측되는 값을 얼마나 잘 예측하는지를 평가할때 사용

H(p): p의 정보 엔트로피

 

 

토픽 모델링에서 적용 식

LL(w): 로그 가능도

토픽 모델 내에서 특정 단어가 해당 주제로 부여될 확률값에 로그를 취한 값

N: 전체 단어의 개수

  Perplexity Topic Coherence
의미 확률 모델이 결과를 얼마나 정확하게 예측하는지
낮을수록 정확하게 예측
토픽이 얼마나 의미론적으로 일관성 있는지
높을수록 의미론적 일관성 높음
주용도 토픽 모델링 기법이 얼마나 빠르게 수렴하는지 확인할 때
확률 모델이 다른 모델에 비해 얼마나 개선되었는지 평가할 때
동일 모델 내 파라미터에 따른 성능 평가할 때 주로 사용
해당 모델이 얼마나 실제로 의미있는 결과를 내는지 확인하기 위해 사용
한계 Perplexity가 낮다고 해서, 결과가 해석 용이하다는 의미가 아님 평가를 진행하기 위해 다른 외부 데이터(코퍼스, 시소러스 등)가 필요
특정 coherence가 너무 높아지면 정보의 양이 줄어들게 되고, coherence가 너무 낮아 정보들이 일관성이 없다면, 분석의 의미가 낮아지게 됨

 

  • 의미 의미확률 모델이 결과를 얼마나 정확하게 예측하는지.낮을수록 정확하게 예측.
  • 토픽 모델링 기법이 얼마나 빠르게 수렴하는지 확인할 때,
  • 확률 모델이 다른 모델에 비해 얼마나 개선되었는지 평가할 때,
  • 동일 모델 내 파라미터에 따른 성능 평가할 때 주로 사용
  • 한계 Perplexity가 낮다고 해서, 결과가 해석 용이하다는 의미가 아님

 

Coherence

  • 토픽이 얼마나 의미론적으로 일관성 있는지.
  • 높을수록 의미론적 일관성 높음
  • 해당 모델이 얼마나 실제로 의미있는 결과를 내는지 확인하기 위해 사용
  • 평가를 진행하기 위해 다른 외부 데이터(코퍼스, 시소러스 등)가 필요

특정 coherence가 너무 높아지면 정보의 양이 줄어들게 되고, coherence가 너무 낮아 정보들이 일관성이 없다면, 분석의 의미가 낮아지게 됨

Topic Coherence: Topic Coherence measures score a single topic by measuring the degree of semantic similarity between high scoring words in the topic

  • C_v measure is based on a sliding window, one-set segmentation of the top words and an indirect confirmation measure that uses normalized pointwise mutual information (NPMI) and the cosine similarity
    • 0~1사이. 
  • C_p is based on a sliding window, one-preceding segmentation of the top words and the confirmation measure of Fitelson’s coherence
  • C_uci measure is based on a sliding window and the pointwise mutual information (PMI) of all word pairs of the given top words
  • C_umass is based on document cooccurrence counts, a one-preceding segmentation and a logarithmic conditional probability as confirmation measure
    • 0에 가까울수록 완벽한 일관성을 가진다는 의미
  • C_npmi is an enhanced version of the C_uci coherence using the normalized pointwise mutual information (NPMI)
  • C_a is baseed on a context window, a pairwise comparison of the top words and an indirect confirmation measure that uses normalized pointwise mutual information (NPMI) and the cosine similarity

 

LDA Model 적용

[NLP/NLP 기초] - Gensim 을 활용해서 사용 가능

gensim.models.ldamodel.LdaModel()

  • corpus (iterable of iterable of (int, int), optional): BoW 형식의 텍스트 모음
  • num_topics (int, optional): Number of Topics
  • passes (int, optional): Number of passes through the corpus during training.
  • chunksize (int, optional): Number of documents to be used in each training chunk.
  • alpha ({numpy.ndarray, str}, optional): Alpha parameter of LDA
  • id2word (Dictionary, optional): 토큰 ID와 코퍼스에서 단어 사이의 매핑, 지정되지 않은 경우 -에서 유추
  • optimize_interval (int, optional): optimize_interval 반복 마다 하이퍼파라미터를 최적화
  • iterations (int, optional) :훈련 반복 횟수
  • topic_threshold (float, optional): 주제를 고려할 확률의 임계 값

 

LDAvis 로 토픽 모델 시각화

pyLDAvispip install

pip install pyLDAvis

pyLDAvis

pyLDAvis.enable_notebook()
vis = gensimvis.prepare(ldamodel, corpus, dictionary)
pyLDAvis.display(vis)
pyLDAvis.save_html(vis, LDA_FILENAME)
  • 토픽은 단어 개수의 차원을 가지고 있음->2 차원으로 압축하기 위해서는 차원 축소 방법 이용
  • LDAvis Principal Component Analysis (PCA)  이용하여 n_terms 차원의 벡터들을 2 차원으로 압축
  • 원의 크기 : 토픽의 단어들이 얼마나 속해 있고 어떻게 분포 되어있는지
  • 원의 거리 : 토픽 간의 유사성 (두 개의 원이 겹친다면 , 두 개의 토픽은 유사한 토픽이라는 의미)
  • 버블 중 하나로 커서를 이동하면 오른쪽의 단어와 막대가 업데이트
  • 토픽을 형성하는 주도적인 키워드 확인
  • λ =1 일수록
    • 토픽 별로 가장 자주 등장하는 단어들을 우선적으로 키워드로 선택한다는 의미 이고
  • λ = 0 일수록
    • 토픽 간에 차이가 많이 나는 단어를 선택한다는 의미(해당 토픽에서 많이 등장한 단어)

 

LDA Sample 코드 참고 사이트

 

LDA 모델링 검토 결과

  • Topic 개수를 최적화하기 위해 변경하거나 확인해야 할 인자 항목이 많음
  • 모델링의 인자 정보의 기준은 데이터의 특성에 따라 달라질 수 있으며 실험적으로 검증해야 함
  • LDA 모델링 시 단어 간 연관 정보 보다는 빈도수에 의존하게 되므로 의미를 유추한 토픽 추출은 다른 모델링 기법과 통합하여 진행할 필요가 있음

 

References

728x90
반응형