如何在gensim LDA中获取给定单词的主题词概率?
How to get the topic-word probabilities of a given word in gensim LDA?
据我了解,如果我在语料库上训练 LDA 模型,其中字典的大小为 1000,主题数 (K) = 10,对于字典中的每个单词,我应该有一个向量大小为 10,其中向量中的每个位置都是该词属于该特定主题的概率,对吗?
所以我的问题是给了一个词,这个词属于主题 k 的概率是多少,其中 k 可以从 1 到 10,我如何在 gensim lda 模型中得到这个值?
我使用的是 get_term_topics
方法,但它没有输出所有主题的所有概率。例如,
lda_model1.get_term_topics("fun")
[(12, 0.047421702085626238)],
但我想看看 "fun" 也出现在所有其他主题中的概率是多少?
对于正在寻找答案的人,我找到了。
这些概率值在 xx.expElogbeta
numpy 数组中。此矩阵中的行数等于主题数,列数是字典(单词)的大小。因此,如果您获得特定列的值,您将获得该词属于所有主题的概率。
例如,
>>> data = np.load("model.expElogbeta.npy")
>>> data.shape
(20, 6481) # i have trained with 20 topics == no of rows
>>> dict = corpora.Dictionary.load(dictf)
>>> len(dict.keys())
6481 #columns of the npy array is the words in my dict
src = https://groups.google.com/forum/?fromgroups=#!searchin/gensim/lda$20topic-word$20matrix/gensim/Qoj7Agkx3qE/r9lyfihC4b4J
据我了解,如果我在语料库上训练 LDA 模型,其中字典的大小为 1000,主题数 (K) = 10,对于字典中的每个单词,我应该有一个向量大小为 10,其中向量中的每个位置都是该词属于该特定主题的概率,对吗?
所以我的问题是给了一个词,这个词属于主题 k 的概率是多少,其中 k 可以从 1 到 10,我如何在 gensim lda 模型中得到这个值?
我使用的是 get_term_topics
方法,但它没有输出所有主题的所有概率。例如,
lda_model1.get_term_topics("fun")
[(12, 0.047421702085626238)],
但我想看看 "fun" 也出现在所有其他主题中的概率是多少?
对于正在寻找答案的人,我找到了。
这些概率值在 xx.expElogbeta
numpy 数组中。此矩阵中的行数等于主题数,列数是字典(单词)的大小。因此,如果您获得特定列的值,您将获得该词属于所有主题的概率。
例如,
>>> data = np.load("model.expElogbeta.npy")
>>> data.shape
(20, 6481) # i have trained with 20 topics == no of rows
>>> dict = corpora.Dictionary.load(dictf)
>>> len(dict.keys())
6481 #columns of the npy array is the words in my dict
src = https://groups.google.com/forum/?fromgroups=#!searchin/gensim/lda$20topic-word$20matrix/gensim/Qoj7Agkx3qE/r9lyfihC4b4J