NLP

FastText, Topic Modeling

DHA 2023. 5. 9. 22:37

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) happyhapppy는 다른 단어.

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)하는 것을 말함. 

출처: https://ratsgo.github.io/from%20frequency %20to%20semantics/2017/04/06/pcasvdlsa/

이렇게 만든 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 : 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합확률로 추정하여 토픽을 추출함.

 

추가 참고 블로그:

https://sophuu.tistory.com/60

https://wikidocs.net/22883

 

https://wikidocs.net/30708