【发布时间】:2016-12-12 02:58:16
【问题描述】:
我正在使用 gensim 构建 LSI 语料库,然后按照 gensim 教程(tut1,tut2 n tut3)应用查询相似度
我的问题是,当我尝试计算查询相似度时,如下面的代码所示,我得到了 (docID, simScore) 元组形式的结果。
我需要使用该 docID 来检索文档的 字符串表示。 (类似于corpora.Dictionary中的token2id映射)
谷歌搜索,我找不到任何有用的东西
我的搜索代码
def search(self):
#Load necessary information
dictionary = corpora.Dictionary.load('dictionary.dict')
corpus_tfidf = corpora.MmCorpus('corpus.mm') # comes from the first tutorial, "From strings to vectors"
#print(corpus_tfidf)
#Generate LSI model
#lsi = models.LsiModel(corpus, id2word=dictionary, num_topics=2)
lsi = LsiModel(corpus_tfidf,num_topics=2)
#construct index
index = similarities.MatrixSimilarity(lsi[corpus_tfidf]) # transform corpus to LSI space and index it
#Construct query vector
doc = "Human machine interface for lab abc computer applications"
vec_bow = dictionary.doc2bow(doc.lower().split())
vec_lsi = lsi[vec_bow] # convert the query to LSI space
#Calcualte similarity
sims = index[vec_lsi] # perform a similarity query against the corpus
sims = sorted(enumerate(sims), key=lambda item: -item[1])
print(sims) # print sorted (document number, similarity score) 2-tuples
结果样本
[(1, 0.9962855), (4, 0.99420911), (2, 0.98064679), (3, 0.97580492), (0, 0.9755646), (8, 0.34740543), (6, 0.1566827), (7, 0.15566549), (5, 0.13825497)]
【问题讨论】:
标签: python similarity gensim