Tensorflow 2 NLP(자연어처리)/단어 임베딩

[3-7] PMI 행렬 만드는 법

Suhd 2021. 11. 13. 11:56

PMI 행렬을 만드는 기법을 하나 소개하겠다.

기존의 단어-단어 행렬 등을 A라 하자

PMI행렬을 만들겠다는 것은

행에 해당하는 단어, 열에 해당하는 단어가 교차하는 부분의 원소자리에

그 두 단어간의 PMI값들로 채워넣고 싶은 것이다.

우리는 행에 해당하는 단어들에 대해 각각 전체 말뭉치에서 그 단어들이 등장할 확률을 미리 계산하여 (벡터)행렬로 나타낼 수 있다.(열에 해당하는 단어도 마찬가지)

단어 두개의 동시등장 '확률' 행렬은 기본 동시등장행렬에 말뭉치 개수(=중복을 허용한 전체 단어 등장수)로 나누어 주기만 하면 된다.

PMI행렬은

 

 

에 로그를 취한 값으로 나타낼 수 있고,

행에 해당하는 단어들의 등장 확률 행렬과 열에 해당하는 단어들의 등장 확률 행렬을

대각행렬로 변환한다음

여기서 행렬간의 나눗셈을 곱셈으로 변환하여 계산하면

PMI행렬이 완성된다.