我有一个nltk.tree.Tree对象。我想用下面的函数遍历它,并且改变每个叶子的POS标签(即上面例子中的'tag')。更改NLTK树叶中的POS标记的值
def traverse(tree):
try:
tree.label()
except AttributeError:
tree[-1] = ('another_tag')
print(tree)
else:
for child in tree:
traverse(child)
不幸的是,叶中的每个POS标签都不能改变,因为包含它的元组对象是不可变的。
如何在不影响原始树结构的情况下更改示例中的POS标签?
我对这个树结构相当陌生,请展示一些清晰的摘录如何处理嵌套结构。
创建具有相同结构的新树,但是当您遇到想要的POS时,只需更改它即可。 – 404pio 2015-03-25 08:07:40
@frankov根据上面的遍历函数,我试着产生一个像'(S(NP I)(VP(V saw)(NP him)))'的字符串,并用'Tree.fromstring'将它改成了Tree 。但它不够简洁。任何提示或摘录? – user2870222 2015-03-25 12:18:19