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

时间:2018-02-14 14:06:48

标签: java uima ruta heideltime

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

1 个答案:

答案 0 :(得分: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
    
  5. 为了使其工作,您需要做的最后一件事是将HeidelTime添加到脚本的启动委托的类路径中。有两种选择:

    1. 在工作区中导入HeidelTime项目并设置对它的引用。右键单击您的Ruta项目:弹出菜单 - &gt;属性 - &gt;项目参考 - &gt;检查heideltime
    2. 将HeidelTime Jar直接添加到类路径中。选择Run Configurations ...,选择您的脚本,切换到Classpath选项卡并在那里添加jar。
    3. 我建议您选择1,因为无论如何您都需要说明。

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

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