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

How to retrieve compound words from string list- 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

我尝试将字符串列表值标记为注释type.But收到的输出与预期输出不同。

规则元素 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 的开发者