1

我试图了解当我们对文本文档 usign 进行矢量化时如何计算 tf 和 idf 分数TfidfVectorizer

我正在理解 tf-idf 如何以两种方式排名,我在下面写。

  1. tf = 根据在此文档中重复的频率对单个单词进行排名,idf = 根据在 scikit 中内置的“类似数据库”的集合中重复的频率对相同的单词进行排名,学习几乎所有可能的单词都被收集到了。在这里,我假设这个内置数据库是语料库。
  2. tf = 对单个作品在当前正在被 tfidfvectorize 读取的文档的行中重复的频率进行排名,idf = 根据它在被矢量化的整个文档中重复的次数进行排名。

有人可以解释一下我的理解是否正确吗?如果不是,请纠正我理解的错误。

4

1 回答 1

1

确切的答案在sklearn 文档中:

...术语频率,即术语在给定文档中出现的次数,乘以idf分量,计算公式为

idf(t) = log[(1 + n_d) / (1+df(d,t))] + 1,

其中n_d是文档总数,df(d,t)是包含 term 的文档数t

所以你的第一项关于tf是正确的,但是这两项都错过了idf是逆文档频率的点,所以它是文档数量的比率(所有文档与至少包含一次该术语的文档)。该公式采用比率的对数以使比率函数更“平坦”,并且可以通过类参数进行调整。

于 2018-03-14T16:34:29.567 回答