Writings2011. 7. 27. 15:57
문서간의 유사도를 측정하는 방법을 알아보자.

먼저 앞서 소개한 방법 중, tf의 벡터로 각 문서들을 다루겠다.

   수도권  기상예보  강우량
 doc1 3 1 2
 doc2 1 1 5
 doc3 1 1 3

이를 3차원 벡터로 나타내면

doc1 = < 3, 1, 2 >
doc2 = < 1, 1, 5 >
doc3 = < 1, 1, 3 >


위와 같이 표기할 수 있을 것이다.

이렇게 표기된 문서들의 유사도를 어떻게 측정할 수 있을까? 직관적으로, 다음과 같은 방법을 쓸 수 있을 것이다.

similarity(doc1, doc2) = |(3 - 1)| + |(1 - 1)| + |(2 - 5)| = 2 + 0 + 3 = 5
similarity(doc1, doc3) = |(3 - 1)| + |(1 - 1)| + |(2 - 3)| = 2 + 0 + 1 = 3
similarity(doc2, doc3) = |(1 - 1)| + |(1 - 1)| + |(5 - 3)| = 0 + 0 + 2 = 2


문서간의 유사도는 doc2와 doc3가 가장 높고 그 다음이 doc1, doc3, 가장 유사하지 않은 문서는 doc1, doc2임을 알 수 있을 것이다. 이 계산법의 개념은 단순하다. 문서가 각 단어별 갯수로 표기될 때, 단어별 갯수차이를 구하여 가장 차이가 작은 문서들이 가장 유사한 문서라는 것이다. 이는 Manhattan Distance로 잘 알려진, 두 지점 간의 거리를 구하는 방법의 확장판이다. 단 두 지점간의 거리를 구할 때 2차원의 좌표값을 사용했다면, 여기서는 이를 3차원 벡터로 확장했다는 점이 다르다.

위와 같이 각 문서를 bag of words 모델로 표시했을 때, 이를 n차원의 어느 좌표를 향하는 벡터로 생각할 수 있다는 데서 이러한 표기법은 잇점을 갖는다. 더욱이 다음으로 소개하고자 하는 Cosine Similarity에서는 각 문서간의 유사도를 평가할 때, 두 문서의 각도를 척도로 삼는 다는 점에서 이 벡터 표기법이 더 큰 의미를 갖게된다.

Cosine Similarity는 다음과 같이 좌표평면상에 나타낸 벡터의 유사성으로 판별하는 방법이다.


이는 위에서 들었던 예제하고는 다른 예시이다. 어떤 문서에 gossip과 jealous라는 단어의 분포를 바탕으로 위와 같은 벡터성분을 표기하였을 때, 좌표평면상에 어느 지점을 나타내는지 알 수 있을 것이다. 여기에 주어진 질의어 q에 대해서도 vector로 변환하여 좌표평면상에 나타내면, 어느 문서와 가장 비슷한지 알 수 있을 것이다.(주어진 예시에서는 d2와 가장 유사함을 주목하라.)

위와 같이 표기하기 위해서는, 각 벡터를 단위 벡터:Unit Vector로 환산하는 것이 중요하다. 그래야만 문서에서 그 단어가 차지하는 비중을 위와 같이 나타낼 수 있다. 단위 벡터로 환산한다는 의미는 우리가 관심을 두는 것이 해당 단어가 얼마나 많이 나오냐(tf)가 아니라 해당 단어가 문서내에서 얼마만큼의 비중을 차지하느냐인 것으로 보면된다.

'Writings' 카테고리의 다른 글

IDF:Inverse Document Frequency  (0) 2011.07.27
TF:Term Frequency  (0) 2011.07.26
Posted by 곰푼