pyldavis无法查看图表。

5

我正在尝试使用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笔记本集成吗?请指导我。附注:我的Python版本是3.5。
4个回答

4

这个不起作用:

pyLDAvis.display(vis_data)

这个会对你有用:

pyLDAvis.show(vis_data)


2
我现在也面临同样的问题。 编辑: 我的脚本如下: 第一部分:
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)

second part:

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

问题出在“vis_data = (...)”这一行。如果我运行脚本,它会打印“prepare”,然后继续运行而不打印其他任何内容(因此它永远不会到达“print('display')”这一行)。
有趣的是,当我只运行整个脚本时,它会卡在那一行,但是当我运行第一部分,进入我的控制台并执行单独的一行“vis_data = pyLDAvis.sklearn.prepare(lda_tf, dtm_tf, tf_vectorizer)”时,它会在几秒钟内执行。
至于图表,我将其保存为html(“simple”),并使用html文件查看图表。

0

我遇到了同样的问题(我使用PyCharm作为IDE)。问题在于pyLDAvize是为Ipython开发的(请参阅文档,https://media.readthedocs.org/pdf/pyldavis/latest/pyldavis.pdf,第3页)。

我的解决方法/变通方法:

  • 创建一个lda_tf、dtm_tf、tf_vectorizer的字典(例如pyLDAviz_dict),将字典转储到文件中(例如mydata_pyLDAviz.pkl)
  • 将pkl文件读入笔记本电脑(我确实从pyLDAviz获取了一些折旧信息,但对最终结果没有影响)
  • 在笔记本电脑上玩弄pyLDAviz
  • 如果您对视图感到满意,请将其转储为html

原因(很可能)是pyLDAviz期望连续的用户交互(包括用户启动的“退出”)。然而,我宁愿从智能IDE中转储数据并将其读入jupyter,也不愿在jupyter笔记本中进行开发/编码。这几乎就像回到Emacs之前的时代。

从经验来看,这种方法对于其他绘图例程非常有效。


-1
如果您收到了模块错误 pyLDA.gensim,那么请尝试使用以下替代方法:
import pyLdAvis.gensim_models

你之所以出现这个错误,是因为有一个新版本的更新。


值得一提的是,需要说明哪些版本与疑似错误及其解决方案相关。 - Nuclear03020704

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接