逆文档频率公式



我在手动计算tf-idf值时遇到了麻烦。Python scikit总是输出不同于我预期的值。

我一直在读

idf(term) =  log(# of docs/ # of docs with term)

如果是这样,如果没有相关文档,你不会得到一个除以零的错误吗?

为了解决这个问题,我读到你做了

log (# of docs / # of docs with term + 1 )

但是如果这个词出现在每个文档中,你得到log (n/n + 1)这是消极的,这对我来说真的没有意义。

我没有得到什么?

你描述的技巧实际上被称为拉普拉斯平滑(或加法,或加一平滑),并假设将相同的和添加到分数的另一部分-在你的情况下是分母,在原始情况下是分母。

换句话说,你应该在文档的总数上加1:

log (# of docs + 1 / # of docs with term + 1)

顺便说一句,通常使用较小的sum会更好,特别是在语料库较小的情况下:

log (# of docs + a / # of docs with term + a)

其中a = 0.001或类似的

相关内容

  • 没有找到相关文章