2014-07-10 99 views
1

當我在Stanford Parser API中使用Tsurgeon時,我想知道如何在將節點插入到句法樹中時命名該節點。如何在將節點插入到Tsurgeon中的樹時命名節點

例如,我有兩個操作:

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

在這些操作之後,(A(B = predphrase ...))變成樹(A(MAINVP(B = predphrase ...)) )。

但是,我發現它未能在步驟1中命名MAINVP節點,並且步驟2中的操作無法找到名爲newpred的節點並引發異常。

回答

0

您需要在單個命令中給出多個Tsurgeon模式,以便第二個模式可以訪問在第一個模式中創建的命名節點。用方括號來做到這一點:

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

更簡單的方法,使修改我想你想會是像這樣:

[adjoinF (MAINVP > [email protected]) predphrase] 

這將會把匹配的節點predphraseMAINVP樹中。