首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从UIMA RUTA调用StanfordCoreNLPAnnotator时未找到清除依赖项

从UIMA RUTA调用StanfordCoreNLPAnnotator时未找到清除依赖项
EN

Stack Overflow用户
提问于 2014-02-21 23:13:51
回答 1查看 830关注 0票数 3

我试图从UIMA内部调用ClearTK的StanfordCoreNLPAnnotator,但无法让它工作。我在一个启用maven的RUTA项目中使用eclipse,在这个项目中,我也有用于辅助任务的Java代码。我用maven进口了Cleartk-Stanford-corenlp0.8。

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

代码语言:javascript
运行
复制
ENGINE utils.MyStanfordEngine;

..。其中utils/MyStanfordEngine.xml是使用以下java代码创建的XML描述符文件:

代码语言:javascript
运行
复制
MyStanfordAnnotator.getDescription().toXML(new FileOutputStream("descriptor/utils/MyStanfordEngine.xml"));

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

代码语言:javascript
运行
复制
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作为我的依赖工具。

有人能帮忙吗?

更新:

当我遇到问题时,我正在使用Ruta2.1.0。从那时起,我已经更新为2.2.0rc1,但是问题仍然存在。

以下是Peter的建议(谢谢!),在Java构建路径中,我引用了一个空白的启用Maven的Java项目,该项目除了导入Cleartk-Stanford-corenlp0.8之外什么也不做。我现在可以运行以下RUTA代码:

代码语言:javascript
运行
复制
TYPESYSTEM utils.CleartkRutaTypeSystem;
ENGINE utils.MyStanfordEngine;
Document{-> CALL(MyStanfordEngine)};

..。成功地为输入文件夹中的所有文档执行所有预期的注释,但最终会崩溃,只有此例外:

代码语言:javascript
运行
复制
[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开发人员正在阅读这篇文章,他们可能想要完整的东西。

有办法解决这个问题吗?我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-23 14:28:54

有几个限制需要考虑:

  • UIMARuta2.1.0不支持混合项目:需要在另一个项目中指定maven依赖项。然后,Ruta项目必须依赖于附加的java项目。
  • 2.1.0在验证重新导入其他类型系统的导入类型系统时遇到了一些问题。这里,应该使用按位置导入的方法。
  • UIMA CAS Editor 2.5.0在使用datapath解析类型系统导入时遇到了一些问题,如果类型系统描述符需要其他信息(例如数据路径),则会导致可视化创建的注释的问题。在这里,脚本类型系统描述符的创建应该包括(不仅仅是导入)所有类型的导入类型系统。这可以在首选项中进行配置(我已经有一段时间没有使用了)。通过使用按位置导入,可以再次防止此问题。
  • UIMARuta2.2.0支持mixin项目。在这里,只有CAS编辑器的问题仍然存在。

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

  1. 创建一个新的UIMA Ruta项目
  2. 让它成为一个maven项目:弹出->配置->转换为Maven项目
  3. 在pom中向添加依赖项。 org.cleartk cleartk-斯坦福-corenlp 0.8.0
  4. 在描述符文件夹或依赖项目中提供类型系统,例如,将cleartk-type-system-1.2.0cleartk-type-system-1.2.0文件夹复制到描述符文件夹。请注意,如果不调整描述符,CAS编辑器在解决导入时会出现问题。
  5. 创建一个导入类型系统、导入分析引擎和执行分析引擎的简单脚本。这里,uimaFIT组件是直接导入的,而不是描述符。如果以后的规则能够对导入的分析引擎的结果进行操作,则需要用有趣的类型扩展EXEC操作。 org.cleartk.stanford.StanfordCoreNLPAnnotator;文档{->EXEC(StanfordCoreNLPAnnotator)};
  6. 如果导入文件夹中有文本文件,那么运行这个脚本应该能够注释它。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21947084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档