Gensim HDP主题模型:如何训练语料库的多次传递?

时间:2017-03-28 21:29:11

标签: nlp gensim lda topic-modeling

Gensim的主题建模HDP模型(gensim.models.hdpmodel.HdpModel)有一个构造函数,它接受一个名为max_chunks的参数。

在文档中,它说max_chunks是模型将经过的块数,如果它大于提供的语料库中的块数,则训练将环绕语料库。

由于INFO日志警告我,似然函数一直在减少,我想我可能需要在语料库上多次传递才能收敛。

LDA模型为passes参数提供了在多次迭代中训练语料库的功能。我很难弄清楚HDP中的max_chunks如何映射到LDA中的passes

例如,假设我的语料库有1000000个文档。 max_chunks需要准确的是为了训练我的语料库中的3次传递。

有什么建议吗?非常感谢

2 个答案:

答案 0 :(得分:0)

chunksizepassesupdate_every选项可能有点令人困惑。帮助我的是link,特别是Chunksize, Passes, and Update_every

部分

因此,在您的情况下,如果您执行batch-LDA并将update_every设置为0并将chunksize设置为文档数量,并将passes设置为3,则应该在完整的语料库上获得三遍。

如果online-LDAupdate_every设置为1,您还可以使用chunksize来控制每次传递的小批量大小。

答案 1 :(得分:0)

class gensim.models.hdpmodel.HdpModel(corpus, id2word, max_chunks=None, max_time=None, chunksize=256, kappa=1.0, tau=64.0, K=15, T=150, alpha=1, gamma=1, eta=0.01, scale=1.0, var_converge=0.0001, outputdir=None, random_state=None)

我认为,如果您有1000000个文档,那么如果使用默认的块大小256,则必须具有max_chunks = 100000/256 * 3才能强制3次通过。

我也收到WARNING : likelihood is decreasing!消息,我认为我的语料太小(608个短文本),而且太统一了,无法在其中找到主题。