【问题标题】:How can I initialize a gensim LDA topic model?如何初始化 gensim LDA 主题模型?
【发布时间】:2018-06-29 00:30:12
【问题描述】:

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

创建一个 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)

感谢您的帮助!

【问题讨论】:

  • 看来修改正确的可能是lda_model.state.sstats
  • 可以在不传递语料库的情况下初始化LdaModel,稍后调用更新see docs。它不适合你吗?
  • 是的,可以在不传递语料库的情况下创建对象。我想将主题初始化为某个状态。我正在尝试为此使用 lda_model.state.sstats,但似乎不支持这样做。

标签: python gensim topic-modeling


【解决方案1】:

在实践中,设置先验可能是比初始化优化器更好的选择。

有两个超参数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 的向量,可用于 对单词分布施加(用户定义的)不对称先验。它 还支持特殊值“auto”,它学习不对称 优先于直接来自您的数据的单词。 eta 也可以是一个矩阵 shape num_topics x num_words,可用于强加不对称 基于每个主题的单词分布的先验(不能 从数据中学习)。

【讨论】:

  • 我不想设置之前的。我要初始化优化器。
  • @groceryheist 抱歉,答案对您没有帮助。既然您问“如何初始化 gensim LDA 主题模型”,我认为这可能是一个有效的答案。在您的原始帖子中没有关于初始化优化器的内容。出于兴趣,你这是什么意思?
  • Gensim 使用随机变分贝叶斯优化模型。该模型通过将在文档子集上计算的统计信息与当前模型状态合并来迭代更新。最终模型可能对初始模型状态敏感。默认情况下,gensim 将这些统计信息初始化为 0,但原则上它们可以设置为其他值。
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
相关资源
最近更新 更多