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

时间:2017-09-23 12:49:42

标签: json gensim serializable

我有一份包含九份文件的文件术语矩阵:

enter image description here

我正在运行以下代码:

import pyLDAvis.gensim
topicData = pyLDAvis.gensim.prepare(ldamodel, docTermMatrix, dictionary)
pyLDAvis.display(topicData)  

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

  

TypeError:类型'复杂'的对象不是JSON可序列化的

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

2 个答案:

答案 0 :(得分:1)

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

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

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

所以您的代码应该是

topicData = pyLDAvis.gensim.prepare(ldamodel, docTermMatrix, dictionary, mds='mmds')   

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

答案 1 :(得分:0)

将此行代码添加到pyLDAvis pyLDAvis/utils.py

    if np.iscomplexobj(obj):
        return abs(obj)

GitHub GitHub Issue

中报告了此错误