我正在使用 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:当我不是为单个实例运行批处理时,我遇到了这个问题;
最佳答案
我对 NUM、SPECIAL 等预定义类型也有同样的问题。
我将来自 ruta 的 bibtex-examples 集成到我的管道中,并尝试像答案 1(只是 Year 脚本)中那样调用 rutaEngine。
我也使用 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 项目内部运行良好,但在我的“真实”项目外部运行良好。
关于apache - 文档不明确,使用以下之一代替 : org. apache.uima.ruta.type.Document uima.tcas.DocumentAnnotation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40780215/