我正在使用NLTK Parented Tree结构来访问父节点以及左右兄弟。
在第一步中,我必须以自下而上的方式迭代节点:我总是从V(动词)开始,然后去树,直到我到达Root(SENT)。
在每个父母(VN和SENT),我必须检查他们的孩子是否是以***结尾的节点。图像中树的VN没有任何孩子,所以我一直在上升。 SENT有两个孩子以*** \结尾,所以我创建了一个新树(左边的那个)。
所以,我想做的事情(iteritavely)是:
我一直在想如何做到这一点的pythonic方式,如果我能用Parented Trees做到这一点。
Parented Tree一直告诉我,我无法插入已有父级的树。有没有其他方式可以访问父母和兄弟姐妹?
这是我尝试过的东西。离我想要创建的树还很远 -
def CreateVerbTree(tree):
for tree in tree.subtrees(filter=lambda t: t.height()==2):
if tree.label()=="V":
newtree = ParentedTree(tree.parent().label(), [tree.copy()])
print(newtree.parent())
print([x for x in newtree.subtrees()])
return newtree
Test:
VerbTree(tr)
None
[ParentedTree('VN', [ParentedTree('V', ['read'])]), ParentedTree('V', ['read'])]
(VN (V read))
如果有人告诉我他在左边提取树的方法,我真的很感激。先感谢您!