2016-11-04 48 views
0

我正在做一些報紙文章的主題建模,並在Python3中使用gensim實現了LDA。現在我想爲每個主題創建一個詞雲,每個主題使用前20個詞。我知道我可以打印這些文字,並保存LDA模型,但是有什麼辦法可以保存每個主題的頂部單詞,我可以進一步使用它來生成單詞雲?如何從Python中的LDA模型生成詞雲?

我試圖谷歌,但找不到任何相關信息。任何幫助表示讚賞。

+0

@JulienBernu是的,我有。模型對象具有主題的屬性,而不是每個主題的單詞。沒有概念上的困難,我只是不知道如何將這些單詞提取到另一個變量中。 –

回答

2

你可以使用Gensim內置的方法show_topic的LDA模型TOPN話。

lda = models.LdaModel.load('lda.model') 

for i in range(0, lda.num_topics): 
    with open('output_file.txt', 'w') as outfile: 
     outfile.write('{}\n'.format('TopiC#' + str(i + 1) + ': ')) 
     for word, prob in lda.show_topic(i, topn=20): 
      outfile.write('{}\n'.format(word.encode('utf-8'))) 
     outfile.write('\n') 

這將寫有類似格式此文件:

TopiC#69: 
pet 
dental 
tooth 
adopt 
animal 
puppy 
rescue 
dentist 
adoption 
animal 
shelter 
pet 
dentistry 
vet 
paw 
pup 
patient 
mix 
foster 
owner 

TopiC#70: 
periscope 
disneyland 
disney 
snapchat 
brandon 
britney 
periscope 
periscope 
replay 
britneyspear 
buffaloexchange 
britneyspear 
https 
meerkat 
blab 
periscope 
kxci 
toni 
disneyland 
location 

您可能會或可能不會需要調整這個你的需求,即產量排名前20位的單詞的列表,而不是輸出它到一個文本文件。

在這個崗位的答案給出瞭如何使用原始文本創建字雲一個很好的解釋。 How do I print lda topic model and the word cloud of each of the topics

0

有什麼辦法可以保存每個主題的熱門詞彙嗎?

是的,有。 jLDADMM輸出每個主題的熱門話題。在version 1.0中,只有頂級主題詞被寫入頂級詞輸出文件,而沒有給出主題的概率。