이전 글([토픽 모델링] MG-LDA : 전역 주제와 지역 주제를 함께 추출하기)에서 MG-LDA 모델의 개념과 이론에 대해 전반적으로 살펴보았는데요, 본 게시물에서는 깁스 샘플링을 이용하여 MG-LDA 추론과정을 구현한 것을 가지고 실제 한국어 텍스트를 분석해보았습니다.
이전 글에서 모형에 대해서는 잘 설명해두었으니, 이번 글에서는 확률 식 및 깁스 샘플링 방법에 대해서 설명하도록 하겠습니다. 복습할 겸 MG-LDA의 문헌 생성 과정을 다시 짚어보자면 1
* 주제별 단어 분포 뽑기 과정
* 문헌 내의 단어 생성 과정(전체 문장 수를 S개라고 할 때)
결합 확률을 따져봅시다. 여기서 나오는 확률을 모두 나열해보자면, 해당 단어가 특정 어휘일 확률 P(W), 해당 단어가 특정 주제일 확률 P(Z), 해당 단어가 전역/지역일 확률 P(R), 해당 단어가 특정 윈도우에 속할 확률 P(V)이 되겠습니다. 총 4가지의 결합확률 P(W, V, R, Z)를 구해야하는데, 이 4가지 요소들은 서로 얽혀있기에 어떤 요소가 다른 요소에 영향을 미치는지를 생각하며 확률을 전개해야겠습니다.
먼저 P(W)는 특정 어휘가 뽑힐 확률인데, 이 뽑히는 어휘는 해당 단어의 전역/지역 소속과 그 단어의 주제에 영향을 받으므로 P(W | R,Z)라고 쓸 수 있습니다. 그리고 P(R)은 해당 단어가 전역/지역 중 어디에 속하는가를 나타내는데, 이는 그 단어가 소속된 윈도우에 영향을 받으므로 P(R | V)라고 쓸 수 있겠죠. 그리고 P(Z)는 해당 단어가 특정 주제에 속할 확률인데, 이는 그 단어의 전역/지역 소속과 소속 윈도우에 영향을 받으므로 P(Z | R,V)라고 쓸 수 있습니다. 마지막으로 P(V)는 해당 단어가 특정 윈도우에 속할 확률인데 이는 다른 요소로부터 영향을 받지 않으므로 그냥 P(V)입니다.
따라서 P(W, V, R, Z) = P(V) * P(R | V) * P (Z | R,V) * P(W | R,Z) 가 됩니다. 이제 각 항을 전개해봅시다. 항별 전개는 LDA에서 했던것과 동일하게 디리클레 다항분포를 적분함으로써 얻을 수 있습니다.
따라서 깁스샘플링을 위한 확률식은 다음과 같이 되겠죠.
(n_r,z는 해당 소속 r 중 주제 z에 할당된 모든 단어 수, n_r,z,w는 해당 소속 r 중 주제 z에 할당된 어휘 w의 수,
n_d,s는 해당 문헌 d 중 문장 s에 속한 모든 단어 수, n_d,s,v는 해당 문헌 d의 문장 s에서 윈도우 v에 속한 단어 수,
n_d,v는 해당 문헌 d 중 윈도우 v에 속한 모든 단어 수, n_d,v,r은 해당 문헌 d의 윈도우 v에서 소속 r에 배정된 단어 수,
n_d,v,r은 해당 문헌 d 중 윈도우 v 중 소속 r에 속한 모든 단어 수, n_d,v,r,z,는 문헌 d의 윈도우 v의 소속 r에서 주제 z에 할당된 단어 수)
단 이때 마지막 항은 r = Global 인지 r = Local인지에 따라 달라집니다. r=Global일 경우, 이 주제는 윈도우와는 독립이므로 n_d,v,r => n_d,r이 되고, n_d,v,r,z => n_d,r,z가 됩니다.
실제 분석을 해보기 위해 쓸만한 자료를 뒤적거렸는데, 네이버 영화 리뷰(http://movie.naver.com/movie/board/review/list.nhn)가 나름 길이도 길고 문헌 수도 많아서 이를 사용해보기로 했습니다. 임의로 문장이 3개 미만인 리뷰는 버리고, 그 이상인 리뷰 5천건을 임의로 수집하여 (늘 그렇듯이) 형태소 분석 후, 불용어를 제거하였습니다. 문장 구분은 마침표, 물음표, 느낌표로 했고, 줄바꿈은 그냥 무시..! 파라미터는 K_G = 20, K_L = 10, T = 3, alpha_G = alpha_L = 0.1, alpha_MG = alpha_ML = 0.1, beta_G = beta_L = 0.01, gamma = 0.1로 두고 총 500번의 이터레이션을 거쳐서 모형 학습을 진행했습니다. 구현한 코드는 https://github.com/bab2min/tomotopy 에서 살펴보실 수 있습니다.
이 모형은 전역 주제와 지역 주제를 함께 쏟아냅니다. 논문대로라면 전역 주제에서는 문헌 전반에 통하는 특수한 주제들이 잡힐 것이고, 지역 주제에서는 여러 문헌의 단락 단락에서 등장하는 일반적인 주제들이 잡혀야겠죠. 영화리뷰이니, 전역 주제에는 특정 영화군에 대한 주제들이 나오고, 지역 주제에서는 영화 리뷰의 단락마다 등장하는, 스토리 평이나 연기, 영상미와 같은 주제가 나오면 좋겠네요! 과연 그렇게 나왔는지 실제 결과를 보시죠.
전역 주제
#3: 노래, 뮤지컬, 부르다, 안톤, 소녀, 교도소, 원스, 무대, 하모니, 공연, 음악, 합창단, 우연, ...
#10: 사랑, 그녀, 남자, 없다, 자신, 여자, 알다, 마음, 이야기, 시작, 모습, 만나다, ...
#13: 뱀파이어, 침묵, 수도원, 공포, 인간, 맥스, 괴물, 좀비, 데이브, 메리, 세상, 시간, 감독, 혈액, ...
#16: 영웅, 아이언맨, 토니, 히어로, 만들다, 애니메이션, 개구리, 스타크, 디즈니, 무기, 스파이더맨, ...
#17: 한국, 일본, 문제, 국가, 정치, 우리나라, 국민, 나라, 쉽다, 실제, 지역, ...
...
큼지막한 주제들이 뽑혀나왔습니다. 대충 보면 전역 주제를 보고 어떤 영화인지도 맞출수 있을것 같네요. (한 번 맞춰들 보시라고 주제에 라벨링을 달지는 않았습니다.)
지역 주제
#0: 장면, 이야기, 마지막, 만들다, 내용, 대사, 생각, 원작, 소설, ...
#1: 사람, 없다, 생각, 알다, 모르다, 같다, 먹다, 시간, 들다, ...
#3: 감독, 작품, 출연, 개봉, 배우, 만들다, 미국, 제작, 원작, 연출, ...
#5: 이야기, 관객, 장면, 결말, 주인공, 생각, 만들다, 스토리, ...
#6: 생각, 없다, 내용, 조금, 스토리, 너무, 느낌, 아쉽다, 좋다, 재미있다, 지루, ...
#8: 연기, 배우, 정말, 좋다, 멋지다, 역할, 귀엽다, 캐릭터, 어울리다, ...
#9: 생각, 나다, 좋다, 정말, 기억, 마음, 장면, 눈물, 감동, 많다, 기분, ...
반면 지역 주제는 전역주제와는 달리 특정 영화에 대한 이야기보다는 영화 리뷰에 나오는 주요 항목들을 묶어놓은 느낌입니다. 어느 정도 논문대로 잘 나온것 같네요
그리고!!! 이게 전부가 아닙니다. 이렇게 주제별 단어분포를 구함과 동시에 문헌별 주제 분포 및 문장별 주제 분포를 구할 수 있다는게 MG-LDA의 강점이거든요.
리뷰1
문장 | 전역 | 지역 | |
---|---|---|---|
전체 | #16(0.243) #1(0.0242) #15(0.0164) |
||
1 | 심야 영화 너무너무 기다리다 아이언맨2 솔직히 조금 지루 영화 중간 자다
정도 개다 스파이더맨 좋아하다 이유 너무 고뇌 이번 아이언맨 조금 고뇌 인간 이유 이해 지겹다 어쩌다 없다 아이언맨 이유 토니 스파크 특유 천박 쇼맨쉽 히어로 너무나 모자라다 넘치다 모습 이번 그런 없다 조금 빈약 스토리 산만 진행 돋보이다 | #16(0.131) | #6(0.484) |
2 | 영화 대충 보다 맥주 먹다 잠자다 마지막 전투 보다 나오다 느낌 | . | #9(0.321) #1(0.24) #6(0.239) |
3 | 알다 아이언맨 2 바로 마블코믹스 어벤져스 프로젝트 하나 오늘 오전 알다 어벤져스 | #16(0.313) | #0(0.223) #1(0.146) |
4 | 마블 코믹스 히어로즈 총출동 내용 실사영화 개봉 예정 이상 마지막 올라가다 사람 나가다 | #16(0.168) | #9(0.238) #0(0.193) |
5 | 나오다 장면 바로 어벤져스 암시 내용 샤무엘 잭슨 스칼렛 요한슨 어벤져스
출현 | #16(0.42) | #0(0.246) #1(0.194) |
문장 | 전역 | 지역 | |
---|---|---|---|
전체 |
#3(0.337) #10(0.213) #6(0.036) | ||
1 | 하모니 드라마 한국 | #3(0.085) | #3(0.746) |
2 | 개봉 감독 강대 출연 김윤진 나문희 강예원 정수영 박준면 줄거리 아기 입양 보내다 정혜 |
#3(0.483) |
#3(0.098) |
3 | 없이 맑다 아기 연기 모성애 물씬 자극 영화 | #3(0.25) #10(0.158) |
#4(0.189) #8(0.099) |
4 | 엄마 함께 보다 좋다 영화 보다 울다 여자 없다 같다 | . | #9(0.614) #7(0.21) |
5 | 남자 몰래 울다 | #3(0.511) #10(0.323) |
. |
6 | 펑펑 울다 보다 | . | #9(0.652) #7(0.222) |
7 | 그녀 가장 크다 고통 갖다 혀다 현실 사랑 함께 아픔 | #3(0.116) | #2(0.475) #4(0.242) |
8 | 아픔 노래 토하다 다른 희망 갈구 사연 없다 사람 없다 절대 | #3(0.533) #10(0.337) |
. |
9 | 남친 착하다 경찰 경계 바람 | #3(0.148) | #8(0.377) #2(0.133) |
10 | 여자 보다 이쁘다 | #3(0.14) | #8(0.324) #1(0.176) |
11 | 게다가 이쁘다 착하다 함ㅋ 개봉 관람 | #3(0.183) | #8(0.249) #7(0.124) #5(0.124) |
대체로 전역 주제는 해당 리뷰의 대상이 된 영화에 대한 내용과 관련하여서 잡혔고, 지역 주제는 리뷰라는 글의 특성상 여러 글들에서 반복적으로 나타나는 내용들이 잡혔습니다. 전체 문헌으로는 LDA처럼 문헌별 전역 주제분포를 계산할수 있고, 또한 각 문장별로 문장별 전역/지역 주제 분포도 계산할 수 있죠. 만약 문장별 전역/지역 주제 비율을 비교한다면, 해당 문장이 해당 영화에 대한 특수한 이야기를 하는 것인지, 아니면 일반적인 영화 평가를 하는 것인지 따져볼 수 있겠죠. 혹은 글 전체를 대상으로 해당 글이 일반론인지 아니면 특정 영화에 대한 사례가 집중된 이야기인지 비교해 볼 수도 있겠구요. (실제로 몇몇 리뷰들은 전역 주제는 거의 잡히지 않고 지역 주제만 잡힌경우도 있었어요. 이 경우 해당 영화에 대한 리뷰가 너무 흔하여 전역 주제로 가야할 내용들이 지역 주제로 잡혀버린 경우도 있지만, 실제로 해당 영화에 대한 내용보다는 단순 평가만 늘어놓은 경우도 있었습니다.)
주제를 전역과 지역으로 나누어 모형화한다는 MG-LDA의 아이디어는 확실히 흥미롭습니다. 권 > 장 > 단락 > 문장으로 나뉠수 있는 여러 문헌들의 집합이 있다면, 각각의 계층을 대상으로 토픽 모델링을 할 수 있겠죠. 이 경우 전역/지역 주제가 아니라 권별 주제, 장별 주제, 단락별 주제 등으로 나뉠겁니다. 이를 잘 활용하면 단락별 요약이라던지 장별 요약, 혹은 권별 요약도 해볼 수 있겠구요.
실제로 MG-LDA의 저자는 이를 발전시켜 리뷰 텍스트의 감성을 요약하는 작업에 응용하기도 했는데, 시간이 되면 이 부분도 좀더 파헤쳐 보려고 합니다. 2
혹은 지역 주제의 수는 고정해두고, 전역 주제의 수를 HDP와 같은 기법을 이용하여 데이터 셋에 최적으로 맞추는 개선도 해봄직 하구요, 또 문헌의 메타데이터를 통합하여 메타데이터에 따른 전역/지역 주제의 변화를 분석해보는 식으로 응용도 가능할듯 합니다.
[언어모델] HPYLM : 계층적 피트만-요 언어 모델 (0) | 2018.03.16 |
---|---|
[잠재 디리클레 할당 파헤치기] 2.5. 디리클레-다항분포와 마법의 폴리아 항아리 (7) | 2018.02.13 |
[토픽 모델링] 단어의 순서를 고려하는 모형들 - Topical N Gram (0) | 2018.02.04 |
[토픽 모델링] 파칭코 할당 모형과 계층적 LDA 모형 (0) | 2017.12.20 |
[토픽 모델링] MG-LDA : 전역 주제와 지역 주제를 함께 추출하기 (0) | 2017.12.11 |
[토픽 모델링] TOT 모델 (Topic Over Time) (2) | 2017.12.01 |
댓글 영역