2017-10-03 5 views
2
modèle

I construit LDA en utilisant Gensim et je veux seulement obtenir les mots de sujet Comment puis-je obtenir les mots des seuls sujets sans probabilités et non IDs.words neComment accéder uniquement des mots sujet dans gensim

J'essayées Les fonctions print_topics() et show_topics() dans Gensim mais je ne peux pas obtenir des mots propres!

Ce code je

dictionary = corpora.Dictionary(doc_clean) 
doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean] 
Lda = gensim.models.ldamodel.LdaModel 
ldamodel = Lda(doc_term_matrix, num_topics=12, id2word = dictionary, passes = 100, alpha='auto', update_every=5) 
x = ldamodel.print_topics(num_topics=12, num_words=5) 
for i in x: 
    print(i[1]) 
    #print('\n' + str(i)) 

0.045*تعرض + 0.045*الماضية + 0.045*السنوات + 0.045*وءسرته + 0.045*لءحمد 
0.021*مصر + 0.021*الديمقراطية + 0.021*حرية + 0.021*باسم + 0.021*الحكومة 
0.068*المواطنة + 0.068*الطاءفية + 0.068*وانهيارات + 0.068*رابطة + 0.005*طبول 
0.033*عربية + 0.033*انكسارات + 0.033*رهابيين + 0.033*بحقوق + 0.033*ل 
0.007*وحريات + 0.007*ممنهج + 0.007*قواءم + 0.007*الناس + 0.007*دراج 
0.116*طبول + 0.116*الوطنية + 0.060*يكتب + 0.060*مصر + 0.005*عربية 
0.064*قيم + 0.064*وهن + 0.064*عربيا + 0.064*والتعددية + 0.064*الديمقراطية 
0.036*تضامنا + 0.036*الشخصية + 0.036*مع + 0.036*التفتيش + 0.036*الءخلاق 
0.052*تضامنا + 0.052*كل + 0.052*محمد + 0.052*الخلوق + 0.052*مظلوم 
0.034*بمواطنين + 0.034*رهابية + 0.034*لم + 0.034*عليهم + 0.034*يثبت 
0.035*مع + 0.035*ومستشار + 0.035*يستعيدا + 0.035*ءرهقهما + 0.035*حريتهما 
0.064*للقمع + 0.064*قريبة + 0.064*لا + 0.064*نهاية + 0.064*مصر 

J'ai essayé show_topics et il a donné la même sortie

y = np.array(ldamodel.show_topics(num_topics=12, num_words=5)) 
for i in y[:,1]: 
    #if i != '%d': 
    #print([str(word) for word in i]) 
    print(i) 

Si je l'ID de rubrique comment puis-je accéder à ses mots et d'autres informations

Merci à l'avance

Répondre

2

Je pense que l'extrait de code ci-dessous devrait vous donner une liste de tuples contenant le chaque sujet (tp) et la liste correspondante des mots (wd) dans ce sujet

x=ldamodel.show_topics(num_topics=12, num_words=5,formatted=False) 
topics_words = [(tp[0], [wd[0] for wd in tp[1]]) for tp in x] 

#Below Code Prints Topics and Words 
for topic,words in topics_words: 
    print(str(topic)+ "::"+ str(words)) 
print() 

#Below Code Prints Only Words 
for topic,words in topics_words: 
    print(" ".join(words))