如何解决如何从 gensim LDA 获取文档主题分布矩阵
我正在使用 gensim LDA 为存储在 Pandas 数据框中的一堆文档构建主题模型。构建模型后,我可以调用 model.get_document_topics(model_corpus)
来获取显示每个文档主题分布的元组列表。例如,当我处理 20 个主题时,我可能会得到数据框中前三个文档的以下内容:
[(5,0.11253482),(7,0.75876033)]
[(19,0.96343607)]
[(0,0.010002977),(1,(2,(3,0.010002979),(4,0.8099435),(5,(6,(8,(9,(10,(11,(12,(13,(14,(15,(16,(17,(18,(19,0.010002977)]
这意味着 document_1 最有可能的主题是 7,document_2 是 19,而 document_3 是 4。我想看到的主要输出只是每个文档最可能的主题。我现在这样做的方式是使用循环:
import numpy as np
import pandas as pd
def get_max(doc):
idx,l = zip(*doc)
return idx[np.argmax(l)]
data['doc_topic'] = [get_max(doc) for doc in model.get_document_topics(model_corpus)]
我的数据框中有大约 80k 个文档,因此执行此代码大约需要 45 秒。但既然 gensim 已经完成了所有的计算,我一直认为 45 秒的计算时间只是花在重新组织数据上,所以必须有一个更有效的方法来做到这一点。
如果可能的话,第二个输出是文档主题矩阵,这样每一行对应于我的数据框中的一个文档,每一列代表文档与该文档的概率(或相似性)话题。所以这将产生一个 DxT 矩阵,其中 D 是文档的数量,T 是主题的数量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。