【问题标题】:In tf-idf why do we normalize by document frequency and not average term frequency across all documents in the corpus?在 tf-idf 中,为什么我们按文档频率而不是语料库中所有文档的平均词频进行归一化?
【发布时间】:2016-05-31 04:52:03
【问题描述】:

平均词频是该词在其他文档中出现的平均频率。直观地说,我想比较它相对于语料库中其他文档的出现频率。

一个例子:

  • d1有100次“set”这个词,d2有1次“set”这个词,d3有1次“set”这个词,d4-N没有set这个词
  • d1 出现“theory”这个词 100 次,d2 出现“theory”这个词 100 次,d3 出现“theory”这个词 100 次,d4-N 没有设置这个词

文档 1 对单词“set”和单词“theory”具有相同的 tf-idf,即使单词 set 对 d1 来说比 theory 更重要。

使用平均词频可以区分这两个示例。 tf-iatf(逆平均词频)是一种有效的方法吗?对我来说,它会给我更重要的关键字,而不仅仅是“稀有”和“独特”的关键字。如果 idf 是“对这个词有多罕见的估计”,那么 iatf 不是更好的估计吗?实现起来似乎只是略微困难(尤其是在数据经过预处理的情况下)。

我正在考虑运行一个实验并手动分析每个度量中排名最高的关键字,但想先通过其他人的眼睛。

一个后续问题: 为什么 tf-idf 如此频繁地使用,而不是像这样可能更准确的替代方法? (如果这是一种有效的方法)。

更新: 进行了一个实验,我手动分析了几十个文档的分数和相应的热门词,似乎 iatf 和反向收集频率(我描述的标准方法)具有超级相似的结果。

【问题讨论】:

    标签: information-retrieval tf-idf


    【解决方案1】:

    Tf-idf 并不是要比较两个语料库中某个词在文档中的重要性。 而是为了区分文档中单词的重要性,相对于同一集合的其他文档中相同术语的分布(而不是跨集合)。

    您可以为您的案例应用的标准方法是:收集频率,cf(t),而不是文档频率,df(t)。

    cf(t) 衡量术语 t 在语料库中出现的次数。 cf(t) 除以总集合大小会给你概率 从集合中采样 t。

    然后您可以计算 tf(t,d) 和 cf(t) 值的线性组合,这为您提供了从文档或集合中采样术语 t 的概率。

    P(t,d) = \lambda P(t|d) + (1-\lambda) P(t|Collection)
    

    这被称为 Jelinek Mercer 平滑语言模型

    对于您的示例(让 lambda=0.5):

    Corpus 1: P("set",d1) = 0.5*100/100 + 0.5*100/102
    
    Corpus 2: P("set",d1) = 0.5*100/100 + 0.5*100/300
    

    显然,语料库 2 的 P("set",d1) 比语料库 1 的 P("set",d1) 少(几乎三分之一)。

    【讨论】:

    • 作为对它的回应不是“比较两个语料库”,我完全理解这一点。我这个例子的意思是 tf-idf 没有在 d1 中为语料库 1 正义做“设置”这个词。与其他单词相比,它的 tf-idf 分数会较低,因为我们只查看该单词是否在其他文档中至少出现一次。我稍微改变了我的问题以解决这种困惑。
    • 也肯定会看看收集频率。似乎这可能是我正在寻找的:)
    猜你喜欢
    • 2019-10-18
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2015-11-27
    • 2020-01-06
    • 2015-01-19
    • 2015-12-12
    相关资源
    最近更新 更多