0

计算 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.pyimporting TfIdfModel,因此只能假设它lsimodel.py有自己的 tf-idf 实现。

4

1 回答 1

1

据我了解,lsimodel.py不会执行 tf-idf 编码步骤。您可能会在 gensim 的API 文档中找到一些详细信息- 有一个专用的 tf-idf 模型,可用于对文本进行编码,稍后可以将其输入 LSA 模型。从tfidfmodel.py 源代码看来,您列出的 tf-idf 的两个定义中的后者被遵循。

于 2017-12-14T03:00:16.463 回答