NLP/AI기술 자연어처리 전문가 양성 과정 3기_NLP

Day 36. Topic Modeling

이니니 2022. 6. 7. 23:43
Topic Modeling은 Text Mining 기법 중에서 가장 많이 활용되고 있습니다. Topic Modeling은 Unsupervised Learning 기반의 방법 중 하나로써, 말 그대로 여러 문서들에서 주제를 찾아내는데 사용하는 알고리즘 중 하나입니다. 아주 많은 문서의 주제들을 추출할 수 있고, 시간별로 이 방법을 적용하여 대중의 트렌드를 파악하는 등 다양하게 적용되고 있습니다. 

 

Topic Modeling

  • 비정형 데이터 (raw 정보에 가까운 데이터) : 이미지, 텍스트 등
  • 정형 데이터 : table 형태로 구성된 정보들 

 

이러한 text data들을 숫자로 나타내는 (전처리 하는) 방법을 Bag-of-Words 라고 한다.

(예시)

뉴스 기사 정보들을 100개 정도 모았다고 가정했을 때, 각각의 뉴스들은 하나의 document(data item)가 된다. 

이러한 뉴스 기사 중 unique한 단어(각각의 단어)들을 모아서 vocabulary(사전 : 이러한 document에서 구축됨) 를 정의한다.

그리고 unique한 키워드 하나하나에다가 dimension을 할당한다. ( ex. John은 1번 dimension, likes는 2번 dimension, ... )

그 후, 각각의 document를 dimension에 해당하는 단어 (몇 번 등장했는지의 값) 를 나타내는 것으로 씀

=> 쉽게 말해서, 전을 구축하고, 그 단어가 doc에 몇 번 등장했는지를 기록한 것을 bag-of-words vector라고 한다.

 

document 하나하나를 기다란 벡터로 나타냈고, 그 벡터들의 길이는 구축해 놓은 사전의 unique한 단어들의 총 갯수가 된다. document의 값들은 몇 번 등장했는지 count한 값이다.

 

위 그림처럼 2-dimension array로 나타낸 것을 Term-documnet matrix라고 한다. 이것은 텍스트를 처리하는 가장 첫 단계로써의 과정이다. 

그러나, 'I like Marry' 와 'Marry like I' 라는 문장은 순서 정보가 무시되기 때문에 같은 documnet로 취급이 된다. 이러한 부분이 단점이 될 수 있다.

Topic Modeling은 문서로부터 모형을 적합시켜 토픽을 찾아내는 과정으로 정의할 수 있다. 토픽모형을 활용함으로써 문서를 분류하는데 종종 활용된다. 특히, LDA(Latent Dirichlet Allocation) 모형이 가장 많이 활용되고 있다.

직관적으로, Topic Modeling을 돌렸을 때 얻게 되는 것은, 100개의 document를 Term-documnet matrix로 input을 만들어 놓고, Topic Modeling을 수행했을 때 나오게 되는 결과는 input으로 주어진 갯수의 군집으로 나오게 되고, 각각의 군집은 어떤 키워드들의 set 형태로 나타나게 된다. 그 각각의 군집은 어떤의미를 가지는 그룹인지 잘 드러나게 된다. 

 

앞에서 설명한 것은 위의 그림과 같다. Topic의 갯수를 4로 설정하고 TDM을 input으로 주었을 때,  Topic Modeling을 한 결과이며, 각각의 결과들은 그 군집의 주제를 잘 알 수 있게끔 드러난다. (Arts, Budgets, Children, Education은 자동으로 정해진 것이 아니라, 그 주제들을 우리가 직접 알기 쉽게 써놓은 것 뿐이다.)

Topic Modeling을 함으로써, 중요한 것은, 16000개의 document 들을 다 읽어보지 않고도, 알고리즘을 돌려서 자동으로 output을 내보내게 하는것이다. 

각각의 단어들이 어떤 군집에서 가장 많이 나왔는가에 따라 해당 군집이라고 분류를 할 수 있다.

키워드들의 군집, 그것을 기준으로 한 document들의 군집이 최종적인 Topic Modeling의 output이 된다. 

 

 

각각 할당한 것에 대한 Topic에 color를 입히고, 그 Topic에 해당하는 document들도 같은 색의 동그라미로 그린 시각화가 이루어지게 된다. 여기서 어떠한 세부 주제들이 주로 회자되는지 나온다. 

이렇게, 사람들이 documnet내에서 자주 이야기하는 주제들을 자동으로 추출해 내는 것이 Topic Modeling의 역할이다.

 

Topic은 결국, 어떤 가상의 bag-of-words의 vector(또는 documents)이다. 또한, 모든 값들은 0보다 크거나 같은 값이다( 가방에 마이너스 개수의 공을 넣을 수 없다.) 

한 개의 군집에서 나오는 각각의 값들을 ( ex. baseball : 2, mining : 4, science : 0 ..... ) 합을 1로 normalize한다고 가정하면, 이것은 확률분포로 생각할 수 있게 된다. 이는 각각의 단어들이 나올 확률로 생각하면, 총 개수가 10개라고 할 때, baseball이 나올 확률은 20%, mining이 나올 확률은 40%, ... 등이 된다. 

이렇게 Topic이라는 것을 수학적으로 생각해보면, 키워드들이 존재하는 probability distribution이라고 생각할 수 있다. 그러나 꼭 probability distribution만이 아니라, topic은 이러한 가중치(각각의 단어들이 갖는 값)들을 갖는 가중평균으로 생각할 수 있다. 

Topic Modeling은  topic이라고 불리는 것(가상의 document)을, 몇 개 찾으라고 요구한 갯수만큼을 알아서 찾아주는 것이다. 

그렇다면, 이렇게 알아서 찾아주는 과정을 어떻게 해야할 것인가?

잘찾은것과 못찾은것의 구분은 어떻게 되는가? 에 대한 질문은 topic modeling을 할 때의 기본적인 방향성이 된다. 

 

만약, topic을 3개만 뽑고, 100개의 document들로 사전(vocab)을 구축해보았더니, 마지막 줄처럼 결과가 나왔다.

각각의 topic은 각각의 단어들에 해당하는 가중치가 존재하게 된다.

그렇다면, 이 topic들을 어떻게 뽑아야 잘뽑았다고 할 수 있는가?

 

 

우리가 뽑아놓은 가상의 document들을 가지고, 우리가 갖고 있는 100개의 document들의 선형결합으로 나타내는 것이다. 

예를 들면, 다음과 같다.

이 선형결합이 가장 근접하게 나타날 수 있는 두 개의 ?(가중치)를 찾아야 한다. 

첫 번째 ? 를 1로 하고, 두 번째 ? 는 고려하지 않았을 때, document 1과의 차이를 살펴보자. document 1의 원소들을 기준으로, 1은 맞게 맞추었지만, 3을 비교하자면, 모자라게 맞추었고, 2를 비교하자면 숫자가 넘게 맞추었다. 

이런식으로, 선형 결합을 통해 값을 가장 근접하게 나타내되, 발생하는 error를 최소화하는 방향으로 선형 결합에 쓰이는 가중치(?)를 구해볼 수 있다. 

이렇게 최적화 시키는 방법이 topic modeling에서 해야할 일이다. 

 

선형 결합의 계수를 각각 a, b라고 할 때, 

위와 같은 과정을 통해 최적의 가중치를 찾아야 한다. 

 

하지만, 현재 각각의 topic들의 vector도 정해지지 않은 상태이므로 이들도 전부 변수로 지정해야한다. 

위 과정과 반대로, 가중치들이 정해져있다면, topic들의 vector를 찾을 수 있을 것이다. 

이렇게 Topic이라는 것을 keyword들의 가중평균으로 생각할 수 있고, Document는 topic들의 가중평균이라고 생각할 수 있다. 이 두가지가 output으로 등장하게 된다. 


Topic Modeling Algorithm

앞에서 보았던 term-document matrix를 input으로 하자. 또한, topic의 갯수가 2라고 가정해보자. 

document 1은 앞에서 했던것과 같이 2개의 topic과의 선형결합으로 나타낼 수 있다.

하지만, 이렇게 나온 값은 실제 documnet 1의 값과 오차가 발생한다. 그렇다면, 이렇게 선형결합으로 계산하는 것이 옳은 것일까?

위와 같은 방법으로 error를 구한다. error는 (+)와 (-)로 되어있기 때문에, 제곱의 합으로 error를 표현하고, 이를 최대한 줄이는 방향으로 가중치를 설정한다.

식으로 표현하면 위와 같고, 제곱의 합의 행렬 놈을 Frobenius norm 이라고 한다. error를 최소화하기위해 W와 H라는 matrix를 조절해가며 최소화시킨다. (조건 : W, H가 0보다 크거나 같다.) 

arg는 error를 minimize하도록 한 인자인 W, H를 뜻한다. 


NLP 2. Topic Modeling.pdf
0.45MB

'NLP > AI기술 자연어처리 전문가 양성 과정 3기_NLP' 카테고리의 다른 글

Day 40. NLP Quiz 1  (0) 2022.06.11
Day 39. LSTM & GRU  (0) 2022.06.09
Day 38. RNN  (0) 2022.06.09
Day 37. Word Embedding  (0) 2022.06.08
Day35. NLP intro  (0) 2022.03.22