주제 분석(Topic Analysis)

wandajeong·2022년 12월 16일
0

NLP/Text Data Analysis

목록 보기
2/12
post-thumbnail

주제 분석의 방법 중 행렬 분해에 의한 방법과 확률 분포에 의한 방법이 있다. 그 중 행렬 분해애 의한 방법은 크게 LSA(Latent Semantic Analysis)와 NMF(Non-Negative Factorization)로 나눌 수 있다.

LSA는 잠재 의미를 분석한다는 뜻으로 단어 문서 행렬을 여러 행렬의 곱으로 분해해서 잠재 의미를 추출하는 방식이다. 즉 단어 문서 행렬 XXZWZW의 형태로 분해해서 표현한다. ZZ는 말하자면 주제, WW는 가중치이다. 보통 ZZXX보다 차원이 축소된 형태이다. ( X:mn,Z:mk,W:knX : m*n, Z : m*k, W: k*n)
LSA에서 행렬을 분해하는 방식은 다양하나 그 중 SVD(Singular Value Decomposition)가 대표적이다. SVD는 mnm*n 크기의 단어 문서 행렬 M을 UVTU\sum V^T형태의 행렬의 곱으로 분해한다. TruncatedSVD 방식은 SVD에서 U,U, \sum, VTV^T에서 k개의 행 또는 열만 남기고 분해하는 방식이다.
LSA는 계산이 비교적 단순하나 주제의 해석이 어렵고 차원의 수를 정하기 어렵다는 특징이 있다.

MNF는 한 행렬 XX를 두 행렬 ZZWW의 곱으로 나타내는 것은 LSA와 동일하나, ZZWW값은 모두 음수가 아니어야 한다는 특징이 있다. 단어 문서 행렬을 NMF할 경우 ZZ는 각 문서의 주제, WW는 주제별 단어 빈도로 해석한다. LSA와 비슷하지만 해석이 좀 더 쉬운 편이다.

주제 분석의 방법 중 확률 분포에 의한 주제 분석 방법이 LDA(Latent Dirichlet Allocation)이다. LDA에서 각 문서는 여러 주제의 혼합된 분포로 구성되어 있으며, 또 각 주제는 여러 단어들의 확률 분포로 구성되어 있다. 단어가 특정 주제에 존재할 확률과 문서에 특정 주제가 존재할 확률을 결합하여 주제를 추출한다. 각 문서의 주제별 확률과 각 주제의 단어별 확률은 디리클레 분포를 따른다. 문서에서는 특정 주제만 확률이 높아야 해석이 쉽다. 마찬가지로 각 주제에서 특정 단어만 확률이 높아야 해석이 쉽다.

LDA는 SVD나 NMF 등 행렬 분해에 의한 방법과 마찬가지로 문서 집합 내의 주제들을 발견하기 위해 사용하는 방법론이다. SVD,NMF 방식은 DTM을 차원축소해서 여러 행렬의 곱으로 분해해서 잠재 의미를 추출하는 방식이라는 점에서 LDA 방식과 차이가 있다.

행렬 분해 방법

  • LSA (Latent Semantic Analysis) - 잠재 의미 분석
    • 단어 문서 행렬 X를 ZW의 형태로 분해해서 표현(Z는 주제, W는 가중치)

    • SVD(Singular Value Decompostion) - 행렬 분해 방법 중 하나

      M=M=UVTU\sum V^T

      *LSA는 계산이 비교적 단순하나 주제의 해석이 어렵고 차원의 수를 정하기 어렵다

  • NMF(Non-Negative Factorization)
    • MNF는 한 행렬 X를 두 행렬 Z와 W의 곱으로 나타내는 것은 LSA와 동일하나, Z와 W값은 모두 음수가 아니어야 한다. (Z는 주제, W는 주제별 단어빈도)

    • LSA와 비슷하지만 해석이 좀 더 쉬운 편

      cv = TfidfVectorizer()
      x = cv.fit_transform(df.abstract)  # (3920, 2000) - (문서, 단어) 
      
      svd = TruncatedSVD(n_components=100)
      svd.fit(x) 
      # -> svd.componets_  (100, 2000) - (주제, 단어) : 주제-단어간 연관성을 볼 수 있다. 
      svd.transform(x)   # (3920,100) - (문서, 주제) 

확률 분포 방법

  • LDA(Latent Dirichlet Allocation)

    • 각 문서는 여러 주제의 혼합된 분포로 구성되어 있으며, 또 각 주제는 여러 단어들의 확률 분포로 구성되어 있다.
    • 단어가 특정 주제에 존재할 확률과 문서에 특정 주제가 존재할 확률을 결합하여 주제를 추출한다.
    • 각 문서의 주제별 확률과 각 주제의 단어별 확률은 디리클레 분포를 따른다.
    • 문서에서는 특정 주제만 확률이 높아야 해석이 쉽다. 마찬가지로 각 주제에서 특정 단어만 확률이 높아야 해석이 쉽다.
  • LDA 분석 절차

    • LDA 모델 성능 추정을 위해 단어 자루를 train set과 valid set으로 분할
    • LDA 모델 생성 (num_topics=10~20)
    • LDA 모델 성능 개선을 고려하여 학습 반복
      • 성능 평가 지표 : log_perplexity
      • 현재 loss가 과거 loss보다 더 이상 줄어들지 않으면 학습 중단
  • LDA 관련 지표

    • 현저성

    • 쿨백-라이블러 발산(Kullback-Leibler Divergence) : 두 확률 분포의 차이를 나타내는 지표

      DKL(PQ)=xP(x)logP(x)Q(x)=H(P,Q)H(P)D_{KL}(P||Q) = \sum_{x} P(x)\log\frac{P(x)}{Q(x)} = H(P,Q) - H(P)

      KLD는 P와 Q의 교차 엔트로피에서 P의 엔트로피를 뺀 것과 같음

    • 관련성

  • LDA 평가

    • Perplexity (혼란, 복잡..) : 2H2^H로 계산. H는 교차 엔트로피
      • 교차 엔트로피 = - 로그 우도 ( =조건부 확률)
      • 평가지표로서 perplexity의 문제점 : 복잡한 모형을 선호, 사람의 판단과 반대..
        → 주제 응집도, 다양도 등 여러 보완적 지표 개발됨
    • 주제 응집도
      • PMI(Pointwise Mutual Information)
        P(x)P(x) : 문서에 단어 x가 나올 확률,
        P(x,y)P(x,y) : 문서에 단어 x와 y가 함께 나올 확률

        PMI(x,y)=logp(x,y)p(x)p(y)PMI(x, y) = log\frac{p(x,y)}{p(x)p(y)}

      • CUCIC_{UCI} : 주제를 이루는 단어들의 평균 PMI, 주로 상위 몇 개의 단어들로 계산
      • CUMass,CNPMI,CvC_{UMass}, C_{NPMI}, C_v
    • 주제 다양도
profile
ML/DL swimmer

0개의 댓글