2014-03-04 42 views
2

我期待這樣的事情:UIMA RUTA:如何檢查String變量是否在StringList中?

WORDLIST lemmas = 'lemmas.txt'; 
DECLARE Test;  
BLOCK(AnnotateTests) Token{} { 
    STRING lemma; 
    Token{->GETFEATURE("lemma", lemma)}; 
    INLIST(lemma, lemmas) -> MARK(Action); // <- How to do this? 
} 

我知道這是斷碼的,但我想知道我可以通過一個文本文件中提供的一系列術語和註釋的,說所有的情況下,令牌,在列表中有一定的特徵(示例中的引理)值。我知道字符串相等是可能的,但列表成員資格我無法在文檔中找到或找出我自己。

謝謝!

+0

UIMA Ruta支持現在在大多數情況下也支持原始類型的表達式。因此,您也可以在符合令牌的規則元素中直接使用「Token.lemma」。 –

回答

3

UIMA Ruta 2.1.0:不幸的是,INLIST條件不接受附加參數,但只檢查匹配註釋的覆蓋文本。所以你不能使用它。 CONTAINS條件接受額外的參數,但不包含單詞列表。由於字典檢查是基於標記的,因此您也可以不使用MARKFAST應用單詞列表。

此問題的最佳解決方案是要求開發人員添加功能或添加提供功能的外部條件。

在UIMA魯塔2.1.0,您可以使用StringListExpressions代替單詞列表:

STRINGLIST LemmaSL = {"cat", "dog"}; // the content of the wordlist 
Token{CONTAINS(LemmaSL, Token.lemma) -> MARK(Action)}; 

在UIMA魯塔2.2.0,該INLIST條件是能夠處理替換的覆蓋文本的附加參數匹配的註釋,這應該解決您的問題:

WORDLIST LemmaList = 'lemmas.txt'; 
Token{INLIST(LemmaList, Token.lemma) -> MARK(Action)}; 

免責聲明:我的Apache UIMA魯塔的開發商。

+1

我認爲你是第二個請求這種功能的用戶,所以我會加入它。 –

+0

我在UIMA Ruta 2.2.0中爲INLIST添加了另一個參數,希望在一週內發佈。 –

+0

這很好,謝謝。 –