gpt4 book ai didi

python - 将 nltk 图保存到 headless (headless)服务器/虚拟机上的文件

转载 作者:行者123 更新时间:2023-12-03 21:34:19 25 4
gpt4 key购买 nike

取自 Saving nltk drawn parse tree to image file

我想知道在使用 headless (headless) VM/服务器时如何保存图像?现在我得到:

_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()

最佳答案

因此,在对大量库和将 nltk 解析树从字符串获取到最终图像的方法进行了大量探索和试验后,以下对我有用:
要安装的依赖项:

  • nltk - 用于从字符串中读取树并对其进行解析(如您所做的那样)。
  • svgling - 该库可以读取 nltk 树的输出并将其转换为 svg。
  • cairosvg - 该库读取 svg 并可以将其转换为 png、pdf 等格式的任何内容。它不依赖于 tcl/tkinter,因此 headless (headless)服务器没有问题!

  • 带有示例树的代码:
    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')
    上面的一段代码在 上完美运行ubuntu wsl 在 Windows 10 中,因此它也适用于任何服务器(因为我面临的问题与您完全相同)

    关于python - 将 nltk 图保存到 headless (headless)服务器/虚拟机上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211398/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com