동시발생행렬은 말뭉치(corpus) 내에서 일정한 맥락 안에서 각 단어 쌍이 함께 등장하는 횟수를 세는 표입니다. 언어학, 자연어 처리, 데이터 분석에서 관계와 패턴을 분석하는데 유용한 도구지만 몇 가지 한계가 있습니다.
1.동시발생행렬의 한계
1. 희소성(Sparsity): 많은 단어 쌍들이 함께 등장하지 않거나 자주 등장하지 않을 수 있습니다. 이로 인해 많은 값이 0인 희소 행렬이 되고, 이는 저장과 처리에 있어서 계산 효율성이 떨어질 수 있습니다.
2. 고차원성(High Dimensionality): 말뭉치의 어휘가 많을수록 동시발생행렬의 크기가 커져 다루기 어렵게 됩니다.
3. 맥락 부족(Lack of Context): 단어들이 등장하는 순서나 맥락을 포착하지 못합니다. 예를 들어 "개가 사람을 물었다(dog bites man)"와 "사람이 개를 물었다(man bites dog)"는 같은 동시발생행렬 표현을 가지지만 의미는 매우 다릅니다.
4. 가중치 문제(Weighting Issues): 텍스트 내에서 단어들 사이의 거리와 상관없이 동등하게 취급됩니다. 즉, 바로 옆에 있는 단어와 몇 단어 떨어져 있는 단어가 같은 방식으로 취급되지만, 이는 그들 사이의 의미론적 관계를 정확하게 반영하지 못할 수 있습니다.
5. 구문과 의미 무시(Ignoring Syntax and Semantics): 품사, 구문, 의미론을 고려하지 않습니다. 따라서 "bank"라는 단어가 강둑이나 금융 기관 등 다른 용도로 사용되는 것을 구별하지 못합니다.
6. 정적 표현(Static Representation): 시간에 따른 언어 사용의 변화를 반영하지 못합니다.
2.동시발생행렬 한계의 예시
예를 들어, 말뭉치 안에 다음과 같은 문장들이 있다고 가정해보겠습니다:
1. "The car is parked in the garage."
2. "I drive my car to work every day."
3. "The car needs to be serviced soon."
4. "Can you drive me to the station?"
여기서 'The'는 문장의 시작부에 자주 등장하며, 'car'와 자주 연결되는데, 이는 단순히 'the'가 정관사로서 흔하게 사용되기 때문입니다. 반면에 'drive'는 'car'와 함께 동작을 나타내는 동사로서 함께 쓰일 때 더 강한 의미적 연결성을 가지고 있습니다. 이를 동시발생행렬로 나타내면, 'the'와 'car'가 높은 빈도수를 보일 것이지만, 이는 실제로 'car'와 관련된 의미적 내용을 반영하는 것이 아닐 수 있습니다.
새로운 동시발생행렬을 만들 때 윈도우 크기를 1로 설정하여 'the'와 'car', 그리고 'car'와 'drive'의 동시발생행렬을 확인해보겠습니다.
the | car | drive | |
the | 0 | 3 | 0 |
car | 3 | 0 | 2 |
drive | 0 | 2 | 0 |
이 행렬에서 'the'와 'car'는 3번 함께 등장합니다. 이는 'the'가 문장에서 자주 등장하는 정관사이기 때문에 예상되는 결과입니다. 하지만 'car'와 'drive'는 2번 함께 등장하는데, 이는 'car'를 사용하는 동작을 설명할 때 'drive'가 사용되기 때문입니다. 이 동시발생행렬은 'the'가 매우 빈번히 등장하므로 'the'와 'car'의 조합이 높게 나타나지만, 실제로는 'car'와 'drive' 사이의 의미적 관계가 더 강하다는 점을 고려하지 않습니다.
따라서 동시발생행렬은 단어들 사이의 실질적인 관계나 맥락을 완전히 포착하지 못하는 한계를 가지고 있으며, 이를 분석할 때 이 점을 인지하고 추가적인 언어적 분석을 통해 이해해야 합니다.
3.PMI(Pointwise Mutual Information)이란?
PMI(Pointwise Mutual Information)는 두 사건의 동시 발생 확률이 두 사건이 독립적으로 발생했을 때의 확률에 비해 얼마나 높은지를 측정하는 값입니다. 쉽게 말해서, PMI는 두 사건 X와 Y가 얼마나 강하게 연관되어 있는지를 나타내는 정보 이론에서의 척도입니다.
PMI의 수식은 다음과 같습니다.
$$PMI(x,y) = log_{2}\frac{P(x,y)}{P(x)P(y)}$$
여기서
- $P(x, y)$는 두 사건 $x$와 $y$가 함께 발생할 조건부 확률입니다.
- $P(x)$ 는 사건 $x$가 독립적으로 발생할 확률입니다.
- $P(y)$ 는 사건 $y$가 독립적으로 발생할 확률입니다.
- 로그(log)는 자연로그를 사용하는 경우가 많으며, 이 경우 로그의 밑은 자연상수 $e$ 입니다.
3.1. PMI(Pointwise Mutual Information)에 따른 상황
$PMI(x, y)$ > 0 인 경우
$X$와 $Y$가 함께 발생할 가능성이 독립적인 경우보다 높다는 것을 의미하며, 값이 클수록 두 사건 사이의 연관성이 강함을 나타냅니다.
$PMI(x, y)$ < 0 인 경우
두 사건이 독립적일 때보다 함께 발생할 가능성이 낮다는 것을 의미합니다.
$PMI(x, y)$ = 0 인 경우
두 사건은 서로 독립적이라고 할 수 있으며, 서로에 대한 정보를 전혀 제공하지 않습니다.
PMI는 특히 자연어 처리 분야에서 단어 간의 연관성을 파악할 때 유용하게 사용됩니다. 예를 들어, 어떤 텍스트 내에서 'ice'와 'cream'이라는 단어가 자주 함께 등장한다면, 'ice cream'이라는 구가 텍스트에서 중요한 의미를 가질 가능성이 높다는 것을 PMI를 통해 수치적으로 확인할 수 있습니다.
3.2. PMI(Pointwise Mutual Information) 수식의 변형
동시발생 행렬을 사용해서 PMI의 식을 다시 써보겠습니다.
$$PMI(x, y) = \log_2 \frac{P(x, y)}{P(x)P(y)} = \log_2 \frac{\frac{C(x, y)}{N}}{\frac{C(x)}{N} \frac{C(y)}{N}} = \log_2 \frac{C(x, y) \cdot N}{C(x)C(y)}$$
여기서
- $C$: 동시발생행렬
- $C(x)$: 동시발생행렬 x행의 합 (단어 x의 등장 횟수)
- $C(y)$: 동시발생행렬 y열의 합 (단어 y의 등장 횟수)
- $C(x, y)$: 동시발생행렬 x행, y열의 값 (단어 x, y 가 동시에 발생하는 횟수)
- $N$: 동시발생행렬 모든 항의 합 (말뭉치에 포함된 단어 수
3.3. 동시발생 행렬 vs. PMI
말뭉치의 단어 수 (N)를 10,000이라 하고, 이 중에서 "the"라는 단어는 1,000번, "car"는 20번, "drive"라는 단어는 10번 나타난다고 해봅시다. 문장에서 "the"와 "car"가 10번 함께 나타나고 "car"와 "drive"가 5번 함께 나타나면 "the"가 "car"와 더 많이 함께 나타나기 때문에 동시발생행렬에서 "car"는 "drive"보다 "the"와 관련이 깊다고 나옵니다.
하지만 PMI(Pointwise Mutual Information)에서는 단어가 얼마나 자주 결합되는지뿐만 아니라 단어 자체가 얼마나 자주 나타나는지 고려하여 해당 조합이 얼마나 특별한지 확인할 수 있습니다.
$$\text{PMI("the", "car")} = \log_2 \left( \frac{10 \cdot 10000}{1000 \cdot 20} \right) \approx 2.32$$
$$\text{PMI("car", "drive")} = \log_2 \left( \frac{5 \cdot 10000}{20 \cdot 10} \right) \approx 7.97$$
이 결과에서 알 수 있듯이 PMI를 이용하면 "car"는 "the"보다 "drive"와의 관련성이 강해집니다. 우리가 원하던 결과죠. 이러한 결과가 나온 이유는 단어가 단독으로 출현하는 횟수가 고려되었기 때문입니다. 이 예에서는 "the"가 자주 출현했으므로 PMI 점수가 낮아진 것입니다.
3.4.PMI의 한계
PMI(Pointwise Mutual Information)는 두 변수 간의 정보량을 측정하는 데 사용되지만, 두 단어가 한 번도 함께 등장하지 않을 때, 즉 동시발생 횟수 $C(x, y)$ 가 0일 때 문제가 발생합니다. 이 경우 PMI 공식에 따라 계산된 값은 로그 함수에서 0을 입력으로 받아 $-\infty
$ (마이너스 무한대)가 됩니다.
이러한 문제를 해결하기 위해 PPMI(Positive Pointwise Mutual Information)가 사용됩니다. PPMI는 PMI의 값을 항상 양수로 제한하는 변형으로, 음수인 PMI 값은 0으로 대체됩니다. 즉, PPMI는 다음과 같이 정의됩니다.
$$PPMI(x, y) = max(PMI(x, y), 0)$$
PPMI는 다음과 같은 조건에서 PMI 값을 사용합니다.
1. 만약 PMI 값이 양수이면, 그대로 PPMI 값으로 사용됩니다.
2. 만약 PMI 값이 0 이하이면, PPMI 값은 0으로 설정됩니다.
이 방식은 두 단어의 관계가 음의 상호 정보를 갖는 경우를 무시하고 오직 긍정적인 연관성만을 고려하게 됩니다. 이는 통계적으로 유의미한 양의 관계만을 추출하는 데 유용하며, 자연어 처리 작업에서 노이즈를 줄이고 중요한 단어 쌍의 특징을 잡아내는 데 도움을 줍니다.
이전 글
다음 글
'밑바닥 DL' 카테고리의 다른 글
[밑바닥 DL] 4.word2vec와 추론 기반 기법 (feat.CBOW와 Skip-gram 모델로 단어 학습) (1) | 2024.05.01 |
---|---|
[밑바닥 DL] 3.PPMI의 한계와 차원 감소(feat.SVD) (0) | 2024.04.05 |
[밑바닥 DL] 1.시소러스와 통계 기반 기법(feat.동시 발생행렬, 코사인 유사도) (0) | 2024.03.12 |