Как получить распространение document_topics всего документа в LDA Gensim?

Я новичок в Python, и мне нужно построить проект LDA. После некоторого шага предварительной обработки вот мой код:

dictionary = Dictionary(docs)
corpus = [dictionary.doc2bow(doc) for doc in docs]

from gensim.models import LdaModel
num_topics = 10
chunksize = 2000
passes = 20
iterations = 400
eval_every = None
temp = dictionary[0]
id2word = dictionary.id2token
model = LdaModel(corpus=corpus, id2word=id2word, chunksize=chunksize, \
                       alpha='auto', eta='auto', \
                       random_state=42, \
                       iterations=iterations, num_topics=num_topics, \
                       passes=passes, eval_every=eval_every)

Я хочу получить тематическое распространение документов, всего документа и получить 10 вероятностей распространения темы, но когда я использую:

get_document_topics = model.get_document_topics(corpus)
print(get_document_topics)

Выход только появляются

<gensim.interfaces.TransformedCorpus object at 0x000001DF28708E10>

Как мне получить тему распространения документации?

1 ответ

Функция get_document_topics принимает ввод одного документа в формате BOW. Вы вызываете его в полном корпусе (массив документов), чтобы он возвращал итерируемый объект с оценками для каждого документа.

У вас есть несколько вариантов. Если вам нужен только один документ, запустите его для документа, значения которого вы хотите:

get_document_topics = model.get_document_topics(corpus[0])

или выполните следующие действия, чтобы получить массив баллов для всех документов:

get_document_topics = [model.get_document_topics(item) for item in corpus]

Или напрямую получить доступ к каждому объекту из вашего исходного кода:

get_document_topics = model.get_document_topics(corpus)
print(get_document_topics[0])
Другие вопросы по тегам