Gensim HDP 主题模型:如何在多遍语料库上进行训练?

Gensim HDP topic model: How to train on multiple passes of corpus?

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

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

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

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

例如,假设我的语料库有 1000000 个文档。 max_chunks 需要什么才能在我的语料库上进行训练,比如 3 遍。

有什么建议吗?非常感谢

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

部分

所以在你的情况下,如果你正在做 batch-LDAupdate_every 设置为 0,chunksize 设置为文档数,passes 设置为 3你应该对完整的语料库进行三遍。

online-LDA 的情况下,其中 update_every 设置为 1,您还可以使用 chunksize 来控制每次通过的小批量的大小。

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 个短文本)并且太统一,无法在其中找到主题。