问题描述
在gensim中使用ldaseqmodel时,我收到运行时间警告:
D:\ Anaconda3 \ lib \ site-packages \ gensim \ models \ ldaseqmodel.py:1474: RuntimeWarning:double_scalars中遇到无效值
收敛= np.fabs((lhood_old-lhood)/(lhood_old *总数)) D:\ Anaconda3 \ lib \ site-packages \ gensim \ models \ ldaseqmodel.py:293: RuntimeWarning:在double_scalars中遇到的被零除
收敛= np.fabs((bound-old_bound)/ old_bound)
这是代码:
ldaseq = LdaSeqModel(corpus=corpus_comments,id2word=dictionary_comments,time_slice=time_docs,num_topics=5,chunksize=10,lda_model=model)
请帮助我!非常感谢!
解决方法
您收到的第一个警告;即
D:\Anaconda3\lib\site-packages\gensim\models\ldaseqmodel.py:1474: RuntimeWarning: invalid value encountered in double_scalars
converged = np.fabs((lhood_old - lhood) / (lhood_old * total))
是因为您的语料库中的空文档。要解决这个问题,首先要找出语料库中的空文档,然后将它们从语料库中删除。
现在,对于第二个警告,请参阅 this 答案,我已经在那里详细解释了,希望对您有所帮助。 简而言之,您将收到第二个警告,即
D:\Anaconda3\lib\site-packages\gensim\models\ldaseqmodel.py:293: RuntimeWarning: divide by zero encountered in double_scalars
convergence = np.fabs((bound - old_bound) / old_bound)
因为在 old_bound
中 ldaseqmodel
的源代码中 gensim
被初始化为 zero 因为在这个表达式 (bound - old_bound) / old_bound
中你实际上是将上部除以零,这会导致警告。因此,您只需忽略该警告,因为在第一次迭代后 old_bound
的值会更新,因此您将不会再次看到警告。