如何解决获取新文档的主题概率分布
model = Ldamodel(corpus=corpus,id2word=id2word,num_topics=10,random_state=100,update_every=1,chunksize=100,passes=50,alpha='auto',per_word_topics=True)
这个模型是在 data_words
上训练的,一个列表包含一个列表,每个列表中都有一个文本字符串,例如:
data_words = [['This is the first text'],['This is another text'],['Here is the very last text']]
在本例中,len(data_words)
是 3,但根据我的实际数据,它是(大约)4000。
基于经过训练的主题模型,我想将来自 data_words
的 4000 个文档中的每一个表示为主题概率分布。对于每个文档,这将是一个 num_topics 维向量,其中每个单元格表示某个主题在该文档中出现的概率。
按照documentation,我采取了以下步骤:
from gensim.corpora.dictionary import Dictionary
common_dictionary = Dictionary(data_words)
common_corpus = [common_dictionary.doc2bow(text) for text in data_words]
为了获得分布,我运行了:
model[common_corpus[0]]
这里的输出是一个元组。其中第一个元素 model[common_corpus[0]][0]
如下所示:
[(0,0.26094702),(1,0.29876992),(3,0.3244001),(7,0.045543537),(8,0.03196496),(9,0.031232798)]
这是第一个文档的主题分布并且主题 2、4、5 和 6 的概率等于 0 是否正确?或者我应该对此有不同的解释吗?
最终,我想要一个 4000xnum_topics 矩阵,其中每个单元格代表文档中某个主题的概率。假设 model[common_corpus[0]][0]
是我所怀疑的,我可以编写一个函数来从每个文档 model[common_corpus[0]][i]
的 i
中获取该矩阵。有没有更快的方法来获得这个矩阵?
解决方法
在https://radimrehurek.com/gensim/models/ldamodel.html之后,所有概率低于参数minimum_probability的主题将被丢弃(默认值:0.01)。如果设置minimum_probability=0,则会得到文档的整个主题概率分布(元组形式)。
关于你的第二个问题,我认为唯一能让你获得topic-document分布的方法就是上面那个。因此,您需要遍历数据集的所有文档以获取文档主题矩阵。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。