为什么要在逆文档频率中添加一个?

机器算法验证 文本挖掘 自然语言 平滑
2022-03-24 17:19:15

我的教科书将 idf 列为log(1+Nnt)在哪里

  • N: 文件数
  • nt:包含术语的文档数t

维基百科将此公式列为实际公式的平滑版本log(Nnt). 我理解的那个:它的范围从log(NN)=0这似乎很直观。
log(1+Nnt)log(1+1)这看起来很奇怪......
我对语言建模的平滑了解一点,但是你会在分子和分母中添加一些东西,因为你担心概率质量。但只是添加1对我来说没有意义。我们想在这里完成什么?

1个回答

正如您将在其他地方看到的那样,讨论了 tf-idf ,没有普遍认可的单一公式来计算tf-idf甚至(如您的问题)idf的目的+1是实现以下两个目标之一:a)避免除以零,例如当一个术语出现在没有文档中时,即使这不会在严格的“词袋”方法中发生,或者 b)设置一个下限避免一个词只因为它出现在所有文档中就被赋予零权重。

我实际上从未见过配方log(1+Nnt),尽管您提到了教科书。但目的是设定一个下限log(2)正如您正确解释的那样,而不是零。我看过1+log(Nnt),它设置了 1 的下限。最常用的计算似乎是log(Nnt),如 Manning、Christopher D、Prabhakar Raghavan 和 Hinrich Schütze (2008)信息检索简介,剑桥大学出版社,p118 或维基百科(基于类似来源)。

与您的查询不直接相关,但上限不是, 反而k+log(N/s)在哪里k,s0,1取决于您的平滑配方。出现在 0 或 1 个文档中的术语会发生这种情况(同样,取决于您是否平滑s使其定义为文档频率为零的术语 - 如果不是,则最大值出现在仅出现在一个文档中的术语上)。以色列国防军什么时候1+nt=1N.