2016-10-11 8 views
6

Я надеюсь присвоить каждому документу одну тему, используя LDA. Теперь я понимаю, что вы получаете распространение по темам из LDA. Однако, как видно из последней строки ниже, я назначаю ее наиболее вероятной теме.Назначение темы Gensim LDA

Мой вопрос в том, что. Мне нужно запустить lda[corpus] несколько раз, чтобы получить эти темы. Есть ли какая-нибудь другая встроенная функция gensim, которая даст мне эти векторы назначения темы напрямую? Тем более, что алгоритм LDA прошел через документы, возможно, он сохранил эти назначения тем?

# 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]] 

ответ

-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

просьба представить некоторый контекст, объясняющий, почему ваше решение является правильным. Это поможет ОП понять это. –