<딥 러닝을 이용한 자연어 처리 입문>을 읽고 간단하게 정리한 내용이다.
Topic modeling의 대표적인 예로, LSA와 LDA에 대해서 알아본다.
주어진 문제의 추상적인 주제를 발견하는 것이 Topic modeling의 목표이다.
# LSA (Latent Semantic Analysis)
LSA (LSI 라고 부르기도 한다.) 는 DTM의 잠재된 (latent) 의미를 이끌어내는 방법이다. (DTM에 관련된 내용은 여기에서 확인할 수 있다.) LSA에 대해서 이야기하기 전에, 먼저 SVD(Singular Value Decomposition)에 대해서 이야기해보겠다. SVD는 m×n 차원의 행렬 A 를 3개의 행렬 U, ∑, 로 분해하는 방법이다. 이 때, U, V 는 직교행렬이고, ∑ 는 직사각 대각행렬(주대각선의 값을 제외한 모든 값이 0인 행렬)이다.
SVD를 구성하는 ∑에서 상위 t 개만 남기고 나머지 벡터들을 모두 삭제하는 것을 Truncated SVD 라고 한다. Truncated SVD를 구성하게 되면, 원본 A 를 복구하지는 못한다. 우리가 사용하는 t가 우리가 구하고자 하는 topic의 수를 의미하게 된다. t가 너무 크면 A의 다양한 의미를 확인할 수 있지만, 계산 비용이 너무 크고, t가 너무 작으면 상대적으로 중요하지 않은 정보를 삭제하고 계산비용이 적을 수 있지만, 너무 일반적인 topic만 제공할 수 있다는 단점이 있다.
기존의 DTM, TF-TDF 등은 단어들의 의미를 고려하지 못한다는 단점이 있었다. 하지만, LSA에서는 기존에 구한 DTM, TF-IDF의 행렬에 대해서 truncated SVD를 수행하고, 수행한 결과에 대해서 단어들의 잠재의미를 끌어낼 수 있다. 쉽고 빠르게 구현할 수 있고, 기존의 방식들이 찾아내지 못한 단어들의 잠재적인 의미를 이끌어내서 유사도 등에서 성능을 낼 수 있다는 장점이 있지만, 새로운 문서가 추가되는 경우, 전체 연산을 처음부터 다시 수행해야 한다는 단점이 있다.
# LDA (Latent Dirichlet Allocation)
LDA는 topic modeling의 또 다른 기법으로, 문서 집합으로부터 어떤 topic이 존재하는지 알아내는 방법이다. LDA를 위해서는 크게 두 가지 가정을 한다. 첫 번째로는 문서들은 topic의 혼합으로 구성된다는 것이다. 전체적으로 몇 개의 topic을 볼지는 사용자가 정하게 된다. 두 번째 가정은 topic들은 확률 분포에 기반해서 단어를 생성한다는 것이다. 우리는 LDA를 통해서 최종적으로 각 문서의 topic 분포와 각 topic에 대한 단어 분포를 구할 수 있다. LDA의 입력으로는 BoW, DRM, TF-IDF 등의 빈도수 기반의 행렬을 받는다.
LDA는 문서를 구성할 때 다음과 같은 순서에 따라서 문서를 구성한다고 가정한다.
- 문서에서 사용한 단어의 개수 N을 정한다.
- 문서에 사용한 topic의 혼합을 확률분포에 기반해서 결정한다.
- 문서에서 사용할 단어를 선택한다.
- topic 분포에서 topic T 를 확률적으로 선택한다.
- topic T 에서 단어의 출현 확률분포에 기반해서 문서에 사용할 단어를 선택한다.
LDA는 이렇게 문서를 구성하는 과정을 역으로 추적하는 역공학(reverse engineering)이라고 할 수 있다. LDA를 수행하는 과정을 다음과 같다.
- Topic 수 K를 지정한다.
- 문서를 구성하는 모든 단어를 K 개의 topic 중 하나에 할당한다.
- 처음에는 모든 단어를 랜덤하게 할당한다.
- 최종적으로 topic은 단어의 분포를 갖게 된다.
- 어떤 문서의 단어 w는 잘못된 topic에 할당되어 있지만, 나머지 단어들은 올바르게 분류되었다고 가정한다.
- 해당 단어 w에 대해서 topic을 재할당 한다. 해당 단어가 특정 topic에 존재할 확률과, 문서에 특정 topic이 할당될 활률은 결합확률로 추정해서 topic을 추출한다.
- p(topic | document) : document의 단어 중 topic에 해당하는 단어들의 비율. 현재 문서에서 전체 단어들에 대한 topic의 비율
- p(word | topic) : 단어 w 를 가지고 있는 문서 중, topic t 가 할당된 비율. 전체 문서에서 단어 w들이 할당된 topic의 비율을 고려
'필기 노트 > 자연어 처리 입문' 카테고리의 다른 글
[자연어 처리 입문] 순환 신경망 (Recurrent Neural Network) (0) | 2021.01.07 |
---|---|
[자연어 처리 입문] 문서 유사도 (Document similarity) (0) | 2020.12.31 |
[자연어 처리 입문] Count-based word representation (BoW, DTM, TF-IDF) (0) | 2020.12.31 |
[자연어 처리 입문] 언어 모델 (Language Model) (1) | 2020.12.29 |
[자연어 처리 입문] 데이터 전처리 (text preprocessing) (0) | 2020.12.28 |
댓글