在Python NLTK树中实现自底向上搜索算法
我正在使用NLTK父树结构来访问父节点和左右兄弟节点 在第一步中,我必须以自下而上的方式遍历节点:我总是从V(动词)开始,然后遍历树,直到到达根(SENT) 在每个父节点(VN和SENT)上,我都必须检查它们的子节点是否以***结尾。图中树的VN没有任何子节点,因此我继续向上。SENT有两个以***\结尾的子级,因此我创建了一个新树(左边的那个) 因此,我想做的(iteritavely)是:在Python NLTK树中实现自底向上搜索算法,python,algorithm,tree,nltk,Python,Algorithm,Tree,Nltk,我正在使用NLTK父树结构来访问父节点和左右兄弟节点 在第一步中,我必须以自下而上的方式遍历节点:我总是从V(动词)开始,然后遍历树,直到到达根(SENT) 在每个父节点(VN和SENT)上,我都必须检查它们的子节点是否以***结尾。图中树的VN没有任何子节点,因此我继续向上。SENT有两个以***\结尾的子级,因此我创建了一个新树(左边的那个) 因此,我想做的(iteritavely)是: 从V标记开始,将结构从叶子生长到根(添加父节点) 在每个点(每个父节点)检查子节点是否有以***结尾的
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))
如果有人告诉我他提取左边那棵树的方法,我会非常感激。提前谢谢你 谢谢你的编辑,Mayur你好,我正在寻找解决方案。只是想指出,您的左树遗漏了PONCT子树,这是故意的吗?还是你忘了加上?非常感谢!是的,这是故意的,因为标签没有以***结尾?有什么想法吗?谢谢你的编辑,Mayur嗨,我正在寻找解决办法。只是想指出,您的左树遗漏了PONCT子树,这是故意的吗?还是你忘了加上?非常感谢!是的,这是故意的,因为标签没有以***结尾?有什么想法吗?