NLP/AI/Statistics

문서 유사도: 코사인 유사도, 자카드 유사도, 유클리드 거리 본문

NLP

문서 유사도: 코사인 유사도, 자카드 유사도, 유클리드 거리

Danbi Cho 2020. 10. 19. 22:56

문서 유사도란 문서 간에 얼마나 유사성을 갔는지에 대한 지표를 의미한다.

 

문서 유사도는 자연어처리에서 자주 사용되는 방법으로, 문서 간의 비교 뿐만 아니라 문서 내의 단어들 간의 비교에서도 문서 유사도 방법을 활용한다.

 

유사도 방법에는 크게 3가지가 있다.

 

1). 코사인 유사도

2). 자카드 유사도

3). 유클리드 유사도

 

1) 코사인 유사도 (Cosine Similarity)

 

코사인 유사도는 쉽게 말해 코사인 각도를 이용하여 벡터 간의 유사도를 추정하는 방법이다.

 

두 가지의 벡터가 서로 같은 방향일 경우 1, 90도의 각을 이룰 때 0, 180도의 각으로 완전히 반대의 방향을 나타낼 때 -1의 유사도 값을 갖게 된다.

 

즉, 코사인 유사도는 [-1, 1]의 범위의 값으로 나타날 수 있다.

 

이러한 코사인 유사도는 벡터 A, B에 대하여 아래와 같이 계산된다.

 

$$cosine\ similarity = cos(\theta) = \frac{A \cdot B}{||A|| ||B||} = \frac{\sum_{i=1}^{n} A_{i} \times B_{i}}{\sqrt{\sum_{i=1}^{n} (A_{i})^{2}} \times \sqrt{\sum_{i=1}^{n} (B_{i})^{2}}}$$

 

 

2) 자카드 유사도 (Jaccard Similarity)

 

자카드 유사도는 두 문서에서 공통되는 부분의 비율을 이용한 유사도 측정 방식이다.

 

다시 말해, 두 문서 간의 합집합에서 교집합이 차지하는 비율을 의미한다.

 

그렇기 때문에 두 문서가 완전히 같을 경우 합집합과 교집합이 동일하여 1의 값을 갖게 되고

 

두 문서가 완전히 다를 경우 교집합은 $\emptyset$ (공집합)이 되어 0의 값을 갖는다. 

 

이처럼 자카드 유사도는 [0, 1]의 범위 값으로 나타나며 이는 벡터 A, B에 대하여 아래와 같이 계산된다.

 

$$Jaccard\ similarity = \frac{|A \cap B|}{|A \cup B|} = \frac{|A \cap B|}{|A| + |B| - |A \cap B|}$$

 

#. 이 때 벡터 A, B는 두 개의 문서 $d_{1}, d_{2}$가 가지는 토큰 집합을 의미한다. 

 

 

3) 유클리드 거리 (Euclidean distance)

 

유클리드 거리는 흔히 다차원 공간에서 좌표를 갖는 두 개의 점 간의 거리를 의미한다.

 

두 개의 점을 $p = (p_1, p_2, ..., p_n)$, $q = (q_1, q_2, ..., q_n)$이라고 할 때

 

유클리드 거리는 아래와 같이 계산된다.

 

$$\sqrt{(q_1 - p_1)^{2} + (q_2 - p_2)^{2} + ... + (q_n - p_n)^{2}} = \sqrt{\sum_{i=1}^{n} (q_i - p_i)^{2}}$$

 

예를 들어, 2차원 공간에서의 두 좌표의 유클리드 거리는 두 점의 직선 거리와 같게 된다.

Comments