逆文档频率公式

Inverse Document Frequency Formula

我在手动计算 tf-idf 的值时遇到了问题。 Python scikit 不断吐出与我预期不同的值。

我一直在读

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

如果是这样,如果没有包含该术语的文档,您是否会得到被零除的错误?

为了解决这个问题,我听说你这样做

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

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

我没有得到什么?

您描述的技巧实际上称为 Laplace smoothing(或加法,或加一平滑)并假设将相同的被加数添加到分数的另一部分 - 您的情况下的分母或分母在原来的情况下。

换句话说,您应该将文档总数加 1:

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

顺便说一句,通常使用较小的加数会更好,尤其是在小语料库的情况下:

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

其中 a = 0.001 或类似的东西。