我正在尝试使用gensim's lda
模型。如果我使用给定语料库创建 lda 模型,然后我想使用包含第一个语料库中未看到的单词的新语料库更新它,我该怎么做?当我尝试只调用lda_model.update(new_corpus)
时,出现以下错误:
/Library/Python/2.7/site-packages/gensim/models/ldamodel.pyc in inference(self, chunk, collect_sstats)
361 Elogthetad = Elogtheta[d, :]
362 expElogthetad = expElogtheta[d, :]
-->363 expElogbetad = self.expElogbeta[:, ids]
364
365 # The optimal phi_{dwk} is proportional to expElogthetad_k * expElogbetad_w.
IndexError: index 57 is out of bounds for axis 1 with size 57
我用一个仅包含 57 个单词的语料库初始化了lda_model,所以这就是为什么我们看到大小57
绑定的原因。然后我想用更多单词的语料库调用更新,但这失败了。
我该如何解决这个问题?我希望能够用带有新单词的新语料库更新我的 lda 模型,这可能吗?
不可以,您必须使用相同的字典(单词与其整数 ID 之间的映射)进行训练、更新和推理。
这意味着您可以使用新文档更新模型,但不能使用新的单词类型更新模型。
查看 HashDictionary 类,它使用"哈希技巧"来解决此限制(但哈希技巧有其自身的警告)。