Альтернатива LDA Mallet для get_document_topics - Измерение тем для документа - PullRequest
1 голос
/ 25 февраля 2020

В настоящее время проводится анализ 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) 

Кто-нибудь какие-нибудь предложения? Заранее спасибо!

1 Ответ

0 голосов
/ 26 февраля 2020

Удалось найти довольно простое решение. Следующий код предоставил мне список списков всех различных процентов для документа.

for m in ldamallet[mm]:
    topics_docs.append(m)

Если у кого-то есть предложения по его чистоте или есть другой подход, не стесняйтесь поделиться. Все еще начинающий, поэтому все советы приветствуются.

...