如何使用多个查询计算文档相似度?

问题描述 投票:0回答:2

我已经使用LDA模型(使用Gensim)实现了基于特定文档的类似文档。我想要做的下一件事是,如果我有多个文档,那么如何基于作为输入提供的多个文档获取类似文档。

我使用这个link实现了LDA

单个查询的示例代码 -

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

现在,如果我有另一个文档,那么如何实现它。

python gensim lda
2个回答
0
投票

您可以使用lda.update(corpus_new)使用其他文档更新现有的LDA模型。

更多细节 - https://radimrehurek.com/gensim/models/ldamodel.html


0
投票

我想你正在寻找的是这段代码。

newData= [dictionary.doc2bow(text) for text in texts] #Where text is new data
newCorpus= lsa[vec_bow_jobs] #this is new corpus

sims=[]
for similarities in index[newCorpus]:
    sims.append(similarities)

#to get similarity with each document in the original corpus
sims=pd.DataFrame(np.array(sims)).transpose() 

然而,使用LDA模型测量相似性时,余弦相似性不是最好的。寻找Jensen Shanon距离的实施。我找到了这个代码,但没有让它在我的情况下工作。 Lda similarity with Jensen Shanon Distance

© www.soinside.com 2019 - 2024. All rights reserved.