Когда я использую 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 и выдает исключение.
Вам нужно предоставить несколько шаблонов Tsurgeon в одной команде, чтобы второй шаблон имел доступ к именованным узлам, созданным в первом. Для этого используйте квадратные скобки:
TsurgeonPattern t = Tsurgeon.parseOperation(
"[replace predphrase (MAINVP=newpred > PLACEHOLDER)]" +
"[insert predphrase >-1 > newpred]");
Простейший способ сделать модификацию, я думаю, вы хотите:
[adjoinF (MAINVP > foot@) predphrase]
Это поместит согласованную predphrase
узла в новое дерево MAINVP
.