可视化文本结构树

2021-07-15  本文已影响0人  ltochange

通过现有的一些自然语言处理的工具,例如spacy,coernlp可以得到句子的结构,为了便于观看,需要可视化句法结构树

(1)利用nltk中的Tree类来可视化解析结果

tree_str = '(S (NP this tree) (VP (V is) (AdjP pretty)))'
# 直接显示句法结构
Tree.fromstring(tree_str).draw()
在这里插入图片描述

(2)利用CanvasFrame和print_to_file保存句法结构

from nltk import Tree
from nltk.draw.util import CanvasFrame
from nltk.draw import TreeWidget

tree_str = '(S (NP this tree) (VP (V is) (AdjP pretty)))'
# 保存句法结构
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()

利用在线的ps工具查看,文件 tree.ps

在这里插入图片描述
(3)利用nltk.draw.tree.TreeView保存篇章结构
from nltk import Tree
from nltk.draw.tree import TreeView

# 保存篇章结构
tree_str = "( NS-elaboration ( NS-elaboration ( SN-circumstance ( EDU 1 )  ( EDU 2 )  )  ( NS-elaboration ( EDU 3 )  ( NS-purpose ( EDU 4 )  ( NN-list ( EDU 5 )  ( EDU 6 )  )  )  )  )  ( NS-elaboration ( EDU 7 )  ( NN-list ( EDU 8 )  ( EDU 9 )  )  )  ) "
t = Tree.fromstring(tree_str)
TreeView(t)._cframe.print_to_file('output.ps')

利用在线的ps工具查看文件 output.ps

在这里插入图片描述

来自问题
https://stackoverflow.com/questions/23429117/saving-nltk-drawn-parse-tree-to-image-file

上一篇下一篇

猜你喜欢

热点阅读