머신러닝/자연어처리

점별 상호정보량 Pointwise Mutual information(PMI)

Olivia-BlackCherry 2022. 7. 29. 11:58

1. PMI(Pointwise Mutual information)정의하기

pointwise: 점별의, 즉 주어진 집합의 각점에서 일어나는 경우

mutual: 상호간, 서로의 

information: 정보

이를 통해 PMI는 

각 벡터에서 일어나는 정보 뿐만이 아니라, 벡터들 간 동시에 일어나는 정보 모두를 고려한다는 것을 유추할 수 있습니다. 

 

 

 

2. 식으로 구현하기

PMI는 확률변수 x와 y에 대해 다음 식으로 정의됩니다.

\

P(x,y) 는 x,y가 말뭉치에 동시에 등장할 확률 

P(x) x가 말뭉치에 등장할 확률

P(y) y가 말뭉치에 등장할 확률

을 뜻합니다. 

 

PMI값이 높다면? 이는 x,y 가 관련이 높다는 것을 뜻합니다.

 

이번에는 횟수를 사용하여 식을 다시 써봅시다.

C(x,y) 는 x,y가 말뭉치에 동시에 등장할 횟수

C(x) x가 말뭉치에 등장할 횟수

C(y) y가 말뭉치에 등장할 횟수

N 말뭉치에 포함된 단어의 수

를 뜻합니다. 

 

아래와 같은 데이터가 있다고 가정합시다.

C( 'the') = 1000

C('car') = 20

C('drive') = 10

C('the', 'car') = 10

C('car', 'drive') = 5

N= 10000

 

먼저 동시발생 횟수 관점에서는 

C('the', 'car') = 10

C('car', 'drive') = 5

이기 때문에 the, car의 관련성이 더 높습니다.

 

하지만 PMI 관점에서는 car, drive의 관련성이 높습니다.

 

문장에서 의미없이 등장하는 the, a, an, . 등은 PMI 관점에서는 

특정 단어와 깊은 관련이 있다고 볼 수 없습니다.

 

PMI에서는 잦은 빈도로 등장하는 단어는 상대 단어와 관련도가 낮아지는데

그 횟수를 분모로 나누기 때문에 전체적인 값이 작아지기 때문입니다. 

 

3. PMI 문제점

하지만 PMI도 문제점이 있습니다. 

동시발생 횟수가 0라면 값이 무한대가 된다는 점입니다. 

이 문제를 피하기 위해 양의 상호정보량 Positive PMI(PPMI)를 사용합니다.

 

4. 코드 구현

지금부터는 코드로 구현해보겠습니다.

먼저 N, S를 출력하겠습니다.

※ 하단의 재생버튼▶을 눌러보시면 출력 화면을 볼 수 있습니다.

 

ppmi 코드를 실행시켜봅시다.

※ 하단의 재생버튼▶을 눌러보시면 출력 화면을 볼 수 있습니다.