uima - 如何声明#除了换行符以供以后使用?
问题描述
我对规则元素之间的文本使用跳过通配符#
。
但是,我总是每行标记,因此我可以使用#{-CONTAINS(BREAK)}
例如RuleElementA #{-CONTAINS(BREAK)} RuleElementB
必须在一行
上我如何声明/保存#{-CONTAINS(BREAK)}
以便以后可以使用快捷方式,例如
RuleElementA sc RuleElementB
?
解决方案
您应该首先尝试注释您的构建块(即线条)并基于它创建目标注释(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);
推荐阅读
- mysql - 用于将字符串从一个单元格分成两个单元格的棘手 SQL
- r - 用不同列中的另一个值替换列中的 0 - R
- apache-camel - 如何在 Camel 3.XX 中修复每条路线的多个输入?
- material-design - Uno平台材料卡使用Pathicon
- android - 如何在颤动上打电话?
- pdf - 通过 document.addEventListener("keydown") 向内置 pdf 查看器添加自定义键盘快捷键以捕获 PDR URL
- reactjs - WDS 断开连接!sockjs-node 被拒绝,webpack-dev-middleware,expressjs
- sql - 如果在关闭表单时某些字段为空,则从表中删除记录
- python - 如何使python代码准备好某个目录的内容并将其添加到列表中?
- python-3.x - 如何在注销过程中重置日志适配器?