我之前使用Ruta注释框架来注释输入文本我使用的是来自classpath的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:我运行批次时遇到的问题不是针对单个实例;
答案 0 :(得分:0)
我对NUM,SPECIAL等预定义类型有同样的问题。 我在我的管道中集成了来自ruta的bibtex-examples,并尝试在答案1(只是年份脚本)中调用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)
另一个问题是我无法宣布自己的" temorary"类型(例如" Marker")在" aaa"等语句中 - >标记。 错误读取"无法解析类型:标记 它在RUTA项目中运行良好,但不在我的"真实"项目