FastText, Topic Modeling
1.FastText
1)개념
워드 임베딩의 방법 중 하나로 페이스북에서 개발, Word2Vec 이후에 나옴.
Word2Vec는 단어를 쪼개질 수 없는 단위, FastText는 하나의 단어에도 여러 단어들이 존재하는 것으로 간주
2)FastText 원리
-Subword 학습
-FastText에서 각 단어는 글자 단위 n-gram의 구성으로 취급.
Ex) n = 3인 경우 apple을 app, ppl, ple로 분리하고 벡터화시작과 끝을 더하고, 특별토큰 <apple>을 추가하여 6가지로 변환<ap, app, ppl, ple, le>, <apple>
n이 3~6인 모든 경우에 대해 벡터화(최댓값, 최솟값은 임의 설정가능)단어 happy의 벡터값은 모든 벡터 값의 총 합
*한국어 case글자 단위는 영어와 유사. "안녕하세요" -> "<안녕", "안녕하", "녕하세" ... "하세요", "세요>"
자모 단위는 초성, 중성, 종성 단위로 임베딩하는 방법. "안녕하세요" -> "<ㅇㅏ", "ㅇㅏㄴ", ... "ㅇㅛ>"
3)FastText 장점
-모르는 단어(Out Of Vocabulary, OOV)에 대한 대응
내부단어를 통해 유사도를 계산할 수 있다.
Ex) birth와 day라는 내부 단어에 대한 학습이 되었을 때 birthday에 대한 벡터를 얻을 수 있다.
(Word2Vec는 불가능함)
-단어 집합 내 빈도 수가 적었던 단어(Rare Word)에 대한 대응
Word2Vec은 등장 빈도수가 적은 단어에 대해서는 임베딩의 정확도가 떨어진다는 단점이 있음.
Ex) happy와happpy는 다른 단어.
FastText는 그 단어의 n-gram이 다른 단어의 n-gram과 겹치는 경우라면, 유사도를 계산해서 임베딩 성능 계산이 가능.
# happy, n = 3 <ha, hap, app, ppy, py>, <happy>
# happpy, n = 3 <ha, hap, app, ppp, ppy, py>, <happpy>
노이즈가 많은 코퍼스에서 강점(오타에서도 일정 수준이상의 성능을 보임)
2.Topic Modeling
1)개념
-기계 학습 및 자연어 처리 분야에서 토픽이라는 문서 집합의 추상적인 주제를 발견하기 위한 통계적 모델.
-집합에 숨어 있는 '주제'를 찾아내는 텍스트 마이닝기법.
2)대표적 기법
-잠재 의미 분석(Latent Semantic Analysis, LSA)
-잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)
3)LSA
SVD를 활용하여 문서에 숨어있는 의미를 이끌어내기 위한 방법
SVD란 A가 m × n 행렬일 때, 다음과 같이 3개의 행렬의 곱으로 분해(decomposition)하는 것을 말함.
이렇게 만든 Ak에는 중요한 토픽만 남게 됩니다. A 행렬의 크기도 m x n이고, Ak 행렬의 크기도 m x n으로 동일하지만, A 행렬에는 불필요한 토픽이 많이 포함되어 있고, Ak 행렬에는 불필요한 토픽은 제거된 상태, 즉 문서의 잠재 의미(주요 주제, 중요 단어)만 남아 있는 상태입니다.
결론적으로
LSA는 기본적으로 DTM이나 TF-IDF 행렬에 절단된 SVD(truncated SVD)를 사용하여 차원을 축소시키고, 단어들의 잠재적인 의미를 끌어낸다는 아이디어를 갖고 있음.
-장단점
장점: 쉽고 빠르게 구현이 가능할 뿐만 아니라 단어의 잠재적인 의미를 이끌어낼 수 있어 문서의 유사도 계산 등에서 좋은 성능을 보여줌.
단점: 새로운 정보에 대해 업데이트가 어려움(SVD의 특성상 새롭게 내용을 추가하려면 다시 계산해야함)
4)LDA
문서의 집합으로부터 어떤 토픽이 존재하는지를 알아내기 위한 알고리즘
-LDA의 개념적 접근
문서 작성의 가정
1) 문서에 사용할 단어의 개수 N을 정합니다. - Ex) 5개의 단어를 정하였습니다.
2) 문서에 사용할 토픽의 혼합을 확률 분포에 기반하여 결정합니다.
3) 문서에 사용할 각 단어를 정합니다.
3-1) 토픽 분포에서 토픽 T를 확률적으로 고릅니다.
3-2) 선택한 토픽 T에서 단어의 출현 확률 분포에 기반해 문서에 사용할 단어를 고릅니다.
이러한 문서 작성의 과정을 역으로 추정하는 역공학적 기법이 LDA이다.
-LDA 수행 과정
1) 사용자는 알고리즘에게 토픽의 개수 k를 알려줍니다.
2) 모든 단어를 k개 중 하나의 토픽에 할당합니다.
3) 이제 모든 문서의 모든 단어에 대해서 아래의 사항을 반복 진행합니다. (iterative)
3-1) 어떤 문서의 각 단어 w는 자신은 잘못된 토픽에 할당되어져 있지만, 다른 단어들은 전부 올바른 토픽에 할당되어져 있는 상태라고 가정합니다. 이에 따라 단어 w는 아래의 두 가지 기준에 따라서 토픽이 재할당됩니다.'
- p(topic t | document d) : 문서 d의 단어들 중 토픽 t에 해당하는 단어들의 비율
- p(word w | topic t) : 각 토픽들 t에서 해당 단어 w의 분포
-LDA와 LSA의 차이
LSA : DTM을 차원 축소 하여 축소 차원에서 근접 단어들을 토픽으로 묶음.
LDA : 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합확률로 추정하여 토픽을 추출함.
추가 참고 블로그: