tf idf不相等,当两个文档中的tf相同时
Tf Idf not equal, when tf in two documents is the same
先说一下我对TfIdf度量的理解:
TF(t) =(术语 t 在文档中出现的次数)/(文档中的术语总数)
IDF(t) = log_e(文档总数/包含词条t的文档数)
my source, and good explanation
所以语料库中的每个单词都有 1 个 Idf 度量。
语料库中每个单词和每个文档的 Tf 'exists'。
假设一个词在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不一样?我的谬误在哪里?
它们是不同的,因为您按 weightTf 对 DTM 进行加权,对 weightTfIdf 对 DTM2 进行加权。
因为 weightTfIdf 是标准化的,这会影响结果。通常,归一化意味着将 1 加到分母上以防止出现被零除的问题。
先说一下我对TfIdf度量的理解:
TF(t) =(术语 t 在文档中出现的次数)/(文档中的术语总数)
IDF(t) = log_e(文档总数/包含词条t的文档数)
my source, and good explanation
所以语料库中的每个单词都有 1 个 Idf 度量。
语料库中每个单词和每个文档的 Tf 'exists'。
假设一个词在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不一样?我的谬误在哪里?
它们是不同的,因为您按 weightTf 对 DTM 进行加权,对 weightTfIdf 对 DTM2 进行加权。
因为 weightTfIdf 是标准化的,这会影响结果。通常,归一化意味着将 1 加到分母上以防止出现被零除的问题。