언어처리

PLSA Implementation

고요한하늘... 2013. 1. 24. 11:23

간단히 개념을 살펴보면

 

문서와 단어 간의 관계 즉 문서 D1에 w1, w2, w3가 있다고 할때

문서와 단어사이에 latent valuable을 넣어

문서 D1이 w1으로 가기 위해 z1을 거쳐야 한다라고 가정하고

D1에서 z1의 확률과

z1에서 w1의 확률을 계산하는 과정이 PLSA의 주요 과정이 되겠다.

 

aspect model의 graphical 모델로 표현하면 asymmetric(a) 을 symmetric(b) 으로 변환할수 있다 

이를 수식으로 표현하면

 

 이는 다시 아래와 같이 표현할수 있다.( aspect model 그림의 두번째 그림 b 참고 )

 

 

결과적으로

P(z)와 P(d|z), P(w|z)을 구하는 문제가 되었다.

 

먼저

아래와 같은 매트릭스가 있다고 가정한다.

 

   W1 W2  W3  W4  W5 
 D1  1  0  1  0  0
 D2    1  1  0  0
 D3  0  0  1  0  1

 

EM에서

E-Step은 다음의 공식으로 구한다.

 

 

 

 

M-Step은 다음의 공식으로 구한다.

 

 

위 두개의 식을 보면

E-Step에서 계산한 값을 M-Step의 계산에 사용하고

다시 M-Step에서 계산한 값을 E-Step의 계산에 사용함을 알수 있다.

 

먼서 E-Step의 공식을 보면

 

Z = z1, D = d1, W = w1일때

모든 z대한 z1의 확률 값임을 알수 있다.

 

M-Step을 보면

n(d,w)은 처음 가정한 메트릭스에서 문서 d에서 w의 frequency이고

P(z|d,w)은 E-Step에서 구한 값을 사용하면 된다.

 

P(w|z)와 P(d|z)는 식이 거의 동일한데

차이점은 P(w|z)은 문서에 대한 iteration이고

P(d|z)는 단어에 대한 iteration을 계산한다.

 

즉 P(w|z)를 구할때 W = w1, Z=z1이고 D = d1 ~ Dm이고

P(d|z)를 구할때는 D = d1, Z = z1이고 W = w1 ~  Wn이다.

 

미지막 P(z)에서 Z = z1이고

D = D1 ~ Dm이고, W = W1 ~ Wn이다.