[토픽 모델링] MG-LDA : 전역 주제와 지역 주제를 함께 추출하기

Posted by 적분 ∫2tdt=t²+c
2017.12.11 01:51 그냥 공부

앞서 수많은 토픽 모델들을 살펴보았습니다. (의도치 않게 토픽 모델링만 파게 되어버렸네요 다른 쪽도 관심이 많은데...) 문헌 집합에서 잠재적인 주제를 찾아준다는 요긴한 특성 때문에 토픽 모델링은 여러 곳에 활용할 수 있는데요, 리뷰 텍스트에서 핵심을 짚어내는 것도 그 중에 하나지요. 예를 들어 핸드폰에 관한 리뷰 텍스트를 모아서, 토픽 모델링을 실시한다면 핸드폰 리뷰에 단골로 등장하는 주제들인 디스플레이, 배터리, 발열, 그래픽 성능 등과 관련된 주제들이 나오겠죠. 그러면 특정 리뷰에 각각의 주제를 얼만큼 가지고 있는지 계량할 수 있고, 각 측면별로 리뷰를 요약한다던지, 점수를 매기는 작업 등등이 가능하게 됩니다. 하지만 이것은 토픽 모델러들의 이상이었고 현실은 조금 달랐습니다.

핸드폰 리뷰를 모아서 기존의 PLSA나 LDA 모델링을 실시하게 될 경우 디스플레이나 배터리와 같은 측면(Aspect)들을 기준으로 주제가 묶이기 보다는, 리뷰 전반에 나타나는 해당 핸드폰 기종에 관한 주제(갤럭시라던지 아이폰, LG V30 처럼..)를 잡아내는 경향이 많았던 것이죠. 의도했던 측면들을 뽑아내기 위해서는 기존의 모델을 개량할 필요가 있었는데요, 이를 위해 Ivan Titov는 Multi grain LDA 라는 개량된 모형을 제시했습니다. [각주:1] 이 모형은 전역적인 주제(Global Topic)지역적인 주제(Local Topic)를 동시에 잡아내는 모형입니다. 대게 전역적인 주제는 핸드폰 예시에서 핸드폰 기종에 관한 주제(각 문헌별로 통용되는 주제)가 되고, 지역적인 주제는 디스플레이, 배터리 등의 측면에 관한 주제(여러 문헌 내에서 공유되는 주제)가 됩니다.

이번 포스팅에서는 Ivan Titov의 논문을 바탕으로 MG-LDA의 구조를 살펴보겠습니다.


Multi Grain LDA 개요

multi grain는 알갱이의 크기가 여러 가지라는 의미입니다. 토픽 모델을 문헌에서 주제를 걸러내는 체라고 비유하면, 기존의 LDA는 하나의 체를 가지고 문헌 내 모든 어휘를 거르는 체계라고 할 수 있을 겁니다. 주제 개수 K를 조절함으로써 체를 성기게 하거나 곱게 할 수 있지만, 문헌 내 모든 어휘가 같은 체를 쓸 수 밖에 없습니다. Multi Grain LDA는 체를 여러 개 사용하는 LDA라고 생각할 수 있겠습니다. 한 문헌 내의 어휘들을 모두 같은 체로 거르는 것이 아니라 어떤 어휘는 성긴 체로 거르고, 어떤 어휘는 고운 체로 거르는 것이죠.


꽤나 거친 비유였습니다만 대략적인 감은 잡으셨을 것 같습니다. 그러면 리뷰를 분석하는 데에 LDA 모델이 의도대로 작동하지 않는 이유는 뭘까요? 보통 리뷰는 하나의 제품을 대상으로 쓰기 때문에 리뷰 문헌 내에서는 하나의 제품에 대한 이야기가 통용됩니다. 그리고 문헌별로 제품이 달라지기 때문에, 문헌을 기준으로 토픽 모델링을 실시하면 제품에 대한 이야기들이 주제로 뽑히게 됩니다. 그렇기에 문헌별로 LDA를 실시하면 묶여지는 주제는 주로 제품에 관한 것이 됩니다. 하지만 실제 리뷰 내에서는 어떤 단락은 배터리에 관한 이야기를 하고, 다른 단락은 디스플레이에 대한 이야기를 하는 식으로 단락이나 문장별로 주제가 달라지죠. Bag of Words(단어의 순서를 고려하지 않고, 해당 문헌 내에 그 단어가 몇번 등장했는지만을 고려함) 를 바탕으로 하는 LDA는 단락이나 문장별로 주제가 바뀌는 것을 잡아내지 못하고, 뭉텅이로 분석을 진행하기 때문에 발생하는 한계입니다.


이를 해결하기 위해 MG-LDA에서는 문헌 단위로 모델링을 실시하는 전역 주제(Global Topic)과 n개의 문장을 단위로 모델링을 실시하는 지역 주제(Local Topic)를 도입했습니다. 즉 전역 주제로 리뷰 내에서 제품에 대한 주제를, 지역 주제로 해당 제품의 각 측면(Aspect)에 대한 요소를 뽑아내고자 한것이지요. 

지역 주제가 n개의 문장을 분석 단위로 하는 점은 흥미롭습니다. 단순히 문장을 단위로 할 경우 길이가 짧아서 분석이 진행되지가 않을것이고, 단어의 순서를 고려하고자 n-gram 기법을 사용할 경우 연산이 복잡해집니다. 이를 극복하기 위해 복잡한 기법을 도입하기보다 연속한 n개의 문장을 window로 설정하는 단순한 발상으로 문제를 해결했다는게 인상적이죠.



MG-LDA 구조

MG-LDA 모형의 구조를 살펴보면 위와 같습니다. LDA에 비해 뭔가 너무 많아서 괜히 어려워보이지만, 차근차근 살펴보면 하나도 어렵지 않고 자명합니다. (윗첨자로 G가 붙은것은 전역, L이 붙은것은 지역입니다.)


각각의 요소를 설명하자면, 

  • αG는 전역 주제 분포를 결정하는 디리클레 하이퍼 파라미터. θG는 해당 문헌의 전역 주제 분포
  • αL은 지역 주제 분포를 결정하는 디리클레 하이퍼 파라미터. θL는 해당 문헌, 해당 window의 지역 주제 분포
  • αM은 전역/지역 선택을 결정하는 베타 분포의 하이퍼 파라미터. π는 해당 문헌, 해당 window의 전역/지역 선택의 이항 분포
  • γ는 문장의 window 분포를 결정하는 디리클레 하이퍼 파라미터. ψ는 해당 문헌, 해당 문장의 window 분포

생성 모형은 다음과 같습니다.

* 먼저 LDA와 동일하게 Dir(β)에서 주제별 단어분포 φ를 뽑습니다. (이 때 이 분포는 전역 주제와 지역 주제를 모두 포함하고 있습니다.)

다음은 각각의 문헌을 생성하는 과정입니다.

  1. Dir(αG)에서 전역 주제 분포 θG를 뽑습니다.
  2. 각각의 문장별로, Dir(γ)에서 문장별 window 분포 ψ를 뽑습니다.

    부연설명

  3. 각각의 window별로, Dir(αL)에서 지역 주제 분포 θL를 뽑고, Dir(αM)에서 전역/지역 선택 분포 π를 뽑습니다.

  4. 이제 각각의 단어를 생성할 차례입니다.

    1. 해당 단어가 속한 문장의 ψ에서 이 단어가 속할 window를 뽑습니다. 이 window를 v라고 하겠습니다.
    2. v의 전역/지역 선택 분포인 π에서 이 단어가 전역 주제에 속할지, 지역 주제에 속할지 뽑습니다. 이를 r이라 하겠습니다.
    3. r이 전역일 경우, 문헌의 전역 주제인 θG에서 해당 단어의 주제 z를 뽑습니다.
    4. r이 지역일 경우, v의 지역 주제인 θL에서 해당 단어의 주제 z를 뽑습니다.
    5. 주제 z의 단어 분포 φ에서 단어를 뽑아 W라 하고 문헌에 추가합니다.


간략히 정리하자면, 전역 주제는 문헌별로 뽑고, 지역 주제는 window별로 뽑은뒤, 해당 문장의 단어가 어떤 window에 속할지 파악하고, 해당 단어가 전역 주제에서 온 것인지 지역 주제에서 온 것인지 골라 주제를 선택하여 단어를 뽑는 것이지요. 저자들이 논문에서 밝혔듯이, 이는 2개 이상의 주제 계층으로 확장할 수 있습니다. 위의 모형은 전역/지역 중에서 1개를 고르면 되므로, 베타 분포(αM)와 이항 분포(π)를 사용했지만, 3개 이상의 주제 계층 중에서 하나를 골라야 할 경우 디리클레 분포와 다항 분포로 분포를 확장하면 됩니다.


MG-LDA의 추론 과정

수식은 복잡하므로 논문을 참조하시길... 이 역시 깁스 샘플링으로 풀어서 파라미터 추정이 가능합니다.


MG-LDA의 결과

MG-LDA의 파이썬 구현 코드는 https://github.com/bramrodenburg/nlp2015 에서 찾아보실 수 있습니다. (직접 구현해보고 돌려보면 좋겠지만 시간적 여백이 부족하여 논문에 있는 결과를 그대로 가져와보았습니다.)

위 표는 Google Product Search에서 MP3에 관한 리뷰를 모아서 분석한 것이라고 합니다. 지역 주제는 10개, 전역 주제는 30개로 설정하고 MG-LDA를 실시하였습니다. 위 표에서 볼 수 있다시피 지역 주제에서는 제품의 측면에 관한 요소들이 잡혔고, 전역 주제에서는 문헌 전반에 통용되는 제품이나 기업에 관한 주제가 뽑힌 것을 확인할 수 있습니다. 지역 주제와 전역 주제의 개수를 설정할때는 지역 주제보다 전역 주제가 2배 이상 많은 것이 좋다고 합니다. 그래야만 지역 주제를 뽑는 과정에서 병목이 발생하고 여러 문헌에서 잡히는 지역 주제들이 하나로 합쳐져서 성능이 잘 나온다고 하네요.


위 표는 TripAdvisor에서 호텔 리뷰를 수집하여, 리뷰 텍스트가 리뷰 점수를 얼마나 잘 예측하는 지를 바탕으로 성능 평가를 실시한 것입니다. 총 7개의 척도가 있고, 각각 척도의 점수를 PRanking 알고리즘을 이용해서 학습하고 예측 오차를 비교한 것입니다. MG-LDA의 결과를 자질로 사용했을 때가 LDA를 사용했을 때보다 더 낮은 오차를 보이는 것을 확인할 수 있습니다. 이를 통해 해당 모형이 Multi-Aspect 예측에 있어서도 좋은 성능을 가진다는 것을 알 수 있습니다. (그리고 실제로 Ivan Titov는 이 모형을 확장해 예측과 요약에 사용할 수 있는 모형을 제시하기도 했습니다.[각주:2])



다른 모형과의 비교

주제에 여러 계층이 있다는 점에서 보면 hierarchical LDA와 비슷해보이기도 합니다만 둘이 아예 다른 모형이라고 할 수 있습니다. hLDA는 모든 주제의 분석 단위를 문헌으로 설정하되, 한 주제 안에 다른 주제가 포함될 수 있게 Tree 형태로 주제를 설정한 반면, MG-LDA는 주제 계층에 따라 분석 단위가 문헌 / n개의 문장으로 나뉘고, 전역 주제와 지역 주제는 포함관계가 아니라 독립적인 관계입니다.

또한 토픽 모델링을 통해 Aspect를 추출하고자 했다는 점에 있어서, Joint Sentiment Topic 모형이나 Topic Sentiment Mixture 모형과 비슷한 목적을 가지고 있습니다. JST 모형은 Sentiment와 Topic을 직교하도록 설정하였다는 점에서 이 모형과 유사하나, MG-LDA는 한 단어가 전역과 지역 양쪽에 동시에는 속하지 못하기에, 다차원적인 JST와는 달리 1차원적이어서 접근 방법에 차이가 있죠.

  1. Titov, I., & McDonald, R. (2008, April). Modeling online reviews with multi-grain topic models. In Proceedings of the 17th international conference on World Wide Web (pp. 111-120). ACM. [본문으로]
  2. Titov, I., & McDonald, R. T. (2008, June). A Joint Model of Text and Aspect Ratings for Sentiment Summarization. In ACL (Vol. 8, pp. 308-316). [본문으로]
이 댓글을 비밀 댓글로