<딥 러닝을 이용한 자연어 처리 입문>을 읽고 간단하게 정리한 내용이다.
두 문서(두 벡터)의 유사도를 구하는 방식에 대해서 이야기해본다.
가장 대표적으로는 코사인 유사도가 있고, 유클리드 거리, 자카드 유사도도 고려해볼 수 있다.
두 문서가 얼마나 유사한 내용을 포함하고 있는지, 문서의 유사도를 구하는 방법에 대해서 이야기해본다.
# 코사인 유사도 (cosine similarity)
코사인 유사도는 두 벡터간의 각도를 이용해서, 두 벡터의 유사도를 구하는 방법이다. 두 벡터의 방향이 같다면 1, 수직을 이루고 있으면 0, 완전 반대 방향을 향하고 있으면 -1의 값을 결과로 갖는다. 코사인 유사도의 값이 1에 가까울수록 두 벡터는 유사하다고 판단한다. 벡터의 크기로 나눠주기 때문에, 벡터의 크기가 아닌, 방향에 초점을 두고 있다. 그러므로 문서의 길이가 다르더라고 비교적 공정하게 유사도를 평가할 수 있다.
# 유클리드 거리 (Euclidean distance)
코사인 유사도 만큼 유용한 방법은 아니지만, 두 벡터 사이의 관계를 구할 수 있는 방법 중 하나이다. 유클리드 거리는 단순히 두 벡터 사이의 거리를 구하는 방법이고, 구하는 방식은 [식-2]와 같다.
# 자카드 유사도 (Jaccard similarity)
두 집합 A, B 가 있을 때, 두 집합의 합집합 중 교집합의 비율을 구하는 방식이다. 특수한 케이스로, 두 집합이 동일한 경우 합집합과 교집합이 동일해지기 때문에 결과는 1, 공통 원소가 아예 없는 경우 결과는 0 을 제공한다. 구하는 식은 [식-3]과 같다. 집합을 문서라고 생각했을 대, 두 문서의 유사도를 구한다고 생각할 수도 있다.
'필기 노트 > 자연어 처리 입문' 카테고리의 다른 글
[자연어 처리 입문] 순환 신경망 (Recurrent Neural Network) (0) | 2021.01.07 |
---|---|
[자연어 처리 입문] 토픽 모델링 (Topic Modeling) (1) | 2021.01.05 |
[자연어 처리 입문] Count-based word representation (BoW, DTM, TF-IDF) (0) | 2020.12.31 |
[자연어 처리 입문] 언어 모델 (Language Model) (1) | 2020.12.29 |
[자연어 처리 입문] 데이터 전처리 (text preprocessing) (0) | 2020.12.28 |
댓글