Этот конкретный формат вывода Стэнфордского парсера вызывает «квадратный синтаксический анализ (дерево)». Предполагается, следует рассматривать как граф с
- слова, как узлы (например, As, ап, бухгалтер)
- фразы/п в качестве меток (например, S, NP, VP)
- края связаны иерархически и
- обычно разбирает вверх или корневой узел является галлюцинировал
ROOT
(В этом случае вы можете прочитать его как ориентированный ациклический граф (DAG), так как это однонаправленная и нециклической)
Есть библиотеки, чтобы прочитать разбор в квадратных скобках, например. в NLTK
«s nltk.tree.Tree
(http://www.nltk.org/howto/tree.html):
>>> from nltk.tree import Tree
>>> output = '(ROOT (S (PP (IN As) (NP (DT an) (NN accountant))) (NP (PRP I)) (VP (VBP want) (S (VP (TO to) (VP (VB make) (NP (DT a) (NN payment))))))))'
>>> parsetree = Tree.fromstring(output)
>>> print parsetree
(ROOT
(S
(PP (IN As) (NP (DT an) (NN accountant)))
(NP (PRP I))
(VP
(VBP want)
(S (VP (TO to) (VP (VB make) (NP (DT a) (NN payment))))))))
>>> parsetree.pretty_print()
ROOT
|
S
______________________|________
| | VP
| | ________|____
| | | S
| | | |
| | | VP
| | | ________|___
PP | | | VP
___|___ | | | ________|___
| NP NP | | | NP
| ___|______ | | | | ___|_____
IN DT NN PRP VBP TO VB DT NN
| | | | | | | | |
As an accountant I want to make a payment
>>> parsetree.leaves()
['As', 'an', 'accountant', 'I', 'want', 'to', 'make', 'a', 'payment']
FWIW это как вложенная списки представлены в Лиспе. Представьте квадратные скобки вместо круглых скобок и цитаты вокруг жетонов, если это поможет. – tripleee
@ tripleee из любопытства, есть ли собственное регулярное выражение python или функция, чтобы читать Lisp как вложенный список в python? – alvas
Определенно не регулярное выражение! Я не мог найти встроенный консервный парсер, но см. Http://stackoverflow.com/questions/3182594/parsing-s-expressions-in-python и https://sexpdata.readthedocs.org/en/latest/ – tripleee