我正在使用 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
有些人会争论全局,但这只是让图书馆做你想做的事的快速技巧。
我是一名优秀的程序员,十分优秀!