取自Saving nltk drawn parse tree to image file
我想知道在使用无头虚拟机/服务器时如何保存图像?现在我得到了:
_tkinter.TclError:没有显示名称,没有$ DISPLAY环境变量
from nltk import Tree
from nltk.draw.util import CanvasFrame
from nltk.draw import TreeWidget
cf = CanvasFrame()
t = Tree.fromstring('(S (NP this tree) (VP (V is) (AdjP pretty)))')
tc = TreeWidget(cf.canvas(),t)
cf.add_widget(tc,10,10) # (10,10) offsets
cf.print_to_file('tree.ps')
cf.destroy()
答案 0 :(得分:0)
因此,在对大量库和将 nltk 解析树从字符串获取到最终图像的方法进行了大量探索和试验后,以下对我有用:
要安装的依赖项:
带有示例树的代码:
import svgling
import cairosvg
from nltk.tree import Tree
# converts any nltk tree object to a svg
def tree2svg(t):
img = svgling.draw_tree(t)
svg_data = img.get_svg()
return svg_data
# read from a string and parse the tree using nltk
t = Tree.fromstring('(ROOT (S (NP (DT The) (NN debate)) (VP (VBN continued) (PP (IN till) (NP (NN night)))) (. .)))')
# convert tree to svg
sv = tree2svg(t)
# write the svg as an image
cairosvg.svg2png(sv.tostring(), write_to='image.png')
上面的代码在 Windows 10 内的 ubuntu wsl 上完美运行,因此它也应该适用于任何服务器(因为我遇到了与您完全相同的问题)