直到现在,我一直在通过创建AnalysisEngine和CAS以及处理引擎来运行maven项目中的ruta脚本。为此,我将所有脚本和描述符文件(Engine& TypeSystem)放入maven项目的scr / main / resources文件夹中。
现在我想将脚本和TypeSystem文件放在外部路径中,并将路径动态传递给运行脚本的java代码。有可能吗?如果是这样,怎么样?
我只是将文件(脚本和描述符)放在外部路径中并传递新路径以实例化AnalysisEngine,如下所示;
final AnalysisEngine engine = AnalysisEngineFactory.createEngine("home/admin/Desktop/TEST_ScriptFolder/com/textjuicer/ruta/date/Dazzle_ChapRef_UpdatedEngine");
错误
org.apache.uima.util.InvalidXMLException:无法解析导入。没有名称为" home / admin / Desktop / TEST_ScriptFolder / com / textjuicer / ruta / date / Dazzle_ChapRef_UpdatedEngine.xml"在类路径或数据路径中找到。 (描述符:) at org.apache.uima.resource.metadata.impl.Import_impl.findAbsoluteUrl(Import_impl.java:117) at org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription(AnalysisEngineFactory.java:869) 在org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine(AnalysisEngineFactory.java:107) 在com.textjuicer.ruta.date.ArtifactAnnotator.getAllAnnotations(ArtifactAnnotator.java:93) 在APPLICATIONStyle.XmiTransformer.parseXMI(XmiTransformer.java:33) 在APPLICATIONStyle.ApplyStyle.applyStyleOnDocx(ApplyStyle.java:76)
答案 0 :(得分:1)
有两层:
Ruta中的资源查找有两个阶段,它在配置参数中指定的绝对路径中搜索它们。如果未找到资源,则会在类路径中搜索它。因此,您需要设置配置参数:脚本位于scriptPaths
,描述符位于descriptorPaths
,单词列表位于resourcePaths
。有关详细信息,请参阅documentation。
描述符中导入的问题可以通过在UIMA ResourceManager中设置数据路径或通过将导入更改为" location"来解决。而不是" name"。数据路径可以用作类路径的替代。如果ruta描述符指定了ruta-maven-plugin,则Ruta描述符使用按位置导入。
免责声明:我是UIMA Ruta的开发者