python - 如何将 NLTK 图发送到文件?

标签 python matplotlib nltk

我正在使用 NLTK 创建分布图并做一些其他事情。麻烦的是,我必须手动关闭创建分散图打开的窗 Eloquent 能让代码继续运行。如何将情节发送到文件并保持脚本移动?我想其他地 block 也会有同样的问题。我可以从 NLTK source 中看到dispersion_plot 已经包含 pylab.show() 所以如果不编写我自己的绘图函数,这可能是不可能的?

这是我的代码,它停在第 2 行,直到我关闭随绘图一起打开的 Python 窗口。

1 # do some analysis
2 disp_plot(days, key_terms)
3 diversity_table(days, "Day")

这是 disp_plot 函数:

# dispersion plots for search terms
def disp_plot(texts, terms):
    concat_text = ''.join(texts.values())
    tokens = nltk.word_tokenize(concat_text)
    text = nltk.Text(tokens)
    text.dispersion_plot(terms)

最佳答案

我遇到了同样的问题并通过将 pylab.show 重新分配给我自己的函数来解决它。你可能会这样做:

import pylab

counter = 0
def filename_generator():
    global counter
    to_return = 'myfig{0}.png'.format(counter)
    counter += 1
    return to_return

def my_show():
    return pylab.savefig(filename_generator())

并改变你的 disp_plot() 看起来像

def disp_plot(texts, terms):
    concat_text = ''.join(texts.values())
    tokens = nltk.word_tokenize(concat_text)
    text = nltk.Text(tokens)
    pylab_orig_show = pylab.show
    pylab.show = my_show
    text.dispersion_plot(terms)
    pylab.show = pylab_orig_show

有些人会争论全局,但这只是让图书馆做你想做的事的快速技巧。

关于python - 如何将 NLTK 图发送到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392390/

相关文章:

python - 派乔内斯特安装

python - 如何关闭日志缓冲区以使用python命令行工具实时获取日志?

python - 如何使用 Python 最大化 plt.show() 窗口

python - 检测英语单词和nltk的单词语料库

Python:NLTK 或其他包中的布朗聚类?

python - 定义一个函数,为 python 中给出的每个输入重复命令

Python tkinter.ttk 组合框在退出时抛出异常

Python matplotlib : how to let matrixplot have variable column widths

python - matplotlib y 轴标签随着字体大小的变化而消失

python - 嵌套列表/字典理解如何添加缺少的元素