将python NLTK解析树保存到图像文件

时间:2016-01-31 15:02:52

标签: python parsing tree nlp nltk

这可能会复制此stackoverflow question。但是,我面临着不同的问题。这是我的工作代码。

import nltk 
from textblob import TextBlob
with open('test.txt', 'rU') as ins:
    array = []
    for line in ins:
        array.append(line)
for i in array:
    wiki = TextBlob(i)
    a=wiki.tags
    sentence = a
    pattern = """NP: {<DT>?<JJ>*<NN>}
    VBD: {<VBD>}
    IN: {<IN>}"""
    NPChunker = nltk.RegexpParser(pattern)
    result = NPChunker.parse(sentence)

    result.draw()

enter image description here 这会为所有句子逐个解析树。实际上在我的&#34; test.txt&#34;我有超过100个句子。因此,手动将每个文件保存为.ps文件真的很难。我怎么能修改我的代码,将这些树保存为带有标签的单个.ps或.png文件(类似于:1.png,2.png ...)。这意味着我需要获得多个图像文件。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

虽然这是来自Saving nltk drawn parse tree to image file的重复问题,但这是一个更简单的答案。

给定result Tree对象:

>>> import nltk
>>> from nltk import pos_tag
>>> pattern = """NP: {<DT>?<JJ>*<NN>}
... VBD: {<VBD>}
... IN: {<IN>}"""
>>> NPChunker = nltk.RegexpParser(pattern)
>>> sentence = 'criminal lawyer new york'.split()
>>> pos_tag(sentence)
[('criminal', 'JJ'), ('lawyer', 'NN'), ('new', 'JJ'), ('york', 'NN')]
>>> result = NPChunker.parse(pos_tag(sentence))
>>> result
Tree('S', [Tree('NP', [('criminal', 'JJ'), ('lawyer', 'NN')]), Tree('NP', [('new', 'JJ'), ('york', 'NN')])])

现在这样做:

>>> from nltk.draw.tree import TreeView
>>> TreeView(result)._cframe.print_to_file('tree.ps')

然后您将看到tree.ps文件出现在当前目录中。