Как получить распространение 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])