TF-IDF에 대해서 알아보기

개발/검색2011. 8. 11. 23:00
728x90
TF-IDF

TF(단어 빈도수, term frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지 나타내는 값
DF(Document Frequency)는 특정 단어가 나타난 문서의 수를 말하며, 이 값의 역수를 IDF(inverse document frequence)라고 한다.


TF-IDF = TF*IDF = TF*log((N – n)/n)

N : 전체 문서의 수
n : 단어가 포함된 문서의 수
IDF = log((N – n)/n)


예를 들어서

전체 문서가 100,000,000 존재한다.
gift 라는 단어가 DOC1에 2번, DOC2에 1번 그리고 존재하는 문서는 300,000
card 라는 단어가 DOC1에 3번, DOC2에 6번 그리고 존재하는 문서는 400,000
gift card 라는 단어를 입력했을 때 DOC1, DOC2 문서간의 유사도를 구해본다.

먼저
DOC1 문서
gift  tf = 2 ,  IDF = log((100,000,000 - 300,000) / 300,000 ) = 5.0431
card  tf = 3 ,  IDF = log((100,000,000 - 400,000) / 400,000 ) = 7.1886

 ITEM TERM
TF
N
n
 IDF TF-IDF
 DOC1 gift
2
100,000,000
300,000
 2.5216
 5.0431
 DOC1  card  3 100,000,000
 400,000  2.3962  7.1886
 DOC2 gift
 1  100,000,000 300,000
 2.5216  2.5216
 DOC2  card  6  100,000,000  400,000
 2.3962  14.3772
 Query  gift  1  100,000,000  300,000  2.5216  2.5216
 Query  card  1  100,000,000   400,000  2.3962  2.3962

위와 같이 TF-IDF 결과값이 나왔으며 이를 좌표를 표현하면 아래와 같다.



                            



QUERY와 DOC1의 계산
DOC1·Query = 5.0431*2.5216 + 7.1886*2.3962 = 29.94200
|DOC1|=(5.0431*5.0431 + 7.1886*7.1886) 1/2 = (25.4329 + 51.6760)1/2 = 8.78117
|Query |=(2.5216*2.5216 + 2.3962*2.3962) 1/2 = (6.3585 + 5.7418) 1/2 = 3.47854
Cosine angle=DOC1·Query/(|DOC1|*|Query |)=29.94200/(8.78117*3.47854)= 0.9802
                         

QUERY와 DOC2의 계산
DOC2·Query = 2.5216*2.5216 + 14.3772*2.3962 = 40.8091
|DOC2|=(2.5216*2.5216 + 14.3772*14.3772) 1/2 = (6.3585 + 206.7039) )1/2 = 14.5967
|Query |=(2.5216*2.5216 + 2.3962*2.3962) 1/2 = (6.3585 + 5.7418) 1/2 = 3.47854
Cosine angle=DOC2·Query/(|DOC2|*|Query |)=40.8091/(14.5967*3.47854) =0.80372

DOC1 이 입력된 gift card 쿼리에 대해 DOC2보다 정확도가 높은 걸로 나온다.


제가 작성한 내용은 아래 링크된 문서를 필요한 부분만 옮겼기 때문에
정확한 내용은 아래 링크를 확인하시면 됩니다.

http://www.miislita.com/information-retrieval-tutorial/cosine-similarity-tutorial.html







728x90

작성자

Posted by 일퍼센트

관련 글

댓글 영역