IR Vector Space Model : Cosine Similarity
벡터 스페이스 모델에 대한 두번째 이야기이다. 저번시간에는 벡터 스페이스 모델을 구성하기 위한 각 단어들에 대한 스코어링을 하는 방법인 tf-idf에 대해서 알아보았다.
이번에는 벡터 스페이스 모델에 대해서 설명하고, 문서와 질의어간의 유사도를 구하는 방법에 대해서 알아본다.
벡터 스페이스 모델은 문서를 벡터로 표현해서 공간에 뿌리는 것이라고 생각하면 쉽다.
벡터로 표현된 문서를 공간에 뿌리기 위해선 다차원의 공간이 필요하다. 물론 이런 다차원의 공간은 사람의 머리로 그리기는 힘들다. 뭐 그걸 생각하는 것은 컴퓨터가 할 일이고. 간단하게 이해하기 위해서 2차원의 공간을 예로 들어서 보자.
세상에 단어가 딱 2개 밖에 없다면 (banana, apple), 문서 1은 banana 단어 3개로 이루어진 문서이며, 문서 2는 apple 2개와 banana 1개로 이루어진 문서이다. 이 두 문서는 2차원 공간 위의 그림과 같이 뿌려진다. (<0,3> 과 <2,1>) 만약 banana 2 개와 apple 2개의 단어로 이루어진 질의가 발생한다면 2차원 공간의 <2,2> 위치에 뿌려지게 된다. 이렇게 차원공간에 문서를 표현하는 것이 벡터 스페이스 모델이다.
그렇다면 질의어와 문서들간의 유사도는 어떻게 계산할까?
1. Euclidean distance
유클리디언 거리는, 각 문서와 질의어의 거리를 계산하는 방법이다. 계산 방법은 벡터의 내적을 구하는 것과 같다.
위 그림과 같이 유클리디언 거리를 구하면 <2,1>의 위치에 있는 문서가 더욱 유사하다는 것을 알 수 있다. (거리가 짧은 것이 더욱 유사하다는 뜻이므로)
하지만 이런 유클리디언 거리를 이용하는 방법은 그닥 좋은 방법은 아니다.
왜냐하면 문서의 방향성이 고려되지 않았기 때문이다. 만약 같은 단어의 중복으로 이루어진 문서가 있다면, 즉 질의어가 apple 4개 banana 4개로 이루어진 문서가 있다면, apple2개와 banana 2개로 이루어진 질의어와 가장 유사하지만 거리가 멀기떄문에 선택되기가 힘들다.
위 그림을 보면 질의어인 rich poor 에 대하여 가장 유사한 문서는 d2 이지만, 방향성을 무시하고 거리만 구한다면 다른 문서가 선택될 것이다. 따라서, 거리 뿐만아니라 방향성을 같이 계산할 수 있는 유사도 계산법이 필요하다.
2. Length Normalization
위의 문제점을 해결하기 위한 첫번째 방법이 길이 정규화이다.
길이 정규화는 모든 문서 벡터를 길이가 1인 단위벡터로 만드는 것이다.
길이 정규화 하는 방법은 쉽다. 모든 단어들의 스코어들의 제곱을 합한 뒤, 루트를 씌우면 된다.
3. Cosine Similarity : cos(q,d)
자, 이제 길이문제도 해결 되었으니, 각도를 고려한 유사도 계산법을 알아보자.
벡터 스페이스 모델에서 가장 많이 사용되는 문서와 질의어 간의 유사도 계산법이 바로, 코사인 유사도 방법이다.
위의 수식을 보면 뭐가 복잡하고 어려워 보이지만, 이것도 전혀 어렵지 않다.
두 벡터에서 동일한 단어들끼리의 곱의 합 / 문서 1 단어의 제곱의 루트 * 문서 2 단어의 제곱의 루트
이것이다.
즉 벡터의 내적에 단위 백터들의 곱을 나누면 되는것이다.
간단한 계산의 예를 보이며 이번 쳅터를 마무리 짓자.
d1 = <9 6 3 2 2 2 0 2 0 0 0 0 >
d2 = <4 3 1 1 0 0 0 2 2 4 2 1 >
d3 = <1 1 1 1 1 1 1 1 1 0 0 0 >
d4 = <1 0 0 0 2 0 0 2 1 1 1 1 >
의 문서가 존재할 경우 ( 위의 숫자는 각문서의 벡터를 구성하는 단어의 스코어이다 )
cos(d2, d1) = (36+18+3+2+4) / (7.5*11.9) = 0.71
cos(d2, d3) = (4+3+1+1+2+2) / (7.5*3) = 0.58
cos(d2, d4) = (4+4+2+4+2+1) / (7.5*3.6) = 0.63
댓글 없음:
댓글 쓰기