了解 TF-IDF 分数

Understanding TF-IDF scores

我想了解当我们使用矢量化文本文档时如何计算 tf 和 idf 分数 TfidfVectorizer

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

  1. tf = 根据单个词在本文档中重复的频率对单个词进行排名,idf = 根据同一个词在 scikit 的内置 'database-like' 集合中重复的频率进行排名收集可能的单词。这里我假设这个内置数据库是语料库。
  2. tf = 对单个作品进行排名,它在 tfidfvectorize 当前正在读取的文档中的行中重复的频率和 idf = 根据它在被矢量化的整个文档中重复的次数进行排名。

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

确切答案在sklearn documentation:

... the term frequency, the number of times a term occurs in a given document, is multiplied with idf component, which is computed as

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

where n_d is the total number of documents, and df(d,t) is the number of documents that contain term t.

所以你的第一项关于 tf 是正确的,但是两项都没有指出 idf 是相反的 document 频率,因此它是 documents 数量的比率(所有文档与至少包含该术语一次的文档)。该公式采用比率的对数使比率函数更“平坦”,并且可以通过 class 参数进行调整。