根据?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))))