from nltk.tokenize import RegexpTokenizer
from stop_words import get_stop_words
from gensim import corpora, models
import gensim
import os
from os import path
from time import sleep
import matplotlib.pyplot as plt
import random
from wordcloud import WordCloud, STOPWORDS
tokenizer = RegexpTokenizer(r'\w+')
en_stop = set(get_stop_words('en'))
with open(os.path.join('c:\users\kaila\jobdescription.txt')) as f:
Reader = f.read()
Reader = Reader.replace("will", " ")
Reader = Reader.replace("please", " ")
texts = unicode(Reader, errors='replace')
tdm = []
raw = texts.lower()
tokens = tokenizer.tokenize(raw)
stopped_tokens = [i for i in tokens if not i in en_stop]
tdm.append(stopped_tokens)
dictionary = corpora.Dictionary(tdm)
corpus = [dictionary.doc2bow(i) for i in tdm]
sleep(3)
ldamodel = gensim.models.ldamodel.LdaModel(corpus, num_topics=8, id2word = dictionary)
topics = ldamodel.print_topics(num_topics=8, num_words=200)
for i in topics:
print(i)
wordcloud = WordCloud().generate(i)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
問題出在雲端。我無法爲8個主題中的每一個獲得單詞雲。我想要一個輸出爲8個主題提供8個字的雲。 如果有人可以幫我解決這個問題,那將會很棒。如何打印lda主題模型和每個主題的文字雲
非常感謝。這當然解決了我的問題。我很抱歉,我現在無法贊成,因爲我沒有獲得這樣的聲譽 – Raj
我實際上已經挖掘了jobsdb數據並將其用於分析。抓取的數據在一個用於主題建模的文件下編譯。 – Raj
感謝您的回答。然而,在最新版本的wordcloud中,'fit_words'需要一個字典,而'lda.show_topic'返回一個元組列表。我不得不使用'plt.imshow'(WordCloud()。fit_words(dict(lda.show_topic(t,200))))'來使它工作。 –