【问题标题】:gensim lda model - calling update on a corpus with unseen wordsgensim lda 模型 - 用看不见的单词调用语料库的更新
【发布时间】:2017-06-05 16:31:15
【问题描述】:

我正在尝试使用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 模型,这可能吗?

【问题讨论】:

    标签: lda gensim


    【解决方案1】:

    不,您必须使用相同的字典(单词与其整数 id 之间的映射)进行训练、更新和推理。

    这意味着您可以使用新文档更新模型,但不能使用新词类型。

    查看HashDictionary 类,它使用“散列技巧”来解决此限制(但散列技巧有其自身的警告)。

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      相关资源
      最近更新 更多