Можно ли узнать какие слова иерархически связаны с другим словом(являются его потомками) в предложении с помощью синтаксического анализа Natasha?

Можно ли узнать какие слова иерархически связаны с другим словом(являются его потомками) в предложении с помощью синтаксического анализа Natasha? Нужно чтобы они были в подчиненной роли по отношению к этому другому слову.


Ответы (1 шт):

Автор решения: TomatoJuice

Решение было найдено. Модуль Natasha при синтаксическом разборе даёт каждому слову head_id, которое представляет из себя id родителя. Например:

┌──────► Автобус     nsubj
│     ┌► ,           punct
│ ┌─┌─└─ едущий      
│ │ └──► сюда        advmod
│ └────► ,           punct
└─────┌─ остановился 
      └► .           punct
SyntaxMarkup(tokens=[SyntaxToken(id='1_1', text='Автобус', head_id='1_6', rel='nsubj'), SyntaxToken(id='1_2', text=',', head_id='1_3', rel='punct'), SyntaxToken(id='1_3', text='едущий', head_id='1_1', rel='acl'), SyntaxToken(id='1_4', text='сюда', head_id='1_3', rel='advmod'), SyntaxToken(id='1_5', text=',', head_id='1_3', rel='punct'), SyntaxToken(id='1_6', text='остановился', head_id='1_0', rel='root'), SyntaxToken(id='1_7', text='.', head_id='1_6', rel='punct')])
→ Ссылка