可视化文本结构树
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