首页 > 解决方案 > gensim/models/ldaseqmodel.py:217:RuntimeWarning:在 double_scalars 中遇到除以零

问题描述

/Users/Barry/anaconda/lib/python2.7/site-packages/gensim/models/ldaseqmodel.py:217:RuntimeWarning:在double_scalars收敛中遇到除以零= np.fabs((bound - old_bound)/ old_bound)

#dynamic topic model
def run_dtm(num_topics=18):
    docs, years, titles = preprocessing(datasetType=2)

    #resort document by years
    Z = zip(years, docs)
    Z = sorted(Z, reverse=False)
    years_new, docs_new = zip(*Z)

    #generate time slice
    time_slice = Counter(years_new).values()

    for year in Counter(years_new):
        print year,' --- ',Counter(years_new)[year]

    print '********* data set loaded ********'
    dictionary = corpora.Dictionary(docs_new)
    corpus = [dictionary.doc2bow(text) for text in docs_new]

    print '********* train lda seq model ********'
    ldaseq = ldaseqmodel.LdaSeqModel(corpus=corpus, id2word=dictionary, time_slice=time_slice, num_topics=num_topics)

    print '********* lda seq model done ********'
    ldaseq.print_topics(time=1)

嘿伙计们,我正在使用 gensim 包中的动态主题模型进行主题分析,遵循本教程,https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/ldaseqmodel.ipynb,但是我总是遇到同样的意外错误。谁能给我一些指导?即使我尝试了一些不同的数据集来生成语料库和字典,我也真的很困惑。错误是这样的:

/Users/Barry/anaconda/lib/python2.7/site-packages/gensim/models/ldaseqmodel.py:217:RuntimeWarning:在double_scalars收敛中遇到除以零= np.fabs((bound - old_bound)/ old_bound)

标签: gensim

解决方案


np.fabs错误意味着它遇到了 NumPy 错误。你使用的是什么 NumPy 和 gensim 版本?

NumPy 不再支持 Python 2.7,并且 Ldaseq 在 2016 年被添加到 Gensim,所以你可能只是没有可用的兼容版本。如果您正在将 Python 3+ 教程重新编写为 2.7 变体,您显然对版本差异有所了解 - 尝试在 3.6.8 环境中运行它(无论如何,您必须在某个时候升级,2020 年即将结束来自 Python 本身的 2.7 支持)。这可能已经有所帮助,我已经完成了本教程,并没有在我自己的数据中遇到这个问题。

话虽这么说,我之前在运行时也遇到过同样的错误LdaMulticore,这是由一个空的语料库引起的。

除了在函数中完全运行代码之外,您是否可以尝试逐行检查它(或查看您的调试级别日志)并检查您的输出是否具有预期的属性:例如,您的语料库不是空的(或包含空文件)?

如果发生这种情况,请修复预处理步骤并重试 - 这至少帮助了我并 帮助解决了邮件列表中相同的 ldamodel 错误

PS:不发表评论,因为我缺乏声誉,请随时编辑。


推荐阅读