자연어 유사도 측정
- Euclidean Distance
'princess', 'prince', 'man'이라는 단어들이 벡터로 표현되어 있을 때, 'man'과의 거리를 euclidean distance로 계산해보면 d1이 d2보다 짧아 'man'은 'prince'와 더 유사하다고 볼 수 있다.
- Cosine Similarity
'money money laudering'은 euclidean distance로 거리를 구했을 떼 'laundering'이라는 단어에 더 유사하다는 결과가 나온다. 실제로는 'money'가 2번, 'laundering'이 한번이므로 'money money money money money money'와 더 유사하다는 결과가 옳다. 이러한 문제는 벡터 특성 때문에 발생한다. 단어가 여러번 나올 수록, 즉, 벡터의 크기가 커질수록 거리가 멀어질 수 밖에 없다. 이러한 문제를 해결하기 위해 벡터의 크기를 무시해줄 Cosine Similarity를 사용해야한다.
벡터의 크기가 아닌 두 벡터 사이의 각도를 통해 문서의 유사도를 측정한다. cos함수는 각도가 작을수록 더 높은 값을 가진다. 따라서 각도가 좁을 수록 높은 유사도 값을 가진다는 것을 확인할 수 있다. 이러한 방법으로 유사도를 계산해보면, 초록색 각도보다 빨간색 각도가 더 작아 해당 두 벡터의 더 유사도 수치가 더 높음을 확인할 수 있다.
그렇다면 벡터 사이의 각도가 90도를 넘어가는 일이 발생할까?
단어가 발생하는 횟수가 음수가 될 수 없으므로 각도는 90을 넘길 수 없다. 따라서 cosine similarity는 언제나 0 이상의 값을 가지게 된다.
'Deep Learning > NLP' 카테고리의 다른 글
[NLP] TF-IDF (0) | 2021.07.19 |
---|---|
[NLP] n-gram (0) | 2021.07.19 |
[NLP] Bag of words (0) | 2021.07.19 |