如何在gensim LDA中获得给定单词的主题词概率?

时间:2017-03-17 07:41:19

标签: gensim lda topic-modeling

据我了解,如果我在语料库中训练LDA模型,其中词典的大小为1000而主题(K)= 10,对于词典中的每个单词,我应该有一个向量大小为10,其中向量中的每个位置是该单词属于该特定主题的概率,对吧?

所以我的问题是一个词,这个词属于主题k的概率是多少,其中k可以是1到10,我如何在gensim lda模型中得到这个值?

我使用的是get_term_topics方法,但它并没有输出所有主题的所有概率。例如,

lda_model1.get_term_topics("fun")
[(12, 0.047421702085626238)],

但是我想知道"有趣"也可能出现在所有其他主题中?

1 个答案:

答案 0 :(得分:3)

对于正在寻找ans的人,我找到了它。

这些概率值位于package jxtest; import java.io.IOException; import com.fasterxml.jackson.databind.ObjectMapper; public class Test { public static void main(String[] args) throws IOException { TestPojo item = new TestPojo(); item.setMyField1("Test1"); item.setMyField2("Test2"); item.setMyField3(42); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(item); System.out.println(json); TestPojo readBackIn = mapper.readValue(json, TestPojo.class); System.out.println(readBackIn.getMyField1()); System.out.println(readBackIn.getMyField2()); System.out.println(readBackIn.getMyField3()); } } numpy数组中。此矩阵中的行数等于主题数,而列数是字典的大小(单词)。因此,如果您获得特定列的值,则会获得该词属于所有主题的概率。

如,

{"myField1":"Test1","myField2":"Test2","myField3":42}
Test1
Test2
42

src = https://groups.google.com/forum/?fromgroups=#!searchin/gensim/lda $ 20topic-word $ 20matrix / gensim / Qoj7Agkx3qE / r9lyfihC4b4J