【问题标题】:Tf Idf not equal, when tf in two documents is the sametf Idf不相等,当两个文档中的tf相同时
【发布时间】:2017-03-31 23:47:00
【问题描述】:

先说说我对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 不一样?我的谬误在哪里?

【问题讨论】:

    标签: r tm tf-idf


    【解决方案1】:

    它们是不同的,因为您使用 weightTf 对 DTM 进行加权,而使用 weightTfIdf 对 DTM2 进行加权。

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

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 2017-04-07
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      相关资源
      最近更新 更多