UIMA RUTA:如何检查String变量是否在StringList中?

时间:2014-03-04 20:11:31

标签: uima ruta

我正在寻找类似的东西:

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

我知道这是破解的代码,但我想知道如何通过文本文件提供术语列表并注释所有具有特定功能(示例中的引理)值的Token的实例列表中的那些。我知道字符串相等是可能的,但我无法在文档中找到列表成员资格或弄清楚自己。

谢谢!

1 个答案:

答案 0 :(得分:3)

UIMA Ruta 2.1.0:不幸的是,INLIST条件不接受其他参数,只检查匹配注释的覆盖文本。所以你不能使用它。 CONTAINS条件接受另一个参数,但不接受单词列表。您也不能将单词列表与MARKFAST一起应用,因为字典检查是基于令牌的。

此问题的最佳解决方案是要求开发人员添加功能,或添加提供功能的外部条件。

在UIMA Ruta 2.1.0中,您可以使用StringListExpressions而不是单词列表:

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

在UIMA Ruta 2.2.0中,INLIST条件能够处理一个额外的参数,该参数替换匹配注释的覆盖文本,这将解决您的问题:

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

免责声明:我是Apache UIMA Ruta的开发人员。