1

在使用 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 的新手。

4

1 回答 1

2

首先是坏消息:您不能将 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 测试的一个:

  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 项目并设置对它的引用。右键单击您的 Ruta 项目:弹出菜单 -> 属性 -> 项目引用 -> 检查 heideltime
  2. 将 HeidelTime Jar 直接添加到类路径中。选择 Run Configurations...,选择您的脚本,切换到 Classpath 选项卡并在那里添加 jar。

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

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

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

于 2018-02-16T14:58:00.463 回答