作为聊天机器人的NLPspaCy引擎,我调用nlp("Where are the apples?").print_tree()并接收:
[{'word': 'are',
'lemma': 'be',
'NE': '',
'POS_fine': 'VBP',
'POS_coarse': 'VERB',
'arc': 'ROOT',
'modifiers': [{'word': 'Where',
'lemma': 'where',
'NE': '',
'POS_fine': 'WRB',
'POS_coarse': 'ADV',
'arc': 'advmod',
'modifiers': []},
{'word': 'apples',
'lemma': 'apple',
'NE': '',
'POS_fine': 'NNS',
'POS_coarse': 'NOUN',
'arc': 'nsubj',
'modifiers': [{'word': 'the',
'lemma': 'the',
'NE': '',
'POS_fine': 'DT',
'POS_coarse': 'DET',
'arc': 'det',
'modifiers': []}]},
{'word': '?',
'lemma': '?',
'NE': '',
'POS_fine': '.',
'POS_coarse': 'PUNCT',
'arc': 'punct',
'modifiers': []}]}]
where我可以很容易地解析出( advmod, where) 和 ( apple, )的 (arc, lemma) 对nsubj,并调用一个函数where(apple)。
然而,这是处理解析树的一种非常幼稚的方式。关于如何处理这棵树的任何建议?我不认为像多级 SVM 这样的东西会起作用。也许是某种神经网络?