Можно ли узнать какие слова иерархически связаны с другим словом(являются его потомками) в предложении с помощью синтаксического анализа 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')])