python - LDA Mallet 替代 get_document_topics - 衡量每个文档的主题
问题描述
目前正在使用 Python 和 Gensim Mallet 包装器进行 LDA 分析。在训练模型并获得主题之后,我想看看主题是如何分布在各种文档中的。在正常的 Gensim LDA 分析中,可以使用 get_document_topics 函数,我可以用它来遍历文件中的每个文档。但是,Mallet wrapper 没有此功能。我可以检索主题在一个特定文档上的分布,但找不到解决方案来收集和存储每个文档(例如列表或数据框)。
我可以使用以下代码来获取一个文档上的主题分布:
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)
如果有人有使其更干净的建议或有其他方法,请随时分享。仍然是初学者,所以欢迎所有建议。
推荐阅读
- python - 在 python 中使用 os.chdir UNC 文件路径更改目录
- c# - Xamarin Forms 如何获取设备连接的 wi-fi 网络的名称
- filter - jq:在任意位置按节点过滤
- syncfusion - 即使禁用后,工具栏按钮仍可单击
- mongodb - 无法从主机上的 mongoose 连接到 mongodb docker 容器
- windows - IIS SMTP incoming messages stuck in \inetput\mailroot\queue\ and not going to \inetpub\mailroot\drop\
- spring-boot - Why does my Spring Boot App hang when started in a Docker Swarm
- python - 如何将 Python 中的列表格式化为表格
- spring-boot - SpringBoot: LoadBalancer [server]: Error choosing server for key default
- c++ - GNU libmicrohttpd with client TLS allows empty certificate