2016-11-17 5 views
0

나를 먼저 TFIDF 측정에 대한 이해 보겠습니다 때 :Tf를 IDF 동일하지,이 개 문서 TF는 같은

TF (t) = (배 용어 t의 번호가 문서에 표시)/(총 문서 내의 용어)의 수

IDF (t) = log_e (총 문서 개수/그것에 용어 t)

my source, and good explanation

그래서 모든 단어 1 개 IDF 측정치가있는 문서 개수 코퍼스에서.

그러나 Tf는 모든 단어와 코퍼스의 모든 문서에 '존재'합니다.

단어가 2 개의 문서에서 Tf = 1이라고 가정하면 TfIdf는 두 단어 모두에 대해 동일해야합니다. 맞습니까?

library(tm) 

data("crude") 

DTM <- DocumentTermMatrix(crude,control=list(weighting=weightTf)) 
DTM2 <- DocumentTermMatrix(crude,control=list(weighting=weightTfIdf)) 

M <- as.matrix(DTM) 
M2 <- as.matrix(DTM2) 

    > M2[7:15,7:9] 
    Terms 
Docs "if  "is  "may 
    237 0 0.00000000 0.00000000 
    242 0 0.00000000 0.00000000 
    246 0 0.00000000 0.00000000 
    248 0 0.01153447 0.01500669 
    273 0 0.00000000 0.00000000 
    349 0 0.00000000 0.00000000 
    352 0 0.03650470 0.00000000 
    353 0 0.00000000 0.00000000 
    368 0 0.00000000 0.00000000 
> M[7:15,7:9] 
    Terms 
Docs "if "is "may 
    237 0 0 0 
    242 0 0 0 
    246 0 0 0 
    248 0 1 1 
    273 0 0 0 
    349 0 0 0 
    352 0 1 0 
    353 0 0 0 
    368 0 0 0 

왜 TFIDF가 동일하지 않습니다 :

은 여기, R 내 코드를이 체크 아웃하고 싶어? 내 잘못은 어디 있니?

답변

0

DTM에 가중치를 적용했기 때문에 서로 다릅니다. & DTM2 by weightTfIdf.

weightTfIdf가 정상화 되었기 때문에 결과에 영향을 미칩니다. 일반적으로 정규화는 0을 기준으로 나누기를 방지하기 위해 분모에 1을 더하는 것을 의미합니다.