2016-10-11 37 views
6

Mam nadzieję, że każdy dokument zostanie przypisany do jednego tematu za pomocą LDA. Teraz zdaję sobie sprawę, że to, co otrzymujesz, jest dystrybucją tematów z LDA. Jednak jak widać z ostatniego wiersza poniżej przypisuję go do najbardziej prawdopodobnego tematu.Przypisanie tematu Gensim LDA

Moje pytanie jest takie. Muszę uruchomić lda[corpus] po raz drugi, aby uzyskać te tematy. Czy istnieje inna wbudowana funkcja gensim, która da mi bezpośrednio te wektory przypisania tematów? Zwłaszcza, że ​​algorytm LDA przeszedł przez dokumenty, które mogły zapisać te zadania tematyczne?

# Get the Dictionary and BoW of the corpus after some stemming/ cleansing 
texts = [[stem(word) for word in document.split() if word not in STOPWORDS] for document in cleanDF.text.values] 
dictionary = corpora.Dictionary(texts) 
dictionary.filter_extremes(no_below=5, no_above=0.9) 
corpus = [dictionary.doc2bow(text) for text in texts] 

# The actual LDA component 
lda = models.LdaMulticore(corpus=corpus, id2word=dictionary, num_topics=30, chunksize=10000, passes=10,workers=4) 

# Assign each document to most prevalent document 
lda_topic_assignment = [max(p,key=lambda item: item[1]) for p in lda[corpus]] 

Odpowiedz

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


test =LDA[corpus[0]] 
print(test) 
sorted(test, reverse=True, key=lambda x: x[1]) 

Topics = ['Topic_'+str(sorted(LDA[i], reverse=True, key=lambda x: x[1])[0][0]).zfill(3) for i in corpus] 
+4

proszę dostarczyć pewien kontekst wyjaśniający dlaczego rozwiązanie jest prawidłowe. Pomoże to OP zrozumieć. –