我想先运行HeidelTime,然后再使用UIMA Ruta脚本添加和改进结果注释。我当然可以在Java的管道中按顺序运行它们,但是如果可以从UIMA Ruta Workbench中进行操作,将更加方便。

根据我对UIMA Ruta Manual的了解,可以使用UIMAFIT关键字添加外部分析引擎。我一直在寻找将HeidelTime独立JAR添加到CLASSPATH的方法,但是我一直无法让UIMA Ruta Workbench检测HeidelTime分析器。

所以我的问题是:如何在UIMA Ruta工作台的UIMA Ruta脚本中方便地包含HeidelTime?请注意,我是UIMA,UIMA Ruta和Eclipse的新手。

最佳答案

首先是个坏消息:您不能将UIMA Ruta中的HeidelTime用作uimaFIT分析引擎,因为它不是uimaFIT组件。它实际上可以工作,但由于在HeidelTime的initialize()期间对默认值的严格要求以及对非字符串参数值的要求,因此在这种情况下不起作用。 UIMA Ruta不支持将其用于参数值的声明注入。它看起来像下面的样子:

UIMAFIT de.unihd.dbs.uima.annotator.heideltime.HeidelTime(Language,german,Date,True,Time,True,Duration,True,Set,True,Temponym,False,Type,news);


好消息是您可以通过使用分析引擎描述HeidelTime.xml来使用HeidelTime。但是,HeidelTime具有一些特殊的构建,UIMA Ruta不支持该构建,因此您需要进行一些自定义。

为了从Ruta脚本中调用HeidelTime,您需要做什么?
有几种选择。这是我使用UIMA Ruta Workbench 2.6.1测试的一个:


将描述符HeidelTime.xml和HeidelTime_TypeSystem.xml复制到Ruta项目中的描述符文件夹中。
修改HeidelTime.xml描述符:重新链接类型系统导入以指向同一文件夹:<import location="HeidelTime_TypeSystem.xml"/>
对标记和句子的其他描述也可以选择相同
将所有描述导入脚本中,然后调用分析引擎,例如,使用模拟标记和句子:

ENGINE HeidelTime;
TYPESYSTEM HeidelTime_TypeSystem;
ANY{-> Token};// mock tokenizer and sentence splitter
(# PERIOD){-> Sentence};
(PERIOD # PERIOD){-> Sentence};
EXEC(HeidelTime, {Timex3});
t:Timex3{t.timexType == "DATE"}; // do something with a date



为此,您需要做的最后一件事是将HeidelTime添加到脚本的启动委托的类路径中。有两种选择:


将HeidelTime项目导入您的工作区中,并设置对它的引用。右键单击您的Ruta项目:弹出菜单->属性->项目引用->检查heideltime
将HeidelTime Jar直接添加到类路径。选择“运行配置...”,选择脚本,切换到“类路径”选项卡,然后在其中添加jar。


我建议使用选项1,因为无论如何您都需要描述。

总的来说,我当然建议在Java管道而不是Ruta脚本中调用HeidelTime。

免责声明:我是UIMA Ruta的开发人员

09-26 22:35