Tf Idf不相等,当两个文件中的tf相同时

时间:2016-11-17 12:24:18

标签: r tm tf-idf

首先让我理解一下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不一样?我的谬误在哪里?

1 个答案:

答案 0 :(得分:0)

它们是不同的,因为您按权重加权DTM和&amp; DTM2由weightTfIdf。

因为weightTfIdf被标准化,这将影响结果。通常,标准化意味着将1加到分母上以防止除以零问题。

相关问题