如何声明# 除了换行符供以后使用?

How to declare # except line break for later usage?

我对规则元素之间的文本使用跳过通配符 #
但是,我总是每行标记,因此我可以使用 #{-CONTAINS(BREAK)}
例如 RuleElementA #{-CONTAINS(BREAK)} RuleElementB 必须在一行上
我怎样才能 declare/save #{-CONTAINS(BREAK)} 以便我以后可以使用像
这样的快捷方式 RuleElementA sc RuleElementB ?

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

因此,您可以按照一种简单的方法对输入文档中的所有行进行注释:

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

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

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

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

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);