본문 바로가기
AI

자연어 처리 : Topic Modeling : 잠재의미분석 (LSA)

by 월곡동로봇팔 2020. 3. 12.

배경

Pizza vs Hamburger 를 비교해보자. Back of Words 로 비교해보면, 이 둘은 관계가 없다.

TD-IDF 로 비교해보면, 같은 단어가 없기 때문에 이 둘도 서로 유사도가 없다.

하지만, 이 둘은 food라는 topic으로 모일 수 있고, 단어 기반의 vector이기 때문이다!!, Topic 기반이 아니기 때문이다.

 

LSA는 Topic 기반으로 한다.

 

이를 위한 대안으로 DTM의 잠재된(Latent) 의미를 이끌어내는 방법으로 잠재 의미 분석(Latent Semantic Analysis, LSA)이라는 방법이 있다.


1. SVD (Singular Value Decomposition)

2020/03/06 - [machine_learning/natural language] - 자연어 처리 : SVD 정리

 

자연어 처리 : SVD 정리

선형대수학에서 실제로 SVD하는 과정은 꼭 익혀보길 바란다. 공돌이의 수학노트에서 원형에서 타원형으로 했을 때, x,y가 Ax,Ay로 변할 때 수직인 부분만 관찰한 것을 기억하자. https://www.youtube.com/watch?v..

mambo-coding-note.tistory.com

SVD의 정리는 위에 글에서 자세히 다루었으니 나중에 보도록 하자.

(1) 단어 x 문장 matrix 구성

단어 x 문장 matrix

Column에 문장을 넣어서 matrix로 구성한다. 이를 Topic 기준으로 SVD로 분해한다.

(2) Topic 기준으로 SVD 분해

Topic 기준으로 singular vector decompostition을 했을 때 결과이다.

SVD는 A의 성분을 u와 v로 나눈 것이며, u,v로 나눈 기준은 topic을 기준으로 나누었다.

 

U는 topic을 위한 word들의 matrix이다. 실제로 살펴보면 t1 topic에 대해 word들의 기여도를 보여준다.

 

T는 topic 을 위한 document 들의 matrix이다. t1에 대해 document들의 기여도를 보여준다

 

시그마는 topic t1~t6까지 이 들이 scaling vector로써 각 U,V의 직교벡터들의 정보량을 말한다.

U의 직교벡터는 topic에 대해 얼마나 많은 word를 기여하는지,

V의 직교벡터는 topic에 대해 얼마나 많은 문서가 기여하는지, 기여도에 대해 판단이 가능하다.

 

이를 가운데서 시그마 행렬이 scaling vector로 여러 topic에 대해 U,V의 직교벡터들의 기여도의 정보량을 표현한다.

따라서 Topic Strength 라고 표현이 가능하다.


2. Truncted SVD = dimension decrease

LSA Document vectors in 2 dimension

여기서 우리는 우리가 필요한 topic의 갯수만큼 남기고 나머지를 자른다. 이를 Truncted SVD라고 한다.

절단된 SVD를 수행하면 값의 손실이 일어나므로, 기존 행렬 A를 복구할 수 없다. 

 

여기서 topic의 갯수를 크게 정한다면, 다양한 의미를 발생시키지만 이는 noise를 많이 발생시킨다. 

따라서 topic을 줄여서 dimension을 줄인다면 그만큼 scaling vector가 낮은, 즉 설명력이 낮은 정보를 삭제하고

noise를 줄여 설명력을 높이는 정보를 남긴다는 것을 의미한다.

 

즉, 다시 말하면 기존의 행렬에서는 드러나지 않았던 심층적인 의미를 확인할 수 있게 해줍니다.


3. Topic Similarity

Topic Similarity

t1은 American Food, t2는 Japenese Food 이다.

t1, t2를 x,y 축으로 잡고 의미가 같은 것으로 묶어본다고 가정해보면,

이는 SVD로 분해를 하고 심층적인 의미를 cosine similarity로 판단해야한다. 

 

실제로 cosine을 이용하여 해보면, 이는 t1, t2에 나눠서 편중되어 보이게 된다.

 


결론

LSA 방법은 앞에서 back of words -> TD-IDF -> SVD -> cosine or euclide로 similarity 쓰면서, TD-IDF에서는 보여주지 못하는 의미론적 해석을 SVD를 통해서 한다.

 

장단점

장점

  • 구현이 빨라서, 빠르게 계산할 때 용이하다.
  • 문서의 유사도 계산에서 좋은 성능을 보여줌.

단점

  • 새로운 data가 추가될 때 마다, 다시 table을 정리해야함.
  • 단어의 의미를 벡터화 할 수 있는 RNN, Word Embedding 기법이 각광받는다.

댓글