小编Jon*_*han的帖子

子树提取 NLTK 树

我需要 NLTK 树的一些帮助。

我试图从这棵法国树中提取一些子树:

原始树

(SENT (NP-SUJ? (PRO=H Personne)) (VN=H (ADV* ne) (V=H sait)) (ADV* exactement) (PONCT* .))
Run Code Online (Sandbox Code Playgroud)

我只想提取 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'])])]
Run Code Online (Sandbox Code Playgroud)

我在这里有两个问题:首先,我想继续向原始树中的那些子树添加信息。例如,我想继续添加祖先节点,然后添加子节点,以执行以下操作:

(SENT (NP-SUJ? ) …
Run Code Online (Sandbox Code Playgroud)

python subtree nltk

2
推荐指数
1
解决办法
5519
查看次数

标签 统计

nltk ×1

python ×1

subtree ×1