В настоящее время проводится анализ LDA с использованием Python и оболочки Gensim Mallet. После обучения модели и получения тем, я хочу посмотреть, как темы распределены по различным документам. В обычном анализе LDA Gensim можно использовать функцию get_document_topics, которую я мог бы использовать для перебора каждого документа в моем файле. Однако оболочка Mallet не имеет этой функции. Я могу получить распределение тем по одному указанному c документу, но не могу найти решение для сбора и сохранения этого по каждому документу (например, в виде списка или фрейма данных).
Я могу использовать следующий код для получения распределения topi c по одному документу:
print (ldamallet[mm[6000]])
, который будет возвращать следующий вывод:
[(0, 0.3055555555555555), (1, 0.3253968253968254), (2, 0.36904761904761907)]
Однако я не могу заставить его перебирать более или менее 9000 документов в моем наборе данных.
Дополнительный код, который может иметь отношение:
id2word = corpora.Dictionary(wordsFiltered)
id2word.filter_extremes(no_below=167, keep_tokens=None)
mm=[id2word.doc2bow(wordsFilter) for wordsFilter in wordsFiltered]
mallet_path = 'path'
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, corpus=mm, num_topics=3, id2word=id2word)
Кто-нибудь какие-нибудь предложения? Заранее спасибо!