Python Gensim:如何使用LDA模型计算文档相似度?
gensim
nlp
python
8
0

我有一个训练有素的LDA模型,我想从训练了我的模型的语料库中计算出两个文档之间的相似性得分。在研究了所有Gensim教程和功能之后,我仍然无法解决。有人可以给我提示吗?谢谢!

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

取决于要使用的相似性指标。

余弦相似度普遍有用并内置

sim = gensim.matutils.cossim(vec_lda1, vec_lda2)

Hellinger距离对于概率分布(例如LDA主题)之间的相似性很有用:

import numpy as np
dense1 = gensim.matutils.sparse2full(lda_vec1, lda.num_topics)
dense2 = gensim.matutils.sparse2full(lda_vec2, lda.num_topics)
sim = np.sqrt(0.5 * ((np.sqrt(dense1) - np.sqrt(dense2))**2).sum())
收藏
评论

不知道这是否有帮助,但是当使用实际文档作为查询时,我设法在文档匹配和相似性方面获得了成功的结果。

dictionary = corpora.Dictionary.load('dictionary.dict')
corpus = corpora.MmCorpus("corpus.mm")
lda = models.LdaModel.load("model.lda") #result from running online lda (training)

index = similarities.MatrixSimilarity(lda[corpus])
index.save("simIndex.index")

docname = "docs/the_doc.txt"
doc = open(docname, 'r').read()
vec_bow = dictionary.doc2bow(doc.lower().split())
vec_lda = lda[vec_bow]

sims = index[vec_lda]
sims = sorted(enumerate(sims), key=lambda item: -item[1])
print sims

语料库中所有文档与用作查询的文档之间的相似性得分将是每个sim卡的第二个索引。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号