gensim的LSA模型使用哪个tf-idf公式?

时间:2017-12-01 17:36:26

标签: gensim tf-idf latent-semantic-indexing latent-semantic-analysis

有许多不同的方法可以计算tf和idf。我想知道gensim在其LSA模型中使用了哪个公式。我一直在浏览它的源代码lsimodel.py,但对于我来说,创建文档术语矩阵的位置并不明显(可能是因为内存优化)。

one LSA paper中,我读到文档术语矩阵的每个单元格是该文档中该单词的对数频率,除以该单词的熵:

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}|)

我还注意到有一个question on how the TfIdfModel itself is implemented in gensim。但是,我没有看到lsimodel.py导入TfIdfModel,因此只能假设lsimodel.py有自己的tf-idf实现。

1 个答案:

答案 0 :(得分:1)

据我了解,lsimodel.py没有预先形成tf-idf编码步骤。您可以在gensim的API documentation中找到一些详细信息 - 这是一个专用的tf-idf模型,可用于编码后来可以输入LSA模型的文本。从tfidfmodel.py source code看来,后面列出了您列出的两个tf-idf定义。