UIMA RUTA - 如何按特定顺序处理单词?

UIMA RUTA - How To Process Words In A Particular Order?

我在 Java 中编写了一个 UIMA 注释引擎,我想将规则从 Java 移到 RUTA 中。我的 Java 引擎所做的其中一件事是处理单词并以特定顺序应用规则,这与句子中单词的顺序不同。

用例句“系统请求用户名和密码。”不会按该顺序处理。相反,我的规则是根据 Dependency 注释的结构应用的,因此句子改为按此顺序处理 [requests, The, system, username, ., a, and, password]

因此我想知道是否有一种简单的方法可以以不同的顺序应用 RUTA 规则,而无需重新排序 CAS,也许使用索引?我可以继续使用 Java 来创建这样的索引注释: The(2) system(3) requests(1) a(6) username(4) and(7) password(8).(5)但我不知道如何使用 forEach BLOCK 或其他一些 RUTA 逻辑来按索引顺序处理这些。

如果你想知道为什么我需要按顺序处理它们,原因是我的规则的应用需要依赖层次结构。依赖的注解由governor/parent.

的注解驱动

我找到了一种使用块来完成此操作的方法。由于块可以递归,我首先创建一个子块,它查找父项,然后调用父块。例如,使用依赖结构我可以在依赖之前注释调控器(当你到达 ROOT 时使用特殊逻辑)。

d:dep.Dependency{d.DependencyType!="ROOT"}->{
    d.Governor{-IS(MyItem)}->{
        CALL(myPackage.AnnotateGovernor);
    };
};