【问题标题】:Understanding TF-IDF scores了解 TF-IDF 分数
【发布时间】:2018-08-23 06:09:26
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python-3.x scikit-learn feature-extraction tf-idf tfidfvectorizer


    【解决方案1】:

    确切答案在sklearn documentation

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

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

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

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

    【讨论】:

    • 根据 idf(t) 的公式,如果我只有一个要矢量化的文档,那么所有单词的 idf(t) 分数都会为 1 吗?
    • 是的,如果只有一个文档,Idf 就没有意义。确切的值可能会有所不同,具体取决于公式,所有术语都相同
    • 所以,如果我对单个文档使用 Tfidfvectorizer,那么像“he”或“and”这样的常用词会有高分。我说的对吗?
    • 正确。您需要使用大量文档
    猜你喜欢
    • 2011-02-01
    • 2019-08-13
    • 2020-12-23
    • 2020-11-30
    • 2015-05-07
    • 1970-01-01
    • 2015-06-16
    • 2019-01-10
    • 2017-07-05
    相关资源
    最近更新 更多