【问题标题】:Document is ambiguous, use one of the following instead : org.apache.uima.ruta.type.Document uima.tcas.DocumentAnnotation文档不明确,请改用以下选项之一:org.apache.uima.ruta.type.Document uima.tcas.DocumentAnnotation
【发布时间】:2016-11-24 07:23:27
【问题描述】:

我使用 Ruta 注释框架来注释输入文本,之前我使用的是类路径中的 Ruta 脚本。但是根据客户的要求,我们必须将 Ruta 脚本移出代码之外,所有这些都需要与系统解耦。我可以实现这一切。我正在做的是在系统启动时,我正在读取所有引擎和脚本资源并缓存到 goggle gauvas 缓存中,一切正常。唯一的问题是有时在运行批处理(并发进程)时 Ruta 框架抛出异常。

参见下面的堆栈跟踪。

Caused by: java.lang.IllegalArgumentException: Document is ambiguous, use one of the following instead : org.apache.uima.ruta.type.Document uima.tcas.DocumentAnnotation at org.apache.uima.ruta.RutaEnvironment.getType(RutaEnvironment.java:367) at org.apache.uima.ruta.RutaEnvironment.getType(RutaEnvironment.java:376) at org.apache.uima.ruta.RutaEnvironment.getType(RutaEnvironment.java:376) at org.apache.uima.ruta.expression.type.SimpleTypeExpression.getType(SimpleTypeExpression.java:45) at org.apache.uima.ruta.rule.RutaTypeMatcher.getType(RutaTypeMatcher.java:247) at org.apache.uima.ruta.rule.RutaTypeMatcher.getTypes(RutaTypeMatcher.java:262) at org.apache.uima.ruta.rule.RutaTypeMatcher.getMatchingAnnotations(RutaTypeMatcher.java:58) at org.apache.uima.ruta.rule.RutaRuleElement.getAnchors(RutaRuleElement.java:52) at org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:59) 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.RutaScriptBlock.apply(RutaScriptBlock.java:63) at org.apache.uima.ruta.action.CallAction.callScript(CallAction.java:96) at org.apache.uima.ruta.action.CallAction.execute(CallAction.java:78) 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:554) at org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84) at org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:475) at org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:384) 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:477) ... 22 more

PS:当我为单个实例运行批处理时,我会遇到这个问题;

【问题讨论】:

  • 我假设你使用 ruta
  • @PeterKluegl 根据你的说法,我正在使用 2.2.0 文档已在 2.5.0 中删除,所以我认为这不会造成问题。
  • 是和不是。问题是短名称存在冲突。发生异常是因为类型在那里。 DocumentAnnotation 有 Document 的别名。结果,脚本无法解析给定字符串“Document”的类型
  • 如果有一些包含不同版本的附加库,你能检查依赖关系吗?
  • 您建议的更改现在运行良好,我将检查其他 lib 依赖项

标签: apache uima ruta


【解决方案1】:

我对 NUM、SPECIAL 等预定义类型也有同样的问题。 我将来自 ruta 的 bibtex-examples 集成到我的管道中,并尝试像在答案 1 中那样调用 rutaEngine(只是 Year 脚本)。 我也使用 DKPro core.opennlp.OpenNlpSegmenter。 运行脚本时,我收到与原始问题类似的错误:

Caused by: java.lang.IllegalArgumentException: NUM is ambiguous, use one of 
the following instead : de.tudarmstadt.ukp.dkpro.core.api.syntax.type.dependency.NUM 
org.apache.uima.ruta.type.NUM 
at org.apache.uima.ruta.RutaEnvironment.getType(RutaEnvironment.java:459)

另一个问题是我不能在“aaa”-> Marker 等语句中声明自己的“临时”类型(例如“Marker”)。 错误显示“无法解析类型:标记 它在 RUTA 项目中运行良好,但在我的“真实”项目中却不行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多