2016-11-01 54 views
2

示例腳本:如何從字符串檢索複合詞列表 - UIMA RUTA

DECLARE Name,TEST; 

"Peter"->Name; 
"der Groot"->Name; 
"Robert"->Name; 
"de Leew"->Name; 
"O'Sullivan"->Name; 

STRING s; 
STRINGLIST slist; 
Name{-> MATCHEDTEXT(s), ADD(slist,s),LOG(s)}; 
    ANY+ {INLIST(slist)->MARK(TEST)}; 

接收的輸出:

Peter 
Robert 

預期輸出:

Peter 
der Groot 
Robert 
de Leew 
O'Sullivan 

樣品輸入:

Peter 
der Groot 
Robert 
de Leew 
O'Sullivan 

我試圖紀念StringList的值轉換成註釋type.But接收到的輸出與預期輸出不同。

回答

2

規則元素ANY+的條件會驗證每個ANY,因此會失敗,並且只會匹配單個標記。

最後一條規則是否應該在Name註釋之後直接註釋?

如果沒有,你可以這樣做:

Name{-> MATCHEDTEXT(s), ADD(slist,s)}; 
MARKFAST(TEST, slist); 

如果是的話,因爲你沒有用正確的跨度候選人的情況變得更加複雜。你不能用ANY和INLIST的組合解決這個問題,你需要在列表中需要一個正確的跨度或片段。我寧願推薦另外的固定規則:

Name{-> MATCHEDTEXT(s), ADD(slist,s)}; 
MARKFAST(TEST, slist); 
ANY{-ENDSWITH(Name)} @TEST{-> UNMARK(TEST)}; 

免責聲明:我UIMA魯塔

+0

喜彼得我面臨this.I've一個新的問題,開發商編輯輸入文件。我沒有在TEST註釋中找到「der Groot」。 –

+0

是否可能會改變大小寫?你可以添加示例輸入嗎? –

+0

我已經添加了輸入。 –