我收到运行时警告:使用ldaseq时,在double_scalars中遇到无效值并在double_scalars中遇到零除

问题描述

在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)

数据集大约有50,000个博客文章

请帮助我!非常感谢!

解决方法

您收到的第一个警告;即

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_boundldaseqmodel 的源代码中 gensim 被初始化为 zero 因为在这个表达式 (bound - old_bound) / old_bound 中你实际上是将上部除以零,这会导致警告。因此,您只需忽略该警告,因为在第一次迭代后 old_bound 的值会更新,因此您将不会再次看到警告。