본문 바로가기
NLP

[NLP] Similarity, 문서 유사도 측정

by 단깅수 2024. 7. 6.
728x90

검색 엔진, 추천시스템 등 굉장히 다양한 분야의 데이터에서 문서 유사도 개념은 중요하다.

하지만 컴퓨터는 자연어, 즉 텍스트 데이터를 이해하지 못한다.

때문에 벡터 표현으로 변형된 데이터를 컴퓨터가 인식하게 되는데 이 때 우리는 이 벡터 표현을 가지고 유사도를 측정할 수 있다.

어떤 방법으로 어떻게 측정할 수 있는지 이제 한 번 알아보자.

 

Document Term Matrix (DTM)

다음 예시와 같이 문서 4개가 있을 때 각 단어가 몇 개 들어 있는지에 대한 행렬을 나타낼 수 있다.이를 DTM이라고 부른다.

  과일이 길고 노란 먹고 바나나 사과 싶은 저는 좋아요
문서1 0 0 0 1 0 1 1 0 0
문서2 0 0 0 1 1 0 1 0 0
문서3 0 1 1 0 2 0 0 0 0
문서4 1 0 0 0 0 0 0 1 1

 

그리고 이러한 행렬이 있을 때 우리는 유사도를 구할 수 있는데 이번 포스팅에서는 코사인 유사도, 자카드 유사도를 비롯한 여러 유사도 기법을 알아보도록 하겠다.


Cosine Similarity

코사인 유사도는 두 벡터 간의 코사인 각도를 이용하여 구할 수 있는 두 벡터의 유사도를 의미한다.

https://thebook.io/080260/0099/

식을 보면 두 벡터의 내적 / 곱으로 계산할 수 있다.

위의 DTM에 기반해 코사인 유사도를 구해보면 아래와 같다.


Jaccard Similarity

자카드 유사도는 두 집합의 합집합에서 교집합의 비율을 의미한다.

식을 보면 합집합 / 교집합으로 계산할 수 있다.

위의 DTM에 기반해 자카드 유사도를 구해보면 아래와 같다.


그 외 유사도 분석 방법

https://velog.io/@hyesoup/ https://ko.wikipedia.org https://gaussian37.github.io

  • 유클리디안 거리
    • 피타고라스와 동일
  • 맨하탄 거리
    • 거리의 절댓값을 구하는 개념
  • 마할라노비스 거리
    • 가우시안 분포에 따른 거리 개념
728x90

'NLP' 카테고리의 다른 글

[NLP] Survey of Chatbot, Persona  (7) 2024.09.04
[NLP] NLP Task Review, 감정분석  (0) 2024.07.11
[NLP] Text Data Preprocessing  (0) 2024.07.02
[NLP] 정규 표현식, Regular Expression  (0) 2024.07.01
[NLP] API를 활용한 Web Crawling  (0) 2024.06.29