簡體   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