如何从LDA模型创建wordcloud



根据?gensim.models.ldamodel的文档,我想训练一个ldamodel,并(从这个SO答案中创建一个worcloud(。我正在使用以下两个来源的代码:

from gensim.test.utils import common_texts
from gensim.corpora.dictionary import Dictionary
import gensim
import matplotlib.pyplot as plt
from wordcloud import WordCloud
common_dictionary = Dictionary(common_texts) # create corpus
common_corpus = [common_dictionary.doc2bow(text) for text in common_texts]
lda = gensim.models.LdaModel(common_corpus, num_topics=10) # train model on corpus
for t in range(lda.num_topics):
plt.figure()
plt.imshow(WordCloud().fit_words(lda.show_topic(t, 200)))
plt.axis("off")
plt.title("Topic #" + str(t))
plt.show()

然而,我在plt.imshow(...)线上得到了一个AttributeError: 'list' object has no attribute 'items'

有人能帮我吗?(类似问题的答案对我来说一直不起作用,我正试图用它编译一个最小的管道。(

从文档中,方法WordCloud.fit_words()需要一个字典作为输入。

您的错误似乎突出显示它正在查找属性'items',通常是字典的属性,但却找到了list对象。

所以问题是:lda.show_topic(t, 200)返回的是一个列表,而不是一个字典。使用dict()进行投射!

最后:

plt.imshow(WordCloud().fit_words(dict(lda.show_topic(t, 200))))

最新更新