본문 바로가기
필기 노트/자연어 처리 입문

[자연어 처리 입문] 문서 유사도 (Document similarity)

by misconstructed 2020. 12. 31.
728x90

<딥 러닝을 이용한 자연어 처리 입문> 읽고 간단하게 정리한 내용이다.

두 문서(두 벡터)의 유사도를 구하는 방식에 대해서 이야기해본다.

가장 대표적으로는 코사인 유사도가 있고, 유클리드 거리, 자카드 유사도도 고려해볼 수 있다. 


두 문서가 얼마나 유사한 내용을 포함하고 있는지, 문서의 유사도를 구하는 방법에 대해서 이야기해본다.

# 코사인 유사도 (cosine similarity)

코사인 유사도는 두 벡터간의 각도를 이용해서, 두 벡터의 유사도를 구하는 방법이다. 두 벡터의 방향이 같다면 1, 수직을 이루고 있으면 0, 완전 반대 방향을 향하고 있으면 -1의 값을 결과로 갖는다. 코사인 유사도의 값이 1에 가까울수록 두 벡터는 유사하다고 판단한다. 벡터의 크기로 나눠주기 때문에, 벡터의 크기가 아닌, 방향에 초점을 두고 있다. 그러므로 문서의 길이가 다르더라고 비교적 공정하게 유사도를 평가할 수 있다. 

[식-1]

# 유클리드 거리 (Euclidean distance)

코사인 유사도 만큼 유용한 방법은 아니지만, 두 벡터 사이의 관계를 구할 수 있는 방법 중 하나이다. 유클리드 거리는 단순히 두 벡터 사이의 거리를 구하는 방법이고, 구하는 방식은 [식-2]와 같다. 

[식-2]

# 자카드 유사도 (Jaccard similarity)

두 집합 A, B 가 있을 때, 두 집합의 합집합 중 교집합의 비율을 구하는 방식이다. 특수한 케이스로, 두 집합이 동일한 경우 합집합과 교집합이 동일해지기 때문에 결과는 1, 공통 원소가 아예 없는 경우 결과는 0 을 제공한다. 구하는 식은 [식-3]과 같다. 집합을 문서라고 생각했을 대, 두 문서의 유사도를 구한다고 생각할 수도 있다. 

[식-3]

728x90

댓글