我需要NLTK樹的一些幫助。Subtree Extraction NLTK樹
我試圖從這個法國一些樹子樹:
(SENT (NP-SUJ↓ (PRO=H Personne)) (VN=H (ADV* ne) (V=H sait)) (ADV* exactement) (PONCT* .))
我只是想在POS標籤的結尾提取具有「= H」的樹木,然後添加父節點:
像這樣:(NP-SUJ↓ (PRO=H Personne)) and this: (VN=H (V=H sait))
而且我寫了一個函數來進行:
def AddParent(tree):
grammar = []
for subtree in tree.subtrees():
if subtree.height()==2 and subtree.label().endswith("=H"):
PartialTree = ParentedTree(subtree.parent().label(),
[ParentedTree(subtree.label(), subtree)])
grammar.append(PartialTree)
return grammar
#Test
pt = ParentedTree.fromstring("(SENT (NP-SUJ↓ (PRO=H Personne)) (VN=H (ADV* ne) (V=H sait)) (ADV* exactement) (PONCT* .))")
AddParent(pt)
[ParentedTree('NP-SUJ↓', [ParentedTree('PRO=H', ['Personne'])]),
ParentedTree('VN=H', [ParentedTree('V=H', ['sait'])])]
我在這裏有兩個問題:首先,我想繼續向原始樹中的這些子樹添加信息。舉例來說,我想不斷增加祖先節點,然後孩子,做這樣的事情:
(SENT (NP-SUJ↓) (VN=H (V=H sait)))
但我記不清原來的樹...
二,函數返回其中包含的所有子樹。我只想擁有特定的節點。
什麼是提取最後一個子樹的好方法?
非常感謝您的幫助!我是新來的,但我真的很喜歡它!
非常感謝!這正是我所尋找的,但我不知道如何去做。 – Jonathan
很高興聽到它。由於我的答案解決了您的問題,請點擊左邊的大複選標記以「接受」它。 (您也可以在本網站上「回覆」任何您認爲有用的問題或回答。) – alexis