首先是坏消息:您不能将 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 直接添加到类路径中。选择 Run Configurations...,选择您的脚本,切换到 Classpath 选项卡并在那里添加 jar。
我会推荐选项 1,因为无论如何您都需要描述。
总的来说,我当然建议在 Java 管道中而不是在 Ruta 脚本中调用 HeidelTime。
免责声明:我是 UIMA Ruta 的开发人员