【问题标题】:UIMA RUTA - How To Process Words In A Particular Order?UIMA RUTA - 如何以特定顺序处理单词?
【发布时间】:2020-10-20 15:03:44
【问题描述】:

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

使用例句“系统请求用户名和密码”。不会按该顺序处理。相反,我的规则是基于依赖注释的结构应用的,所以句子是按这个顺序处理的 [requests, The, system, username, ., a, and, password]

因此我想知道是否有一种简单的方法可以以不同的顺序应用 RUTA 规则,而无需重新排序 CAS,也许使用索引?我可以继续使用 Java 来创建这样的索引注释:(2)系统(3)请求(1)a(6)用户名(4)和(7)密码(8)。(5)但我不能t 弄清楚如何使用 forEach BLOCK 或其他一些 RUTA 逻辑来按索引顺序处理这些。

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

【问题讨论】:

  • 不要将 RUTA 视为一个处理单词的系统(按顺序);它处理规则和注释。是的,规则按顺序评估,注释按顺序匹配。但是注释可以具有本身就是注释的特征,并且您可以编写(以语法类比)看起来像“标记任何动词v,其主题特征v.subject匹配正则表达式XXYY”的规则。所以你的赌注是将你的 dep 树翻译成注释特征,并根据这个翻译编写规则。订单可能不会发挥这样的作用。
  • 谢谢,我了解注释的深度,因为我已经构建了一个java注释引擎。文字只是描述我的困境的一种简单方式。无论是单词还是注释,我都无法按照它们流式传输的顺序进行处理。我必须更改该顺序,因为我的逻辑取决于它。我必须知道涵盖“请求”一词的注释才能设置涵盖“系统”一词的适当注释。由于系统在句子中的请求之前出现,我不能先在系统上创建注释,因为那时它的调控器将没有注释。
  • 其实GPI你可能已经给了我一个想法。我会去尝试一下,但如果其他人在这方面有经验,我将非常感谢您的想法。
  • 您的问题解决了吗?如果是,你能分享你的解决方案吗?如果没有,您的用例可能需要以不同的方式处理。您可能不需要按顺序表示依赖关系,也许特征检查的结合就足够了。
  • 不幸的是我找不到解决方案。我恢复到使用 UIMA/UIMAFit 编写自己的 java 代码来阅读和排序句子中的单词/注释。我试图想其他方法来解决我的问题,但最后我总是回到有序处理作为简单的答案。

标签: java uima ruta


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多