How to get document-topics using models.hdpmodel – gensim 中的分层狄利克雷过程

How to get document-topics using models.hdpmodel – Hierarchical Dirichlet Process in 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()的函数呢?

两种模型都有一个 __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)]