Как получить распространение document_topics всего документа в LDA Gensim? - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в 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 Ответ

0 голосов
/ 15 ноября 2018

Функция 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])
...