已建议使用词簇初始化主题模型可以导致更高质量的模型或更可靠的(一致的)推理。我说的是初始化优化器,而不是设置先验。这是一些代码来说明我想做什么:
创建一个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)
感谢您的帮助!
答案 0 :(得分:0)
实际上,设置优先级可能比初始化优化器更好。
有两个超参数alpha
和eta
,其中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,可用于施加非对称 优先于每个主题的单词分布(不能是 从数据中学到的东西。