LDA Mallet替代get_document_topics-测量每个文档的主题



目前正在使用Python和Gensim-Mallet包装器进行LDA分析。在训练了模型并获得了主题之后,我想看看主题是如何分布在各个文档中的。在普通的Gensim LDA分析中,可以使用get_document_topics函数,我本可以使用它来迭代文件中的每个文档。但是,Mallet包装器没有这个功能。我可以在一个特定文档中检索主题的分布,但找不到在每个文档中收集和存储主题的解决方案(例如,在列表或数据帧中(。

我可以使用以下代码在一个文档上获取主题分布:

print (ldamallet[mm[6000]])

它将返回以下输出:

[(0, 0.3055555555555555), (1, 0.3253968253968254), (2, 0.36904761904761907)]

然而,我无法让它在我的数据集中迭代大约9000个文档。

可能相关的附加代码:

id2word = corpora.Dictionary(wordsFiltered)
id2word.filter_extremes(no_below=167, keep_tokens=None)
mm=[id2word.doc2bow(wordsFilter) for wordsFilter in wordsFiltered]
mallet_path = 'path'
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, corpus=mm, num_topics=3, id2word=id2word) 

有什么建议吗?提前感谢!

设法找到了一个相当简单的解决方案。以下代码为我提供了每个文档的所有不同百分比的列表。

for m in ldamallet[mm]:
topics_docs.append(m)

如果有人有让它更干净的建议,或者有其他方法,请随时分享。还是个初学者,所以欢迎所有的建议。

最新更新