当我在Stanford Parser API中使用Tsurgeon时,我想知道在将节点插入语法树时如何命名节点。
例如,我有两个操作:Tsurgeon.parseOperation("replace predphrase (MAINVP=newpred > PLACEHOLDER)");//Step 1
Tsurgeon.parseOperation("insert predphrase >-1 > newpred")//Step 2
在这些操作之后,树(A(B =前言...))变为(A(MAINVP(B =前导词......)))。
但是,我发现它未能在步骤1中命名MAINVP节点,并且步骤2中的操作无法找到名为newpred的节点并抛出异常。
答案 0 :(得分:0)
您需要在一个命令中提供多个Tsurgeon模式,以便第二个模式可以访问在第一个模式中创建的命名节点。使用方括号来执行此操作:
TsurgeonPattern t = Tsurgeon.parseOperation(
"[replace predphrase (MAINVP=newpred > PLACEHOLDER)]" +
"[insert predphrase >-1 > newpred]");
一种更简单的方法来进行我认为你想要的修改就是这样:
[adjoinF (MAINVP > foot@) predphrase]
这会将匹配的节点predphrase
放在新的MAINVP
树中。