7

我是 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>

如何获得文档的主题分布?

4

1 回答 1

9

该函数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])
于 2018-11-15T08:41:01.050 回答