我有一个简单的 Ruta 问题。
在取自 tools.ruta.book.pdf 的示例中
段落{IF(keywordAmount > 5)->MARK(KeywordParagraph)};
是否可以执行之前定义的块或函数,而不是只执行一条语句?
UIMA Ruta 为不同的任务提供了各种动作。CALL 和 EXEC 动作能够应用脚本、块和分析引擎。
CALL 操作通常用于在规则匹配的情况下应应用其他规则时。动作的参数要么指向一个额外的脚本文件,要么指向一个脚本文件(可以是同一个),后跟块名称(带点)。因此,您可以在外部脚本文件中定义不同的块,这些块由主脚本文件单独调用。文档中的示例大部分时间都提到了类似的东西Document{->CALL(AnotherScript)};
,但这也只是一个正常的规则。该动作可以在具有任何条件的规则元素的任何类型的规则中使用。
对于您在问题中提到的示例,您可能对以下内容感兴趣:
段落{IF(kewordAmount>5) -> CALL(MyScript.BlockX))};
请注意,BlockX 会针对规则元素的每个匹配项(对于满足条件的每个段落)执行,并且仅在规则元素的匹配范围内(仅在这些段落内)执行。
EXEC 操作通常在应用附加分析引擎时使用,因为 CALL 操作对过滤设置很敏感。
如果在规则匹配的情况下需要执行附加功能,则可以向提供该功能的语言添加附加操作,或者实施解决任务的外部分析引擎。