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 코드를 실행시켜봅시다.
※ 하단의 재생버튼▶을 눌러보시면 출력 화면을 볼 수 있습니다.
'머신러닝 > 자연어처리' 카테고리의 다른 글
트랜스포머, 자연어처리, pipeline, 감정분류, 개체명인식, 질문답변, 요약, 생성 (0) | 2024.08.22 |
---|---|
차원감소(dimensionality reduction), SVD (0) | 2022.07.29 |
코사인 유사도 cosine similarity (0) | 2022.07.29 |
말뭉치(corpus)란? (0) | 2022.07.28 |
자연어처리 NLP(Natural Language Processing)란? (0) | 2022.07.28 |