我想添加自定义UIMA RUTA规则条件。我在Eclipse中有一个现有的UIMA Ruta项目。到目前为止,我使用基本的注释器存根在同一个项目中创建了一个源文件:
package mynamespace.extensions;
[imports]
public class MyNewCondition extends AbstractRutaCondition {
private final String para1;
public MyNewCondition(String para1) {
super();
this.para1 = para1;
}
@Override
public EvaluatedCondition eval(AnnotationFS annotation,
RuleElement element, RutaStream stream, InferenceCrowd crowd) {
// TODO Auto-generated method stub
if (para1 == "hfoo")
return new EvaluatedCondition(this, true);
else
return new EvaluatedCondition(this, false);
}
public String getPara() {
return para1;
}
}
文件编译到target / classes / ...文件夹,但是当我创建RUTA脚本时:
DECLARE Test;
SW{MyNewCondition("foo") -> MARK(Test)};
... Eclipse告诉我“MyNewCondition”没有定义,当我运行它时,我得到:“第40行出错”(“:在控制台上找不到可行的选择”。我认为我需要做一些进一步导入,但不知道如何。我试图在Github存储库中的Extension示例项目中工作,但我不知道从哪里开始,因为脚本文件不包含任何进一步的导入,但关联的xml描述符文件做但是当这些自动生成时,我不知道这是我应该改变的还是其他的东西。
我也尝试通过Eclipse的构建路径选项从第二个项目导入相同的新条件类型,但也没有运气。
有人可以帮忙吗?感谢。
答案 0 :(得分:2)
您需要至少三个类来添加也在UIMA Ruta Workbench中解决的新条件:
条件本身仅包含应添加到语言中的功能。分析引擎当然知道任何外部实现都没有导致奇怪的解析异常,例如“(”未找到。有时应该改进。分析引擎提供配置参数additionalExtensions
,列出语言的所有已知扩展如果你没有使用UIMA Ruta Workbench,你需要在这个参数中添加你的IRutaConditionExtension实现.IIDEConditionExtension的实现为UIMA Ruta Workbench提供了必要的功能,即语法检查,语法高亮等等。它使Workbench能够生成正确的描述符。它将你的IRutaConditionExtension实现添加到相应的参数。当然,Workbench的这个扩展需要在安装在你的UIMA Ruta Workbench Eclipse实例中的Eclipse插件中实现,以便可以在Workbench中找到。有一个扩展点,您需要扩展它才能同时了解您执行IRutaConditionExtension和IIDEConditionExtension。
有一个示例项目提供了所有可能的语言元素的实现。该项目包含分析引擎的实现以及UIMA Ruta Workbench的实现,因此是Eclipse插件(请注意pom文件)。
关于ExampleCondition条件扩展,有三个重要的点/类:
ExampleCondition.java
提供新条件的实现,用于评估日期ExampleConditionExtension.java
提供分析引擎的扩展。它知道条件的名称,它的实现,可以创建该条件的新实例,并且能够描述解释组件的条件。ExampleConditionIDEExtension
提供编辑器的语法检查和语法着色的关键字。 plugin.xml
定义Workbench的扩展名:
<extension point="org.apache.uima.ruta.ide.conditionExtension">
<condition
class="org.apache.uima.ruta.example.extensions.ExampleConditionIDEExtension"
engine="org.apache.uima.ruta.example.extensions.ExampleConditionExtension">
</condition>
</extension>
如果您不使用UIMA Ruta Workbench或只想在UIMA管道中应用规则,则只需要ExampleCondition
和ExampleConditionExtension
,并且需要将org.apache.uima.ruta.example.extensions.ExampleConditionExtension
添加到您的UIMA Ruta分析引擎(描述符)的additionalExtensions
参数。
在同一个工作区中使用Java项目添加新条件尚未经过测试,但至少由于使用Eclipse的扩展点机制包含扩展而缺少Workbench支持。