为什么 Lucene IDF 有一个看似额外的 +1?

机器算法验证 信息检索 tf-idf
2022-03-18 20:01:41

来自Lucene 文档

IDF=1+log(numDocsdocFreq+1)

在其他参考资料(即wikipedia)中,IDF 通常计算为log(numDocsdocFreq)或者log(numDocsdocFreq+1)避免跳水0。

我也意识到 Lucene 使用x而不是log(x)用于计算 TF,但我的理解是这只是一个首选转换,可能是为了避免log(0).

任何人都可以解释 IDF 术语中的额外 +1 吗?

1个回答

所有 TF-IDF 加权方案都只是启发式方法,以给予不寻常的术语更多的权重。我不确定 TF-IDF 方案背后通常有一个坚实的统计基础(参见参考资料 1),除了观察到 TF-IDF 往往比简单的字数统计产生更好的结果。由于结果的质量首先是 TF-IDF 的主要(唯一?)理由,因此有人可能会争辩说,尝试使用 +1 和不使用 +1 的方法并选择最好的方法就可以了。

如果我正确地阅读了这个sckit 学习线程,看来您不是第一个提出关于将 IDF 分数加 1 的类似问题的人。关于该线程的共识是 +1 也是非标准行为。我只是略读了一下,但该线程似乎没有包含 +1 的响亮认可或理由。

所以选择 +1 具有将所有 IDF 值的下限置于 1 而不是 0 的效果。这与添加e包含您语料库中每个单词的文档。不知道为什么这可能会有所帮助,但也许是在特定情况下。甚至可以处理一些参数cc+log(numDocsdocFreq+1)作为调整参数,为您提供更灵活的 IDF 方案系列c作为他们的下限。

当 IDF 的下界为零时,乘积term frequency×IDF对于某些术语可能为 0,因此这些术语在学习过程中根本没有权重;定性地说,这些术语非常常见,以至于它们没有提供与 NLP 任务相关的信息。当下限非零时,这些项将具有更大的影响。

  1. 约翰·拉弗蒂和盖伊·黎巴嫩。统计流形上的扩散核。” 机器学习杂志。2005 年。