在 UIMA Ruta 中添加 HeidelTime 作为分析引擎 Workbench

Add HeidelTime as Analysis Engine in UIMA Ruta Workbench

在使用 UIMA Ruta 脚本添加和改进生成的注释之前,我想 运行 HeidelTime。我当然可以在 Java 的管道中按顺序 运行 这些,但如果可以从 UIMA Ruta Workbench.

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

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

首先是个坏消息:您不能将 UIMA Ruta 中的 HeidelTime 用作 uimaFIT 分析引擎,因为它不是 uimaFIT 组件。它实际上可以工作,但在这种情况下不会,因为在 HeidelTime 的 initialize() 期间对默认值的严格要求以及 non-string 参数值的要求。 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 HeidelTime.xml。但是,HeidelTime 有一些 UIMA Ruta 不支持的特殊构建,因此您需要进行一些自定义。

要从 Ruta 脚本中调用 HeidelTime,您需要做什么? 有几种选择。这是我用 UIMA Ruta Workbench 2.6.1:

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

    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 添加到脚本启动委托的类路径中。有两种选择:

  1. 在您的工作区中导入 HeidelTime 项目并设置对它的引用。 Right-click 您的 Ruta 项目:弹出菜单 -> 属性 -> 项目引用 -> 检查 heideltime
  2. 将 HeidelTime Jar 直接添加到类路径中。 Select 运行 配置...,select 你的脚本,切换到类路径选项卡并在那里添加 jar。

我推荐选项 1,因为无论如何您都需要描述。

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

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