计算 tf 和 idf 的方法有很多种。我想知道 gensim 在其 LSA 模型中使用了哪个公式。我一直在浏览它的源代码lsimodel.py
,但对我来说,创建文档术语矩阵的位置并不明显(可能是因为内存优化)。
在一篇 LSA 论文中,我读到文档术语矩阵的每个单元格都是该文档中该词的对数频率,除以该词的熵:
tf(w, d) = log(1 + frequency(w, d))
idf(w, D) = 1 / (-Σ_D p(w) log p(w))
然而,这似乎是 tf-idf 的一个非常不寻常的表述。更熟悉的 tf-idf 形式是:
tf(w, d) = frequency(w, d)
idf(w, D) = log(|D| / |{d ∈ D: w ∈ d}|)
我还注意到关于gensim 本身如何TfIdfModel
实现的问题。但是,我没有看到lsimodel.py
importing TfIdfModel
,因此只能假设它lsimodel.py
有自己的 tf-idf 实现。