Как назвать узел при вставке его в дерево в Цургоне

1

Когда я использую Tsurgeon в API-интерфейсе Stanford Parser, мне интересно, как назвать узел при вставке его в синтаксическое дерево.

например, у меня есть две операции:

Tsurgeon.parseOperation("replace predphrase (MAINVP=newpred > PLACEHOLDER)");//Step 1
Tsurgeon.parseOperation("insert predphrase >-1 > newpred")//Step 2

После этих операций дерево (A (B = предфраз)...) становится (A (MAINVP (B = предфраз)...))).

Однако я обнаружил, что он не называет узел MAINVP на шаге 1, и операция на шаге 2 не может найти узел с именем newpred и выдает исключение.

Теги:
nlp
stanford-nlp

1 ответ

0
Лучший ответ

Вам нужно предоставить несколько шаблонов Tsurgeon в одной команде, чтобы второй шаблон имел доступ к именованным узлам, созданным в первом. Для этого используйте квадратные скобки:

TsurgeonPattern t = Tsurgeon.parseOperation(
    "[replace predphrase (MAINVP=newpred > PLACEHOLDER)]" +
    "[insert predphrase >-1 > newpred]");

Простейший способ сделать модификацию, я думаю, вы хотите:

[adjoinF (MAINVP > foot@) predphrase]

Это поместит согласованную predphrase узла в новое дерево MAINVP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню