문서의 유사도를 구하기 위한 방법으로는 코사인 유사도 외에도 여러가지 방법들이 있다. 여기서는 문서의 유사도를 구할 수 있는 다른 방법들을 학습한다.
유클리드 거리(Euclidean distance)
유클리드 거리는 문서의 유사도를 구할 때 자카드 유사도나 코사인 유사도만큼 유용한 방법은 아니다. 하지만 여러 가지 방법을 이해하고, 시도해보는 것 자체만으로 다른 개념들을 이해할 때 도움이 되므로 의미가 있다.
다차원 공간에서 두 개의 점 p와 q가 각각 p = (p1, p2, p3, ..., pn)과 q = (q1, q2, q3, ..., qn)의 좌표를 가질 때 두 점 사이의 거리를 계산하는 유클리드 거리 공식은 다음과 같다.
다차원 공간이라고 가정하면, 처음 보는 입장에서는 식이 너무 복잡해보인다. 좀 더 쉽게 이해하기 위해서 2차원 공간이라고 가정하고 두 점 사이의 거리를 좌표 평면 상에서 시각화해보자.
2차원 좌표 평면 상에서 두 점 p와 q 사이의 직선 거리를 구하는 문제이다. 위의 경우에는 직각 삼각형으로 표현이 가능하므로, 피타고라스의 정리를 통해 p와 q 사이의 거리를 계산할 수 있다. 즉, 2차원 좌표 평면에서 두 점 사이의 유클리드 거리 공식은 피타고라스의 정리를 통해 두 점 사이의 거리를 구하는 것과 동일하다.
여러 문서에 대해서 유사도를 구하고자 유클리드 거리 공식을 사용한다는 것은, 앞서 본 2차원의 단어의 총 개수만큼의 차원으로 확장하는 것과 같다. 예를 들어 아래와 같은 DTM이 있다고 하자.
단어의 개수가 4개이므로, 이는 4차원 공간에 문서1, 문서2, 문서3을 배치하는 것과 같다. 이때 다음과 같은 문서 Q에 대해서 문서1, 문서2, 문서3 중 가장 유사한 문서를 찾아내고자 한다.
이때 유클리드 거리를 통해 유사도를 구하려고 한다면, 문서Q 또한 다른 문서들처럼 4차원 공간에 배치시켰다는 관점에서 4차원 공간에서의 각각의 문서들과의 유클리드 거리를 구하면 된다.
출력 결과 :
문서 1과 문서 Q의 거리 : 2.23606797749979
문서 2와 문서 Q의 거리 : 3.1622776601683795
문서 3과 문서 Q의 거리 : 2.449489742783178
유클리드 거리의 값이 가장 작다는 것은 문서 간 거리가 가장 가깝다는 것을 의미한다. 즉, 문서1이 문서 Q와 가장 유사하다고 볼 수 있다.
자카드 유사도
A와 B 두 개의 집합이 있다고 하자. 이 때 교집합은 두 개의 집합에서 공통으로 가지고 있는 원소의 집합을 말한다. 즉, 합집합에서 교집합의 비율을 구한다면 두 집합 A와 B의 유사도를 구할 수 있다는 것이 자카드 유사도의 아이디어이다. 자카드 유사도는 0과 1 사이의 값을 가지며, 만약 두 집합이 동일하다면 1의 값을 가지고, 두 집합의 공통 원소가 없다면 0의 값을 갖는다. 자카드 유사도를 구하는 함수를 J라고 할 때, 자카드 유사도 함수 J는 아래와 같다.
두 문서 doc_1, doc_2 사이의 자카드 유사도 J(doc_1, doc_2)는 두 집합의 교집합의 크기를 두 집합의 합집합의 크기로 나눈 값으로 정의된다.
문서1 : ['apple', 'banana', 'everyone', 'like', 'likely', 'watch', 'card', 'holder']
문서2 : ['apple', 'banana', 'coupon', 'passport', 'love', 'you']
이제 문서1과 문서2의 합집합을 구해보자.
문서1과 문서2의 합집합 : {'coupon', 'love', 'you', 'likely', 'everyone', 'card', 'banana', 'passport', 'like', 'apple', 'watch', 'holder'}
문서1과 문서2의 합집합의 단어의 총 개수는 12개이다. 다음으로 문서1과 문서2의 교집합을 구해보자.
문서1과 문서2의 교집합 : {'banana', 'apple'}
문서1과 문서2에서 둘 다 등장한 단어는 banana와 apple 총 2개이다. 이제 교집합의 크기를 합집합의 크기로 나누면 자카드 유사도가 계산된다.
자카드 유사도 : 0.16666666666666666
'NLP > 딥러닝을 이용한 자연어 처리 입문' 카테고리의 다른 글
[NLP] 5-2. 머신 러닝 훑어보기 (1) | 2024.01.03 |
---|---|
[NLP] 5-1. 머신 러닝이란 (0) | 2024.01.03 |
[NLP] 4-1. 코사인 유사도(Cosine Similarity) (0) | 2024.01.02 |
[NLP] 3-4. TF-IDF(Term Frequency-Inverse Document Frequency) (1) | 2023.12.26 |
[NLP] 3-3. 문서 단어 행렬(DTM) (0) | 2023.12.26 |