Nltk: 如何将nltk图内联到jupyter笔记本?

创建于 2017-07-03  ·  7评论  ·  资料来源: nltk/nltk

我已经在stackoverflow上问了这个问题,没有任何运气,因此决定在这里重复。

根据nltk的来源,它通过tkinter (GUI)绘制图形,但是我需要将此图形内联到jupyter notebook 。 我正在尝试从anaconda3在官方docker内部进行操作,换句话说,我在这里不需要任何弹出GUI,而只需在笔记本内部放置图像,应该在服务器端由nltk lib呈现。

我怎么能通过nltk克服这个问题? 也许有第三方库可以帮助那里?

我尝试的来源在这里-最后18个单元格。

chunkGram = r"""Chunk: {<RB.?>*<VB.?>*<NNP>+<NN>?}"""
chunkParser = nltk.RegexpParser(chunkGram)

for i in tokenized_text[:5]:
    words = nltk.word_tokenize(i)
    tagged = nltk.pos_tag(words)
    chunked = chunkParser.parse(tagged)
    chunked.draw()

PS:
同时,matplotlib内联本身的作用就像一个魅力。 我可以使用matplotlib进行图形渲染吗?

谢谢!

bug corpus enhancement nice idea

最有用的评论

通常,远离tkinter是个好主意,但是已经支持在笔记本中将树渲染为嵌入式PNG:

``
导入NLTK
从IPython.display导入显示

解析器= nltk.RegexpParser(r'NP:{<[NJ]。*> +}')
树= parser.parse(nltk.corpus.brown.tagged_sents()[0])
显示(树)
``

所有7条评论

好的可能的解决方法是:

1安装Xvfb
2制作树和屏幕截图
3将ps转换为png
3将转换后的屏幕截图内联回到jupyter

但对我来说,它更像是一个肮脏的hack。 应该有一些更健壮的方法来渲染树。

我认为,最好从tkinter转移到绘图区,然后转向从不使用图形绘图库,例如matplotlib / seaborn

通常,远离tkinter是个好主意,但是已经支持在笔记本中将树渲染为嵌入式PNG:

``
导入NLTK
从IPython.display导入显示

解析器= nltk.RegexpParser(r'NP:{<[NJ]。*> +}')
树= parser.parse(nltk.corpus.brown.tagged_sents()[0])
显示(树)
``

在远程Jupyter笔记本服务器上,这对我不起作用。 树的_repr_png_()正在调用CanvasFrame() ,它想要创建一个tkinter窗口(并且在远程服务器上没有显示)。 不太确定正确的解决方法是什么。

image

nltk = 3.2.4
ipython == 6.2.1
jupyter-核心== 4.4.0

接得好!

其他人刚刚就同一件事打开了一个新期刊(#1887)。 不确定过程,但是我们可以合并它们吗?

经过几次调整后,我想添加到对我有用的rmalouf解决方案中:

苹果
朱皮特
Python 2.7

您需要安装ghostscript才能起作用: https :
酿造安装ghostscript

如果此操作由于xcrun而失败:错误:无效的活动开发人员路径

然后先执行以下操作
参见http://mds.is/xcrun-error/
xcode-select-安装

我最近整理了一个纯python => SVG树形绘图包,可以将其用作Jupyter中Tree基于png的repr的直接替代品。 它可能并不适合所有使用NLTK的人,因为它需要python 3 +,但仍处于发布周期的早期(并且部分目的是做一些与该受众不太相关的其他事情)。 但是,它解决了该线程(和https://github.com/nltk/nltk/issues/1887)中提出的问题,这些问题也困扰着我:

https://github.com/rawlins/svgling

(nb如果您想完全避免Jupyter中与tkinter相关的问题,您可能还需要从Tree删除_repr_png_() Tree 。这是因为Jupyter甚至会尝试所有可用的_repr_*_函数(虽然在典型情况下它仅显示一个,并将所有输出保存在笔记本文件中。)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

StarWang picture StarWang  ·  5评论

alvations picture alvations  ·  4评论

libingnan54321 picture libingnan54321  ·  3评论

talbaumel picture talbaumel  ·  4评论

Chris00 picture Chris00  ·  3评论