TF-IDF

컴퓨터 2006/10/27 11:21
 

TF와 IDF를 이용하여 문서의 집합(document collection)에서 사용자의 질의(query)에 대해 연관성의 정도에 따라 순서를 매겨 관련 문서를 보여주는 작업을 하고자 한다. 다음과 같은 몇 가지 용어를 가정한다.

N : 문서 집합내의 문서의 개수
d : k번째 단어를 포함하는 문서의 개수 (DF값)
idf : k번째 단어의 IDF값
f : i번째 문서내의 k번째 단어의 빈도수
w : k번째 단어의 i번째 문서에 대한 가중치

이때, 다음과 같은 수식을 정의할 수 있다.

idf tex2html wrap inline185 = tex2html wrap inline183 (N/d tex2html wrap inline185 )+1

w tex2html wrap inline275 = f tex2html wrap inline275 tex2html wrap inline297 idf tex2html wrap inline185

이것을 응용하여 다음과 같은 8개의 문서로 구성된 문서 집합에서 "agent", "retrieval", "filtering", "information"의 4 단어에 대한 빈도수를 다음과 같이 구하였다고 가정하자.


문서 1 (D tex2html wrap inline301 ) : agent 2번, retrieval 3번, filtering 0번, information 5번
문서 2 (D tex2html wrap inline303 ) : agent 4번, retrieval 0번, filtering 3번, information 3번
문서 3 (D tex2html wrap inline305 ) : agent 3번, retrieval 2번, filtering 0번, information 0번
문서 4 (D tex2html wrap inline307 ) : agent 6번, retrieval 0번, filtering 0번, information 4번
문서 5 (D tex2html wrap inline309 ) : agent 8번, retrieval 0번, filtering 5번, information 0번
문서 6 (D) : agent 7번, retrieval 0번, filtering 0번, information 0번
문서 7 (D tex2html wrap inline313 ) : agent 7번, retrieval 0번, filtering 0번, information 3번
문서 8 (D tex2html wrap inline315 ) : agent 4번, retrieval 0번, filtering 0번, information 0번


각 문서는 가중치의 벡터로 표현된다고 가정한다. 예를 들어, 문서 D tex2html wrap inline301 은 < tex2html wrap inline319 , tex2html wrap inline321 , tex2html wrap inline323 , tex2html wrap inline325 >로 나타낸다. 질의의 경우는 각 단어의 TF값이 최대 1이므로 4 개의 단어 중 질의에 나타나는 단어는 가중치가 그 단어의 IDF값이 되고, 그렇지 않은 단어는 0이 된다. 따라서 질의 Q가 "filtering information"이라면 Q에 대한 벡터는 <0, 0, idf tex2html wrap inline305 , idf tex2html wrap inline307 >가 되고, Q가 "information retrieval agent"이면 벡터는 <idf tex2html wrap inline301 , idf tex2html wrap inline303 , 0, idf tex2html wrap inline307 >가 된다. (여기서 IDF값을 구할 때, Q는 N에 포함시키지 않기로 하며 결과적으로 위의 문서 8개를 대상으로 구한 IDF값과 같아진다.)

질의와 각 문서간의 유사값 (similarity measure)은 간단한 계산을 위해 벡터의 내적 (inner product)를 이용한다. 즉, 질의 Q의 벡터가 <q tex2html wrap inline301 , q tex2html wrap inline303 , q tex2html wrap inline305 , q tex2html wrap inline307 >이고, 문서 D의 벡터가 <d tex2html wrap inline301 , d tex2html wrap inline303 , d tex2html wrap inline305 , d tex2html wrap inline307 >라면, 유사값 Sim(Q,D)는 Sim(Q,D) = tex2html wrap inline353 q tex2html wrap inline355 tex2html wrap inline297 d tex2html wrap inline355 의 공식에 의해 계산하고 Sim(Q,D)값이 클수 록 유사성이 높다고 가정한다.

위의 가중치 공식을 이용하여 사용자가 "information retrieval agent"라고 질의를 했을 때, 관계되는 문서를 찾아 질의와 가장 유사값이 높은 문서부터 낮은 순서로 결과를 보여주려고 한다. 이때, 유사값을 구하는 진행과정을 보이고 질의에 대한 결과를 구하시오.

답) 우선 각 단어에 대한 DF 값을 구한다. agent의 경우 모든 문서에 나타나고, retrieval은 D tex2html wrap inline301 , D tex2html wrap inline305 에, filtering은 D tex2html wrap inline303 , D tex2html wrap inline309 에, 그리고 information은 D tex2html wrap inline301 , D tex2html wrap inline371 D tex2html wrap inline307 , D tex2html wrap inline313 에 나타난다. 따라서, DF값은 다음과 같이 구해진다.

d tex2html wrap inline301 = 8, d tex2html wrap inline303 = 2, d tex2html wrap inline305 = 2, d tex2html wrap inline307 = 4

IDF값은 위의 공식을 이용하면 다음과 같다.

idf tex2html wrap inline301 = tex2html wrap inline183 (8/8)+1 = 1
idf tex2html wrap inline303 = tex2html wrap inline183 (8/2)+1 = 3
idf tex2html wrap inline305 = tex2html wrap inline183 (8/2)+1 = 3
idf tex2html wrap inline307 = tex2html wrap inline183 (8/4)+1 = 2

이를 이용하여 가중치를 구할 수 있고 각 문서를 가중치 벡터로 표현하면 다음과 같다.

D tex2html wrap inline301 = <2, 9, 0, 10>

D tex2html wrap inline303 = <4, 0, 9, 6>

D tex2html wrap inline305 = <3, 6, 0, 0>

D tex2html wrap inline307 = <6, 0, 0, 8>

D tex2html wrap inline309 = <8, 0, 15, 0>

D tex2html wrap inline311 = <7, 0, 0, 0>

D tex2html wrap inline313 = <7, 0, 0, 6>

D tex2html wrap inline315 = <4, 0, 0, 0>


질의가 "information retrieval agent"이므로 질의 Q에 대한 가중치 벡터는 다음과 같다.

Q = <1, 3, 0, 2>

이제 Q와 각 문서 D와의 유사성 값을 Sim(Q,D) = tex2html wrap inline353 q tex2html wrap inline355 tex2html wrap inline297 d tex2html wrap inline355 를 이용하여 구하면 다음과 같다.

Sim(Q,D tex2html wrap inline301 ) = 2+27+0+20 = 49

Sim(Q,D tex2html wrap inline303 ) = 4+0+0+12 = 16

Sim(Q,D tex2html wrap inline305 ) = 3+18+0+0 = 21

Sim(Q,D tex2html wrap inline307 ) = 6+0+0+16 = 22

Sim(Q,D tex2html wrap inline309 ) = 8+0+0+0 = 8

Sim(Q,D tex2html wrap inline311 ) = 7+0+0+0 = 7

Sim(Q,D tex2html wrap inline313 ) = 7+0+0+12 = 19

Sim(Q,D tex2html wrap inline315 ) = 4+0+0+0 = 4


Sim(Q,D)의 값이 높을 수록 더 관련이 있는 문서이므로 출력 순서는 다음과 같다.

D tex2html wrap inline301 > D tex2html wrap inline307 > D tex2html wrap inline305 > D tex2html wrap inline313 > D tex2html wrap inline303 > D tex2html wrap inline309 > D tex2html wrap inline311 > D tex2html wrap inline315

TAG ,