Как получить уровень для каждого предмета в дереве SpaCy? - PullRequest
0 голосов
/ 02 февраля 2019

Согласно этой теме: Как получить дерево зависимостей с помощью spaCy? Я знаю, как составить список, а также выбрать свойства для печати. ​​

Что я не знаюзнать, как получить уровень для каждого элемента (не обязательно в дереве, но, по крайней мере, в виде списка).Я запустил код из https://github.com/explosion/spaCy/issues/533, чтобы получить формат "CoNLL", но индекс указывает на другое значение, кроме уровня.

Как установить этот итератор для получения уровня?(например: корень равен 0, листья - это номер самого высокого уровня)

Итератор:

head_idx = word.i-sent[0].i+1

Пробовал различные проверки, такие как количество перечислений в .children или .root.ancestors, новыдает странные результаты.

РЕДАКТИРОВАТЬ

Найден некоторый намек, но он не работает правильно:

Дерево:

Tree('conversion:NN:ROOT', ['proposed:VBN:amod', Tree('of:IN:prep', [Tree('dwelling:VBG:pobj', ['existing:VBG:amod', 'two:CD:nummod', 'storey:NNS:amod'])]), Tree('into:NNP:prep', [Tree('1x:NN:pobj', ['1:CD:nummod'])])])

Я повторяю, используя:

for pos in t.treepositions():   
    print(t[pos][0], len(pos))

, но результат странный:

proposed:VBN:amod 0
p 1
(dwelling:VBG:pobj existing:VBG:amod two:CD:nummod storey:NNS:amod) 1
existing:VBG:amod 2
e 3
t 3
s 3
(1x:NN:pobj 1:CD:nummod) 1
1:CD:nummod 2
1 3

Также с настройкой print(t[pos], len(pos)) не все в порядке.Что я не понимаю здесь?Значения глубины (отметка уровня) кажутся нормальными, а имена полей - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...