Полагаю, я пытаюсь ориентироваться в дереве разбора SpaCy более тупо, чем предусмотрено.
Например, если у меня есть предложения типа: «Он был гением» или «Пес был зеленым»"Я хочу иметь возможность сохранять объекты в переменных (" гений "и" зеленый ").
token.children предоставляет синтаксические зависимости IMMEDIATE, поэтому для первого примера потомками «was» являются «он» и «гений», а затем «a» является потомком «гения».Это не так полезно, если я просто хочу, чтобы весь компонент был «гением».Я не уверен, как восстановить его из token.children или если есть лучший способ.
Я могу выяснить, как сопоставить «есть» и «было», используя token.text (часть того, что япытаюсь сделать), но я не могу понять, как вернуть весь компонент "гений", используя информацию о детях.
import spacy
nlp = spacy.load('en_core_web_sm')
sent = nlp("He was a genius.")
for token in sent:
print(token.text, token.tag_, token.dep_, [child for child in token.children])
Это вывод:
Он PRP nsubj []
был корнем VBD [Он, гений,.]
DT det []
гений NN attr [a]
.,пункт []