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()
문제는 cloud라는 단어와 관련이 있습니다. 나는 8 개의 화제의 각각을 위해 낱말 구름을 얻을 수 없다. 8 가지 주제에 대해 8 단어 구름을 제공하는 결과를 원합니다. 누구든지이 문제와 관련하여 도움을받을 수 있다면 큰 도움이 될 것입니다.각 토픽의 lda 토픽 모델과 단어 클라우드를 인쇄하는 방법
감사합니다. 그것은 확실히 내 문제를 해결했습니다. 죄송 합니다만 지금은 업 그레 이드 할 수 없다는 평판을 얻지 못했습니다. – Raj
실제로 jobsdb 데이터를 스크랩하여 분석에 사용했습니다. 스크랩 된 데이터는 주제 모델링에 사용 된 하나의 파일 아래에 컴파일됩니다. – Raj
이 답변을 주셔서 감사합니다. 그러나 최신 버전의 wordcloud에서'fit_words'는 dict를 취하는 반면'lda.show_topic'는 튜플리스트를 반환합니다. 필자는'plt.imshow (WordCloud(). fit_words (dict (ld.show_topic (t, 200))))')라는 줄을 사용하여 작업을 시작해야했습니다. –