使用NP块绘制扁平的NLTK解析树

时间:2015-08-11 07:46:49

标签: python tree nlp draw nltk

我想用NLTK分析句子并将它们的块显示为树。 NLTK提供方法tree.draw()来绘制树。以下代码为句子&#34绘制了一棵树;这只小黄狗在猫身上咆哮"

import nltk 
sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"), ("dog", "NN"), ("barked","VBD"), ("at", "IN"), ("the", "DT"), ("cat", "NN")]

pattern = "NP: {<DT>?<JJ>*<NN>}"
NPChunker = nltk.RegexpParser(pattern) 
result = NPChunker.parse(sentence)
result.draw()

结果是这棵树:

example tree

如何获得这样一个更高级别的树?

deeper tree

2 个答案:

答案 0 :(得分:3)

你需要“升级”你的非NP词,这是一个黑客:

:noremap <C-x><C-j> :%s/[ \t]\([A-Za-z_].*\):/"\1":/<CR>

[OUT]:

enter image description here

答案 1 :(得分:0)

我知道答案为时已晚。但这就是我如何做到的。 这个想法是你需要将你的句子转换成树。

import nltk
sentence = list(map(lambda sent: Tree(sent[1], children=[sent[0]]), sentence))

然后你可以在之后进行分块。

NPChunker = nltk.RegexpParser(pattern) 
result = NPChunker.parse(sentence)
result.draw()

这是我的结果Tree