类型错误:使用 pyLDAvis.display() 函数时,“复杂”类型的对象不是 JSON 可序列化的

Gau*_*dey 5 json serializable gensim

我有一个包含九个文档的文档术语矩阵:

在此处输入图片说明

我正在运行代码如下:

import pyLDAvis.gensim
topicData = pyLDAvis.gensim.prepare(ldamodel, docTermMatrix, dictionary)
pyLDAvis.display(topicData)  
Run Code Online (Sandbox Code Playgroud)

执行 pyLDAvis.display 函数时出现以下错误:

类型错误:“复杂”类型的对象不是 JSON 可序列化的

有人可以在这里指导吗?可能是什么原因?

bir*_*rah 7

我有同样的问题。遵循 user3411846 引用的 GH 问题,我找到了一个不同的、更简单的解决方案。

复数来自坐标计算并指定“mds”有效。

https://github.com/bmabey/pyLDAvis/issues/69#issuecomment-311337191

所以你的代码将是

topicData = pyLDAvis.gensim.prepare(ldamodel, docTermMatrix, dictionary, mds='mmds')   
Run Code Online (Sandbox Code Playgroud)

mds 的其他选项在这里:https : //pyldavis.readthedocs.io/en/latest/modules/API.html#pyLDAvis.prepare


use*_*846 2

将此行代码添加到您的 pyLDAvispyLDAvis/utils.py

    if np.iscomplexobj(obj):
        return abs(obj)
Run Code Online (Sandbox Code Playgroud)

此错误已在 GitHub GitHub Issue中报告