【发布时间】:2018-09-03 11:17:06
【问题描述】:
我正在尝试从依赖解析器的输出中创建一棵树(嵌套字典)。这句话是“我在睡梦中射杀了一头大象”。我能够得到链接中描述的输出: How do I do dependency parsing in NLTK?
nsubj(shot-2, I-1)
det(elephant-4, an-3)
dobj(shot-2, elephant-4)
prep(shot-2, in-5)
poss(sleep-7, my-6)
pobj(in-5, sleep-7)
要将此元组列表转换为嵌套字典,我使用了以下链接: How to convert python list of tuples into tree?
def build_tree(list_of_tuples):
all_nodes = {n[2]:((n[0], n[1]),{}) for n in list_of_tuples}
root = {}
print all_nodes
for item in list_of_tuples:
rel, gov,dep = item
if gov is not 'ROOT':
all_nodes[gov][1][dep] = all_nodes[dep]
else:
root[dep] = all_nodes[dep]
return root
输出如下:
{'shot': (('ROOT', 'ROOT'),
{'I': (('nsubj', 'shot'), {}),
'elephant': (('dobj', 'shot'), {'an': (('det', 'elephant'), {})}),
'sleep': (('nmod', 'shot'),
{'in': (('case', 'sleep'), {}), 'my': (('nmod:poss', 'sleep'), {})})})}
为了找到从根到叶的路径,我使用了以下链接:Return root to specific leaf from a nested dictionary tree
[制作树和找到路径是两个不同的事情]第二个目标是找到根到叶节点的路径,就像完成Return root to specific leaf from a nested dictionary tree一样。
但我想得到根到叶(依赖关系路径)
因此,例如,当我调用 recurse_category(categories, 'an') 时,其中 categories 是嵌套的树结构,而 'an' 是树中的单词,我应该得到 ROOT-nsubj-dobj(直到根的依赖关系)作为输出。
【问题讨论】:
-
提示:
DependencyGraphgithub.com/nltk/nltk/blob/develop/nltk/parse/… -
@alvas 如果你能展示如何实现我的案例,我会迷路的。如果您希望我更改将元组转换为字典的方式,请展示这一点,而不是提供 github 链接
-
你想要的输出是什么?
-
@alvas 我正在寻找从根到叶的路径。如问题中所述(也给出了链接),如果我通过“an”,那么我应该得到“Root-nubj-dobj
-
我不明白为什么输入是
an而预期输出是 `root-nubj-dobj` 你能详细说明一下吗?
标签: python dictionary nlp nltk stanford-nlp