pyldavis无法查看图表

时间:2017-04-10 07:21:49

标签: python-3.x lda topic-modeling

我试图用pyldavis在python中直观地描绘我的主题。但是我无法查看图表。是我们必须在浏览器中查看图形,还是在执行时弹出它。以下是我的代码

import pyLDAvis
import pyLDAvis.gensim as gensimvis
print('Pyldavis ....')
vis_data = gensimvis.prepare(ldamodel, doc_term_matrix, dictionary)
pyLDAvis.display(vis_data)

程序在执行上述命令时持续处于执行模式。我应该在哪里查看我的图表?或者它将存储在哪里?它是否只与Ipython笔记本集成?请指导我完成此操作。 P.S我的python版本是3.5。

4 个答案:

答案 0 :(得分:2)

这不起作用:

pyLDAvis.display(vis_data)

这将为您工作:

pyLDAvis.show(vis_data)

答案 1 :(得分:1)

我现在面临同样的问题。 编辑: 我的脚本如下所示:

第一部分:

import pyLDAvis
import pyLDAvis.sklearn
print('start script')
tf_vectorizer = CountVectorizer(strip_accents = 'unicode',stop_words = 'english',lowercase = True,token_pattern = r'\b[a-zA-Z]{3,}\b',max_df = 0.5,min_df = 10)
dtm_tf = tf_vectorizer.fit_transform(docs_raw)
lda_tf = LatentDirichletAllocation(n_topics=20, learning_method='online')
print('fit')
lda_tf.fit(dtm_tf)

第二部分:

print('prepare')
vis_data = pyLDAvis.sklearn.prepare(lda_tf, dtm_tf, tf_vectorizer)
print('display')
pyLDAvis.display(vis_data)

问题在于“vis_data =(...)”。如果我运行脚本,它将打印'prepare'并继续运行,而不打印任何其他内容(因此它永远不会到达“打印”行( '显示器'))。

有趣的是,当我只运行整个脚本时,它会卡在那一行上,但当我运行第一部分时,进入我的控制台并执行纯粹的单行“vis_data = pyLDAvis.sklearn.prepare(lda_tf, dtm_tf,tf_vectorizer)“这是在几秒钟内完成的。

至于图表,我将其保存为html(“简单”)并使用html文件查看图表。

答案 2 :(得分:0)

我遇到了同样的问题(我使用PyCharm作为IDE)问题是pyLDAvize是为Ipython开发的(参见文档,https://media.readthedocs.org/pdf/pyldavis/latest/pyldavis.pdf,第3页)。 我的修复/解决方法:

  • 制作lda_tf,dtm_tf,tf_vectorizer(例如,pyLDAviz_dict)的dict将dict转储到文件(例如mydata_pyLDAviz.pkl)
  • 将pkl文件读入笔记本(我确实从pyLDAviz获得了一些折旧信息,但这对最终结果没有影响)
  • 在笔记本中使用pyLDAviz
  • 如果您对视图感到满意,请将其转储到html

原因是(很可能)pyLDAviz期望持续的用户交互(包括用户启动的“退出”)。但是,我宁愿从智能IDE转储数据并将其读入jupyter,而不是jupyter笔记本中的开发/代码。这非常像回到emacs之前的时间。

根据经验,这种方法适用于其他绘图计划

答案 3 :(得分:-1)

如果您收到模块错误 pyLDA.gensim,请改用此错误:

import pyLdAvis.gensim_models

由于新版本更新,您收到错误消息。