2013-07-15 8 views
6

Das lda.show_topics Modul aus dem folgenden Code druckt nur die Verteilung der Top 10 Wörter für jedes Thema, wie drucke ich die vollständige Verteilung aller Wörter im Korpus aus?Wie wird die vollständige Verteilung von Wörtern in einem LDA-Thema in Gensim ausgedruckt?

from gensim import corpora, models 

documents = ["Human machine interface for lab abc computer applications", 
"A survey of user opinion of computer system response time", 
"The EPS user interface management system", 
"System and human system engineering testing of EPS", 
"Relation of user perceived response time to error measurement", 
"The generation of random binary unordered trees", 
"The intersection graph of paths in trees", 
"Graph minors IV Widths of trees and well quasi ordering", 
"Graph minors A survey"] 

stoplist = set('for a of the and to in'.split()) 
texts = [[word for word in document.lower().split() if word not in stoplist] 
     for document in documents] 

dictionary = corpora.Dictionary(texts) 
corpus = [dictionary.doc2bow(text) for text in texts] 

lda = models.ldamodel.LdaModel(corpus_tfidf, id2word=dictionary, num_topics=2) 

for i in lda.show_topics(): 
    print i 
+0

Sie könnten die Hacky Sache, und das LDA-Paket in Website-Paketen ändern (oder wo auch immer Sie es auf Ihrem Computer gespeichert ist), sie alle drucken oder kopieren, ihren Code für sie in Ihr Programm, und ändern um alle anstelle von 10 auszudrucken. – debianplebian

+0

habe gerade die Antwort gefunden, sie ist irgendwie in der API versteckt =). Siehe Antwort unter – alvas

+0

gute Arbeit finden Sie Ihre eigene Antwort. – debianplebian

Antwort

8

Es ist eine Variable Aufruf topn in show_topics() wo Sie die Anzahl der Top-N Wörter spezifizieren, können Sie aus den Wörtern Verteilung über jedes Thema benötigen. siehe http://radimrehurek.com/gensim/models/ldamodel.html

Also statt der Standardeinstellung lda.show_topics(). Sie können für jedes Thema die len(dictionary) für die vollen Wort Distributionen verwenden:

for i in lda.show_topics(topn=len(dictionary)): 
    print i 
3

Es gibt zwei variable Anruf num_topics und num_words in show_topics(), für num_topics Reihe von Themen, Rückkehr num_words wichtigsten Wörter (10 Wörter pro Thema, durch Standard). siehe http://radimrehurek.com/gensim/models/ldamodel.html#gensim.models.ldamodel.LdaModel.show_topics

So können Sie die len(lda.id2word) für die vollständige Wörter Distributionen für jedes Thema, und die lda.num_topics für alle Themen in Ihrem lda-Modell verwenden.

for i in lda.show_topics(formatted=False,num_topics=lda.num_topics,num_words=len(lda.id2word)): 
    print i 
+0

Bitte erläutern Sie Ihre Antwort. SO existiert nicht nur, um Fragen zu beantworten, sondern um Menschen beim Lernen zu helfen. Code Only-Antworten werden als minderwertig eingestuft – Machavity

0

Der folgende Code wird Ihre Wörter sowie ihre Wahrscheinlichkeit drucken. Ich habe Top 10 Wörter gedruckt. Sie können num_words = 10 ändern, um mehr Wörter pro Thema zu drucken.

for words in lda.show_topics(formatted=False,num_words=10): 
    print(words[0]) 
    print("******************************") 
    for word_prob in words[1]: 
     print("(",dictionary[int(word_prob[0])],",",word_prob[1],")",end = "") 
    print("") 
    print("******************************") 
Verwandte Themen