【问题标题】:Add HeidelTime as Analysis Engine in UIMA Ruta Workbench在 UIMA Ruta Workbench 中添加 HeidelTime 作为分析引擎
【发布时间】:2018-02-14 14:06:47
【问题描述】:

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

【问题讨论】:

    标签: java uima ruta heideltime


    【解决方案1】:

    首先是坏消息:您不能在 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 管道中调用 HeidelTime,而不是在 Ruta 脚本中。

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

    【讨论】:

    • 可以添加 TreeTaggerWrapper 分析引擎(也包含在 HeidelTime 中)以实现更好的标记化和 PoS 标记,从而提高 HeidelTime 的准确性(参见:github.com/HeidelTime/heideltime/wiki/TreeTaggerWrapper)。在执行 HeidelTime 之前,我最终使用了 Peter Kluegl 的解决方案(非常感谢!)和一个额外的 ENGINE TreeTaggerWrapper; EXEC(TreeTaggerWrapper);
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多