我在postCorp
中有文档列表。我正在尝试使用lda model
使用gensim
来训练主题和相应的概率。
以下是我所在的代码段:
获取每个文档
将其转换为BOW
将它传递给lda以返回主题和
并且还计算每个主题在所有文档上的平均概率。
with open('ldaOutputPost','w') as out:
topicMean = defaultdict(float)
count = 0
for corp in postCorp:
count += 1
for (t,p) in lda[dictionary.doc2bow(corp)]:
topicMean[t] += p
out.write(str(lda[dictionary.doc2bow(corp)])+'\n')
如果我只传递一个文档的弓,这可以正常工作。但是,当我遍历所有文件时,它会给我以下错误,我无法找出原因?
Traceback (most recent call last):
File "C:\test.py", line 110, in <module>
for (t,p) in lda[dictionary.doc2bow(corp)]:
File "C:\Python27\lib\site-packages\gensim\models\ldamodel.py", line 752, in __getitem__
gamma, _ = self.inference([bow])
File "C:\Python27\lib\site-packages\gensim\models\ldamodel.py", line 380, in inference
expElogbetad = self.expElogbeta[:, ids]
IndexError: index 6770 is out of bounds for axis 1 with size 6770
任何人都可以帮忙。
P.S:BOW没有问题因为lda[dictionary.doc2bow(preCorp[0])
工作正常并且给我正确的输出。
编辑:
postCorp
是列表,其中内部列表表示文档中所有单词的列表。而字典是dictionary = corpora.Dictionary(combined)
这里合并的是所有主题模型都在其上训练的语料库。