预测新的bow_corpus LDA Mallet Python

问题描述

我正在使用文档样本运行LDA Mallet。我建立bow_corpus并运行算法。一切正常。然后,我尝试在不同的集合上运行算法以获得预测。我执行相同的步骤来构建new_bow_corpus(从上面复制/粘贴),但是出现以下错误

enter image description here

你碰巧知道发生了什么吗?

解决方法

免责声明:没有您的代码,很难重现您的确切问题。

KeyError表示您的id2token映射不包含键625。 这意味着第二个语料库中至少有一个令牌不包含用于训练的第一个语料库。

可能是您提到的那样

从上方复制/粘贴[您的代码]

您使用不同的Dictionary创建了第二个单词袋(BOW)语料库。当您尝试在该语料库上进行预测时,您的token-> id映射(或分别为id-> token映射)与用于学习LDA模型的映射不匹配。 换句话说,您的主题模型不知道测试BOW语料库中使用的术语。

您需要使用同一词典进行培训和测试,才能成功创建预测。

from gensim.corpora.dictionary import Dictionary

dictionary = Dictionary(training_texts)
train_corpus = [dictionary.doc2bow(text) for text in training_texts]
test_corpus = [dictionary.doc2bow(text) for text in test_texts]