주제 분석의 방법 중 행렬 분해에 의한 방법과 확률 분포에 의한 방법이 있다. 그 중 행렬 분해애 의한 방법은 크게 LSA(Latent Semantic Analysis)와 NMF(Non-Negative Factorization)로 나눌 수 있다.
LSA는 잠재 의미를 분석한다는 뜻으로 단어 문서 행렬을 여러 행렬의 곱으로 분해해서 잠재 의미를 추출하는 방식이다. 즉 단어 문서 행렬 를 의 형태로 분해해서 표현한다. 는 말하자면 주제, 는 가중치이다. 보통 는 보다 차원이 축소된 형태이다. ( )
LSA에서 행렬을 분해하는 방식은 다양하나 그 중 SVD(Singular Value Decomposition)가 대표적이다. SVD는 크기의 단어 문서 행렬 M을 형태의 행렬의 곱으로 분해한다. TruncatedSVD 방식은 SVD에서 , 에서 k개의 행 또는 열만 남기고 분해하는 방식이다.
LSA는 계산이 비교적 단순하나 주제의 해석이 어렵고 차원의 수를 정하기 어렵다는 특징이 있다.
MNF는 한 행렬 를 두 행렬 와 의 곱으로 나타내는 것은 LSA와 동일하나, 와 값은 모두 음수가 아니어야 한다는 특징이 있다. 단어 문서 행렬을 NMF할 경우 는 각 문서의 주제, 는 주제별 단어 빈도로 해석한다. LSA와 비슷하지만 해석이 좀 더 쉬운 편이다.
주제 분석의 방법 중 확률 분포에 의한 주제 분석 방법이 LDA(Latent Dirichlet Allocation)이다. LDA에서 각 문서는 여러 주제의 혼합된 분포로 구성되어 있으며, 또 각 주제는 여러 단어들의 확률 분포로 구성되어 있다. 단어가 특정 주제에 존재할 확률과 문서에 특정 주제가 존재할 확률을 결합하여 주제를 추출한다. 각 문서의 주제별 확률과 각 주제의 단어별 확률은 디리클레 분포를 따른다. 문서에서는 특정 주제만 확률이 높아야 해석이 쉽다. 마찬가지로 각 주제에서 특정 단어만 확률이 높아야 해석이 쉽다.
LDA는 SVD나 NMF 등 행렬 분해에 의한 방법과 마찬가지로 문서 집합 내의 주제들을 발견하기 위해 사용하는 방법론이다. SVD,NMF 방식은 DTM을 차원축소해서 여러 행렬의 곱으로 분해해서 잠재 의미를 추출하는 방식이라는 점에서 LDA 방식과 차이가 있다.
행렬 분해 방법
단어 문서 행렬 X를 ZW의 형태로 분해해서 표현(Z는 주제, W는 가중치)
SVD(Singular Value Decompostion) - 행렬 분해 방법 중 하나
*LSA는 계산이 비교적 단순하나 주제의 해석이 어렵고 차원의 수를 정하기 어렵다
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 분석 절차
log_perplexity
LDA 관련 지표
현저성
쿨백-라이블러 발산(Kullback-Leibler Divergence) : 두 확률 분포의 차이를 나타내는 지표
KLD는 P와 Q의 교차 엔트로피에서 P의 엔트로피를 뺀 것과 같음
관련성
LDA 평가
PMI(Pointwise Mutual Information)
: 문서에 단어 x가 나올 확률,
: 문서에 단어 x와 y가 함께 나올 확률