Из документации , вы можете использовать два метода для этого.
Если вы хотите получить основные термины в определенной теме, используйте get_topic_terms
:
from gensim.model.ldamodel import LdaModel
K = 10
lda = LdaModel(some_corpus, num_topics=K)
lda.get_topic_terms(5, topn=10)
# Or for all topics
for i in range(K):
lda.get_topic_terms(i, topn=10)
Вы также можете распечатать весь базовый np.ndarray
(называемый либо бета, либо фи в стандартных бумагах LDA, размеры (K, V) или (V, K)).
phi = lda.get_topics()
редактировать :
По ссылке, которую я включил в исходный ответ: если вы ищете распространение документа по теме, используйте
res = lda.get_document_topics(bow)
Как видно из документации, результирующий объект содержит три следующих списка:
list (int, float) - Распределение тем для всего документа. Каждый элемент в списке представляет собой пару идентификатора темы и назначенной ему вероятности.
список (int, список (int, float), необязательный - наиболее вероятные темы для каждого слова. Каждый элемент в списке представляет собой пару идентификаторов слова и список тем, отсортированных по их релевантности это слово. Возвращается, только если для per_word_topics было задано значение True.
список (int, список с плавающей точкой), необязательный - значения релевантности Phi, умноженные на длину объекта, для каждой комбинации слово-тема. Каждый элемент в списке представляет собой пару идентификатора слова и список значений фи между этим словом и каждой темой. Возвращается, только если для per_word_topics было установлено значение True.
Сейчас
tops, probs = zip(*res[0])
probs
будет содержать K (для вас 4) вероятностей. Некоторые могут быть нулевыми, но они должны составлять до 1