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