如何从字符串列表中检索复合词 - UIMA RUTA

时间:2016-11-01 06:31:27

标签: 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值标记为注释类型。但是接收的输出与预期的输出不同。

1 个答案:

答案 0 :(得分: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 Ruta的开发者