首页 > 解决方案 > 如何使用 models.hdpmodel 获取文档主题 – gensim 中的分层狄利克雷过程

问题描述

我只是研究 gensim 进行主题建模。当我使用

lda_model = gensim.models.ldamodel.LdaModel(...)

结果 lda_model 有两个函数:get_topics() 和 get_document_topics()。我可以通过他们找到主题词和文档主题。但是,我想尝试:

hdp_lda_model = gensim.models.hdpmodel.HdpModel(...)

我只能在结果中找到 get_topics(),没有 get_document_topics() 之类的东西。所以我找不到文档和主题的关系。但它应该在某个地方。我从https://radimrehurek.com/gensim/models/hdpmodel.html阅读了一些说明。但我没有找到任何(也许我错过了什么?)。那么 hdp 模型中是否有一个函数,就像 lda 模型中的 get_document_topics() 一样?

标签: documentgensimwordldahdp

解决方案


两种模型都有一种__getitem__方法可以满足您的需求。

对于 LDA,它实际上是get_document_topics https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/ldamodel.py#L1503的包装器

对于 HDP,它封装了该inference方法,但不仅仅是调用它: https ://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/hdpmodel.py#L427

所以,回答你的问题。你可以为这两种模型做:

lda_model[bow_doc]

或者

hdp_lda_model[bow_doc]

然后得到一个主题分布bow_doc

结果如下:

[(5, 0.05342164806543596),
 (7, 0.04307238446604077),
 (11, 0.5281130394662548),
 (31, 0.28899472194287035),
 (60, 0.07985460856925444)]

推荐阅读