我尝试使用NLTK DependencyGraph从 CoNLL 输入中获取依赖树。我的理解是,这个类提供了一个tree() method
构建树结构的依赖关系,没有relation
betweenhead
和dependents
。树也没有 POS 标签。还有一个三元组() method
,它为头部、关系和依赖项提供 POS 标签。使用三元组方法,当一个词在句子中重复时,我很难得到依赖项,the red car is behind the blue car
因为这个词的索引不在三元组中。在这里,对于同一个单词,我们有 2 个不同的节点car
。
那么如何从 CoNLL 输入一个带有头词、它的标签、关系、孩子的依赖树。它也可以是一个类似的数据结构,其中可以找到给定句子的信息(中心词、其标签、关系、子项)。欢迎提出任何建议。下面是一个可以用来启动的代码。
from nltk.parse import DependencyGraph
conll_data2 = """1 Cathy Cathy N N eigen|ev|neut 2 su _ _
2 zag zie V V trans|ovt|1of2of3|ev 0 ROOT _ _
3 hen hen Pron Pron per|3|mv|datofacc 2 obj1 _ _
4 wild wild Adj Adj attr|stell|onverv 5 mod _ _
5 zwaaien zwaai N N soort|mv|neut 2 vc _ _
6 . . Punc Punc punt 5 punct _ _
1 the _ DET DT _ 3 det _ _
2 blue _ ADJ JJ _ 3 amod _ _
3 car _ NOUN NN _ 4 nsubj _ _
4 is _ VERB VBZ _ 0 ROOT _ _
5 behind _ ADP IN _ 4 prep _ _
6 the _ DET DT _ 8 det _ _
7 red _ ADJ JJ _ 8 amod _ _
8 car _ NOUN NN _ 5 pobj _ _
1 Ze ze Pron Pron per|3|evofmv|nom 2 su _ _
2 had heb V V trans|ovt|1of2of3|ev 0 ROOT _ _
3 met met Prep Prep voor 8 mod _ _
4 haar haar Pron Pron bez|3|ev|neut|attr 5 det _ _
5 moeder moeder N N soort|ev|neut 3 obj1 _ _
6 kunnen kan V V hulp|ott|1of2of3|mv 2 vc _ _
7 gaan ga V V hulp|inf 6 vc _ _
8 winkelen winkel V V intrans|inf 11 cnj _ _
9 , , Punc Punc komma 8 punct _ _
10 zwemmen zwem V V intrans|inf 11 cnj _ _
11 of of Conj Conj neven 7 vc _ _
12 terrassen terras N N soort|mv|neut 11 cnj _ _
13 . . Punc Punc punt 12 punct _ _
"""
graphs = [DependencyGraph(entry)
for entry in conll_data2.split('\n\n') if entry]
for graph in graphs:
#find data structure here to get head word, its tag, relation, children.