LDA:主题模型gensim给出了相同的主题集



为什么我在gensim lda模型中得到相同的主题# words ?我使用了这些参数。我检查了语料库中没有重复的文档。

lda_model = gensim.models.ldamodel.LdaModel(corpus=MY_CORPUS,
id2word=WORD_AND_ID,
num_topics=4, 
minimum_probability=minimum_probability,
random_state=100,
update_every=1,
chunksize=100,
passes=10,
alpha='auto', # symmetric, asymmetric
per_word_topics=True)
<标题>结果
[
(0, '0.004*lily + 0.01*rose + 0.00*jasmine'),
(1, '0.005*geometry + 0.07*algebra + 0.01*calculation'),
(2, '0.003*painting + 0.001*brush + 0.01*colors'),
(3, '0.005*geometry + 0.07*algebra + 0.01*calculation')
]

注意:主题#1和#3是相同的。

每个主题都可能包含大量权重不同的单词。当一个主题被显示时(例如使用lda_model.show_topics()),你只会得到几个权重最大的单词。这并不意味着在剩余词汇表中主题之间没有差异。

您可以控制显示的单词数来检查剩余的权重:

show_topics(num_topics=4, num_words=10, log=False, formatted=True)

并更改num_words参数以包含更多的单词。

现在,还有一种可能性:

  • 主题的数量应该不同(例如3),
  • minimum_probability较小(您使用的值是什么?),
  • passes数量较大,
  • chunksize较小,
  • 语料库变大(大小是多少?)或者去掉停止词(你这样做了吗?)

我鼓励您尝试这些参数的不同值,以检查是否有任何组合效果更好。

您需要将alpha参数更改为50/i,其中i是您的主题编号,并使用eta参数。(eta = 0.1)

:

lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus,
id2word=id2word,
num_topics=4, 
update_every=1,
chunksize=100,
passes=10,
alpha=50/4,
eta = 0.1,     
per_word_topics=True)

最新更新