【问题标题】:doc2id mapping in gensimgensim 中的 doc2id 映射
【发布时间】:2016-12-12 02:58:16
【问题描述】:

我正在使用 gensim 构建 LSI 语料库,然后按照 gensim 教程(tut1tut2 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


    【解决方案1】:

    您有一个文档语料库,我猜它是一个文本列表,还有一个相似性列表,其中包含文档 ID。因此,您可以使用以下方式将 id 映射到文本:

    corpus = ['a','b','c']
    sims = [(0,0.1),(1,0.2),(2,0.3)]
    labeled_sims = [(corpus[id],sim) for id,sim in sims]
    

    将返回:

    [('a',0.1),('b',0.2),('c',0.3)]
    

    或者您也可以在排序之前这样做:

    labeled_sims = zip(corpus,sims)
    

    将返回:

    [('a',(0,0.1)),('b',(1,0.2)),('c',(2,0.3))]
    

    可以进一步排序:

    labeled_sims = sorted(enumerate(labeled_sims), key=lambda item: -item[1][1])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2020-06-13
      • 1970-01-01
      • 2020-01-31
      • 2018-12-21
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多