据我了解,如果我在语料库中训练LDA模型,其中词典的大小为1000而主题(K)= 10,对于词典中的每个单词,我应该有一个向量大小为10,其中向量中的每个位置是该单词属于该特定主题的概率,对吧?
所以我的问题是一个词,这个词属于主题k的概率是多少,其中k可以是1到10,我如何在gensim lda模型中得到这个值?
我使用的是get_term_topics
方法,但它并没有输出所有主题的所有概率。例如,
lda_model1.get_term_topics("fun")
[(12, 0.047421702085626238)],
但是我想知道"有趣"也可能出现在所有其他主题中?
答案 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