python-3.x - 将文档添加到 gensim 模型

标签 python-3.x gensim lsa

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

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_documentsmodel.add_documents,但有两件事我不清楚:

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

代码:

self.dictionary.add_documents(new_docs)    # new_docs is already after filtering stop words
new_corpus = [self.dictionary.doc2bow(text) for text in new_docs]
self.lsi.add_documents(new_corpus)
self.index = similarities.MatrixSimilarity(self.lsi[self.corpus])

谢谢。 :)

最佳答案

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

关于python-3.x - 将文档添加到 gensim 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696948/

相关文章:

python - 如何在 2D 向量上使用 reshape() 函数

Python 如何通过使用 oauthlib 的帐户身份验证获取 ID_Token 以与 Open ID Connect 一起使用

python - 在解析 wiki 语料库时禁用 Gensim 删除标点符号等

sparse-matrix - 稀疏矩阵的 pLSA 实现

c++ - Windows 密码过滤器 DLL 未加载

r - 术语文档矩阵中的 SVD 没有给我想要的值

python-3.x - 使用 Pandas 和 Python3 获取特定时间列的值

python - 使用 Pandas 从复杂的字典/列表中创建 DataFrame

python - 如何使用 Gensim 加载 Word2vec 而不会出现 AttributeError?

python - gensim 和余弦相似度的文本相似度