首先是坏消息:您不能在 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 管道中调用 HeidelTime,而不是在 Ruta 脚本中。
免责声明:我是 UIMA Ruta 的开发人员