将文档添加到gensim模型

时间:2017-08-15 16:12:29

标签: python-3.x gensim lsa

我有一个包装计算LSI相似性所需的各种对象的类:

null

我现在想要在类中添加一个函数,以允许将文档添加到语料库并相应地更新模型。 我找到了class SimilarityFiles: def __init__(self, file_name, tokenized_corpus, stoplist=None): if stoplist is None: self.filtered_corpus = tokenized_corpus else: self.filtered_corpus = [] for convo in tokenized_corpus: self.filtered_corpus.append([token for token in convo if token not in stoplist]) self.dictionary = corpora.Dictionary(self.filtered_corpus) self.corpus = [self.dictionary.doc2bow(text) for text in self.filtered_corpus] self.lsi = models.LsiModel(self.corpus, id2word=self.dictionary, num_topics=100) self.index = similarities.MatrixSimilarity(self.lsi[self.corpus]) dictionary.add_documents,但有两件事我不清楚:

  1. 当您最初创建LSI模型时,函数接收的参数之一是model.add_documents。更新模型时,如何告诉它使用更新的字典?它实际上是不必要的,还是会产生影响?
  2. 如何更新索引?它从documentation看起来如果我使用id2word=dictionary类而不是Similarity类,我可以将文档添加到索引中,但我看不到这样的功能MatrixSimilarity。如果我理解正确的话,如果我的输入语料库包含密集向量,那么MatrixSimilarity会更好(这是因为我使用LSI模型)。我是否必须将其更改为MatrixSimilarity才能更新索引?或者,相反,创建此索引的复杂性是什么?如果它无关紧要,我应该用我更新的语料库创建一个新索引,如下所示:
  3. 代码:

    Similarity

    感谢。 :)

1 个答案:

答案 0 :(得分:0)

似乎不会更新字典..它只是添加一个新文档而不是新功能..所以您应该采用其他方法。.
我遇到了同样的问题,发现这个issue on the gensim githup有用