首先让我理解一下TfIdf措施:
TF(t)=(术语t出现在文档中的次数)/(文档中的术语总数)
IDF(t)= log_e(文件总数/含有期限t的文件数量)
my source, and good explanation
因此对于语料库中的每个单词都有1个Idf度量。
然而,Tf存在'对于每个单词和语料库中的每个文档。假设一个单词在2个文档中的Tf = 1,则两个单词的TfIdf应该相同,对吗?
我想在R中查看这个,这里是我的代码:
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不一样?我的谬误在哪里?
答案 0 :(得分:0)
它们是不同的,因为您按权重加权DTM和&amp; DTM2由weightTfIdf。
因为weightTfIdf被标准化,这将影响结果。通常,标准化意味着将1加到分母上以防止除以零问题。