2012-12-17 418 views
1

我已经使用gensim在text_corpus上训练了LDA模型。如何在gensim中的LDA模型中获得主题编号

>lda_model = gensim.models.ldamodel.LdaModel(text_corpus, 10) 

现在,如果一个新的文本文档text_sparse_vector必须推断我要做

>lda_model[text_sparse_vector] 
[(0, 0.036479568280206563), (3, 0.053828073308160099), (7, 0.021936618544365804), (11, 0.017499953446152686), (15, 0.010153090454090822), (16, 0.35967516223499041), (19, 0.098570351997275749), (26, 0.068550060242800928), (27, 0.08371562828754453), (28, 0.14110945630261607), (29, 0.089938130046832571)] 

但我怎么得到每个相应主题的词分布。例如,我如何知道话题编号16的前20个单词?

gensim.models.ldamodel.LdaModel类具有名为show_topics(topics = 10,topn = 10,log = False,formatted = True)的方法,但文档说它显示随机选择的主题列表。

有没有办法链接或打印我可以将推断出的主题数字映射到单词分布?

+0

您可以使用'show_topic()'。看到这里:https://github.com/piskvorky/gensim/blob/develop/gensim/models/ldamodel.py#L570-575 我认为排序是任意的,但我可能是错的。 你想要做什么? – Karsten

回答

5
lda.print_topic(x, topn=20) 

将让你的排名前20位的特点为主题X

0

或者,如果你有K主题,然后:

print(str(["TopiC#"+str(k)+":\n" + str(lda.show_topic(k,topn=20)) for k in range(K)]))

将让你难看,但始终有序输出。

相关问题