如何初始化gensim LDA主题模型?

时间:2018-06-29 00:30:12

标签: python gensim topic-modeling

已建议使用词簇初始化主题模型可以导致更高质量的模型或更可靠的(一致的)推理。我说的是初始化优化器,而不是设置先验。这是一些代码来说明我想做什么:

创建一个LdaModel对象,但不要传递语料库。

lda_model =
LdaModel(
         id2word=id2word,
         num_topics=30,
         eval_every=10,
         pass=40,
         iterations=5000)

接下来,分配对象的某些属性,对应于将每个单词从一个主题绘制到自己构造的矩阵中的可能性。

lda_model.topics = my_topic_mat

然后适合语料库:

lda_model.update(corpus)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

实际上,设置优先级可能比初始化优化器更好。

有两个超参数alphaeta,其中alpha是一个 文档主题矩阵的“先验”,而eta是文档主题矩阵的先验 主题词矩阵。要影响主题中的单词概率,请尝试 传递eta作为附加参数:

lda_model = gensim.models.ldamodel.LdaModel(num_topics=30, id2word=id2word, eta=your_topic_mat, 
                                            eval_every=10, iterations=5000)

来自gensim docs

  

eta可以是主题/单词之上的对称优先级的标量   分布或形状为num_words的向量,可用于   在单词分布上强加(用户定义)不对称先验。它   还支持特殊值“自动”,即学习非对称   直接从您的数据中优先于单词。 eta也可以是   形状num_topics x num_words,可用于施加非对称   优先于每个主题的单词分布(不能是   从数据中学到的东西。