繁体   English   中英

在nltk树中插入子节点

[英]Insert child node in nltk tree

假设我可以使用以下代码读取和编辑所有树的叶子标签:

for leaf in t.treepositions('leaves'):
  t[leaf] = new_value

如何添加新叶子作为实际叶子t [leaf]的子元素? 可能是一个愚蠢的问题,但是我对nltk经验不足。

您是否必须使用treepositions方法? 如果不; 如果仅遍历树的所有子树(如果需要,则循环递归),则可以在任何点插入某些内容(nltk树实际上是“仅”一个列表表示形式)。

这是一个向VP添加修饰符的示例(没有明显的原因:):

import nltk
t = nltk.tree.Tree.fromstring("(S (NP I) (VP (V saw) (NP him)))")
print(t)
for index, st in enumerate(t.subtrees()):
    if st.label() == 'VP':
        st.insert(index, nltk.tree.Tree('ADV', ['yesterday']))
print(t)

输出:

(S (NP I) (VP (V saw) (NP him)))
(S (NP I) (VP (V saw) (NP him) (ADV yesterday)))

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM