首页 > 解决方案 > 如何声明#除了换行符以供以后使用?

问题描述

我对规则元素之间的文本使用跳过通配符#
但是,我总是每行标记,因此我可以使用#{-CONTAINS(BREAK)}
例如RuleElementA #{-CONTAINS(BREAK)} RuleElementB必须在一行
上我如何声明/保存#{-CONTAINS(BREAK)}以便以后可以使用快捷方式,例如
RuleElementA sc RuleElementB

标签: uimaruta

解决方案


您应该首先尝试注释您的构建块(即线条)并基于它创建目标注释(UIMA Ruta 中所谓的自底向上匹配策略)。

因此,您可以通过以下一种简单的方法来注释输入文档中的所有行:

DECLARE Line;
ADDRETAINTYPE(BREAK);
BREAK #{-> MARKONCE(Line)} @BREAK;
REMOVERETAINTYPE(BREAK);

这将允许您在创建目标注释时保持在线级别。然后,您可以遍历Line文档中的所有 s 以确保跨度的正确性:

BLOCK (forEach) Line{CONTAINS(W)}{
    RuleElementA # RuleElementB
}

或者,您可以使用默认情况下作为 UIMA Ruta 安装包的一部分的 PlainTextAnnotator。这种方法可以保证您更好地进行线路检测:

ENGINE utils.PlainTextAnnotator;
TYPESYSTEM Utils.PlainTextTypeSystem;

EXEC(PlainTextAnnotator, {Line, EmptyLine});
DECLARE FreeLine, LineFree;
ADDRETAINTYPE(WS);
EmptyLine Line{-> FreeLine};
Line{-> LineFree} BREAK[1,2] @EmptyLine;
Line{-> TRIM(WS)};
FreeLine{-> TRIM(WS)};
LineFree{-> TRIM(WS)};
REMOVERETAINTYPE(WS);

推荐阅读