gpt4 book ai didi

stanford-nlp - 从 UIMA RUTA 调用 StanfordCoreNLPAnnotator 时找不到 cleartk 依赖项

转载 作者:行者123 更新时间:2023-12-02 03:38:15 25 4
gpt4 key购买 nike

我试图从 UIMA RUTA 中调用 ClearTK 的 StanfordCoreNLPAnnotator,但无法使其正常工作。我将 eclipse 与支持 maven 的 RUTA 项目一起使用,在该项目中我还有用于辅助任务的 Java 代码。我已经使用 maven 导入了 cleartk-stanford-corenlp 0.8。

我尝试在我的脚本中使用这一行:

ENGINE utils.MyStanfordEngine;

... 其中 utils/MyStanfordEngine.xml 是使用此 java 代码创建的 XML 描述 rune 件:

MyStanfordAnnotator.getDescription().toXML(new FileOutputStream("descriptor/utils/MyStanfordEngine.xml"));

没有出现错误,但在执行时我得到:

Exception in thread "main" org.apache.uima.resource.ResourceInitializationException: Initialization of annotator class ... failed.  
(Descriptor: file:.../descriptor/mainScriptEngine.xml)
...
Caused by: org.apache.uima.resource.ResourceInitializationException: Annotator class
"org.cleartk.stanford.StanfordCoreNLPAnnotator" was not found.
(Descriptor: file:.../descriptor/utils/MyStanfordEngine.xml)
...

我想我明白 RUTA 项目在 Maven 依赖项中找不到它,但出于协作目的,我需要坚持使用 Maven 作为我的依赖项工具。

有人可以帮忙吗?


更新:

当我遇到这个问题时,我正在使用 RUTA 2.1.0。从那以后我已经更新到2.2.0rc1,但问题仍然存在。

根据下面 Peter 的建议(谢谢!),在 Java 构建路径中,我引用了一个空白的启用 Maven 的 Java 项目,它只导入 cleartk-stanford-corenlp 0.8。我现在可以运行以下 RUTA 代码:

TYPESYSTEM utils.CleartkRutaTypeSystem;
ENGINE utils.MyStanfordEngine;
Document{-> CALL(MyStanfordEngine)};

...成功地为输入文件夹中的所有文档执行了看起来像所有预期注释的操作,但最终因以下异常而崩溃:

[Stanford Tools Logging output ...]
22.02.2014 12:44:22 org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl callAnalysisComponentProcess(406)
SCHWERWIEGEND: Exception occurred
org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator processing failed.
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:477)
at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:374)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
at org.apache.uima.ruta.ide.launching.RutaLauncher.processFile(RutaLauncher.java:168)
at org.apache.uima.ruta.ide.launching.RutaLauncher.main(RutaLauncher.java:129)
Caused by: java.lang.NullPointerException
at org.apache.uima.cas.impl.CASImpl.createFS(CASImpl.java:483)
at org.apache.uima.cas.impl.CASImpl.createAnnotation(CASImpl.java:3837)
at org.apache.uima.ruta.action.CallAction.callEngine(CallAction.java:192)
at org.apache.uima.ruta.action.CallAction.execute(CallAction.java:62)
at org.apache.uima.ruta.rule.AbstractRuleElement.apply(AbstractRuleElement.java:130)
at org.apache.uima.ruta.rule.RuleElementCaretaker.applyRuleElements(RuleElementCaretaker.java:111)
at org.apache.uima.ruta.rule.ComposedRuleElement.applyRuleElements(ComposedRuleElement.java:547)
at org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:468)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:377)
at org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:100)
at org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:73)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:47)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:40)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:29)
at org.apache.uima.ruta.RutaScriptBlock.apply(RutaScriptBlock.java:63)
at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:48)
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:475)
... 6 more
Exception in thread "main" org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator processing failed.
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:477)
at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:374)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
at org.apache.uima.ruta.ide.launching.RutaLauncher.processFile(RutaLauncher.java:168)
at org.apache.uima.ruta.ide.launching.RutaLauncher.main(RutaLauncher.java:129)
Caused by: java.lang.NullPointerException
at org.apache.uima.cas.impl.CASImpl.createFS(CASImpl.java:483)
at org.apache.uima.cas.impl.CASImpl.createAnnotation(CASImpl.java:3837)
at org.apache.uima.ruta.action.CallAction.callEngine(CallAction.java:192)
at org.apache.uima.ruta.action.CallAction.execute(CallAction.java:62)
at org.apache.uima.ruta.rule.AbstractRuleElement.apply(AbstractRuleElement.java:130)
at org.apache.uima.ruta.rule.RuleElementCaretaker.applyRuleElements(RuleElementCaretaker.java:111)
at org.apache.uima.ruta.rule.ComposedRuleElement.applyRuleElements(ComposedRuleElement.java:547)
at org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:468)
at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:377)
at org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:100)
at org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:73)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:47)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:40)
at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:29)
at org.apache.uima.ruta.RutaScriptBlock.apply(RutaScriptBlock.java:63)
at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:48)
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:475)
... 6 more

抱歉整个堆栈跟踪,但我认为如果 RUTA 开发人员正在阅读本文,他们可能需要整个过程。

有办法解决吗?我做错了什么?

最佳答案

有几个限制需要考虑:

  • UIMA Ruta 2.1.0 不支持 mixin 项目:需要在另一个项目中指定 maven 依赖项。然后,Ruta 项目必须依赖于附加的 java 项目。
  • UIMA Ruta Workbench 2.1.0 在验证按名称再次导入其他类型系统的导入类型系统时存在一些问题。在这里,应该使用按位置导入。
  • UIMA CAS Editor 2.5.0 在使用数据路径解决类型系统导入时存在一些问题,如果类型系统描述符需要其他信息(例如数据路径),这会导致可视化创建的注释出现问题。在这里,脚本的类型系统描述符的创建应该包括(不仅是导入)所有类型的导入类型系统。这可以在首选项中配置(我已经有一段时间没用过了)。使用按位置导入可以再次避免此问题。
  • UIMA Ruta 2.2.0 支持 mixin 项目。在这里,只剩下 CAS 编辑器的问题。

这个描述的项目可以通过以下方式创建(使用 UIMA Ruta 2.2.0):

  1. 创建一个新的 UIMA Ruta 项目
  2. 将其设为maven项目:popup->Configure->Convert to Maven Project
  3. 在pom中添加对cleartk-stanford-corenlp的依赖

    <dependency>
    <groupId>org.cleartk</groupId>
    <artifactId>cleartk-stanford-corenlp</artifactId>
    <version>0.8.0</version>
    </dependency>
  4. 在描述 rune 件夹或依赖项目中提供类型系统,例如,将 cleartk-type-system-1.2.0org 文件夹复制到描述 rune 件夹。请注意,如果描述符未调整,CAS 编辑器将无法解析导入。
  5. 创建一个导入类型系统、导入分析引擎并执行分析引擎的简单脚本。在这里,直接导入 uimaFIT 组件而不是描述符。如果以后的规则应该能够对导入的分析引擎的结果进行操作,则需要使用有趣的类型扩展 EXEC 操作。

    TYPESYSTEM org.cleartk.TypeSystem;
    UIMAFIT org.cleartk.stanford.StanfordCoreNLPAnnotator;
    Document{->EXEC(StanfordCoreNLPAnnotator)};
  6. 如果导入文件夹中有文本文件,那么运行这个脚本应该可以对其进行注释。

此示例直接使用 StanfordCoreNLPAnnotator 而不是额外的分析引擎,但切换到另一个实现或分析引擎应该很简单。

关于stanford-nlp - 从 UIMA RUTA 调用 StanfordCoreNLPAnnotator 时找不到 cleartk 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com