DTM과 TF-IDF를 이용하여 추출한 벡터는 머신러닝 기법을 적용하기 위한 입력으로 사용되어
문서 분류부터 다양한 분야에 활용될 수 있다.
문서 간의 유사도를 측정하여 주어진 문서와 가장 유사한 문서를 말뭉치에서 검색하는데 사용하는 방법도
하나의 예이다.
1. 코사인 유사도란?
코사인 유사도는 두 벡터 간의 코사인 각도를 이용하여 구할 수 있는 두 벡터의 유사도를 의미한다.
두 벡터의 방향이 완전히 동일한 경우에는 1의 값을, 90°의 각을 이루면 0, 180°로 반대의 방향을 가지면 -1의 값을 갖게 된다.
즉, 결국 코사인 유사도는 -1 이상 1 이하의 값을 가지며 값이 1에 가까울수록 유사도가 높다고 판단할 수 있다.
이를 직관적으로 이해하면 두 벡터가 가리키는 방향이 얼마나 유사한가를 의미한다.

2. 코사인 유사도 공식
두개의 벡터인 A와 B에 대해서 구하는 식은 다음과 같다.

예를들어 쉽게 설명하면
doc_1 = "Data is the oil of the digital economy"
doc_2 = "Data is a new oil"
doc_3 = "Data is an information"

위의 그림은 카운트 벡터를 사용하여 doc_1과 doc_2를 벡터화한 결과이다.
이 결과를 가지고 코사인 유사도를 구해보면 아래와 같은 결과가 나온다.

3. CountVectorizer( ) vs. TfidfVectorizer( )
CountVectorizer( )와 TfidfVectorizer( )를 사용해서 코사인 유사도를 구한 결과를 보자.

위의 그림과 같이 CountVectorizer( )와 TfidfVectorizer( )의 유사도 결과가 다르다는 것을 확인 할 수 있는데
이는 TfidfVectorizer( )는 문서에서 많이 등장하는 불용어를 제거 하고 계산을 하기 때문이다.
코사인 유사도 소스코드 (깃헙)
GitHub - kaitnam/TIL: Today I Learned
Today I Learned. Contribute to kaitnam/TIL development by creating an account on GitHub.
github.com
REFERENCE
https://studymachinelearning.com/cosine-similarity-text-similarity-metric/
'데이터 분석 > 자연어 처리' 카테고리의 다른 글
영문 텍스트(소설) 가지고 관계도 만들기 (0) | 2023.11.13 |
---|---|
2.7 TF-IDF (Term Frequency-Inverse Document Frequency) (0) | 2023.01.25 |
2.6 문서 단어 행렬(Document-Term Matrix, DTM) (1) | 2023.01.19 |
2.5 Bag of Words(BoW) (0) | 2023.01.16 |
2.4 품사 태깅(PoS Tagging) (0) | 2023.01.10 |