我无法在我的简单管道中运行uima ruta脚本。我正在使用以下库:
我正在使用
org.apache.uima.fit.pipeline.SimplePipeline
与:SimplePipeline.runPipeline(
UriCollectionReader.getCollectionReaderFromDirectory(filesDirectory), //directory with text files
UriToDocumentTextAnnotator.getDescription(),
StanfordCoreNLPAnnotator.getDescription(),//stanford tokenize, ssplit, pos, lemma, ner, parse, dcoref
AnalysisEngineFactory.createEngineDescription(RUTA_ANALYSIS_ENGINE),//RUTA script
AnalysisEngineFactory.createEngineDescription(//
XWriter.class,
XWriter.PARAM_OUTPUT_DIRECTORY_NAME, outputDirectory,
XWriter.PARAM_FILE_NAMER_CLASS_NAME, ViewURIFileNamer.class.getName())
);
我想做的是使用StandfordNLP注释器(来自ClearTK)并应用ruta脚本。
当前,一切正常运行,并且默认的ruta批注已添加到CAS,但是我的规则创建的批注未添加到CAS。
我的脚本是:
PACKAGE edu.isistan.carcha.concern;
TYPESYSTEM org.cleartk.ClearTKTypeSystem;
DECLARE persistence
Token{FEATURE("lemma","storage") -> MARK(persistence)};
查看带注释的文件:
那里有基本的ruta注释,例如“SPACE”或“SW”,因此正在创建RutaEngine并将其添加到管道中。
如何正确创建AnalysisEngineDescriptor来运行Ruta脚本?
笔记:
RUTA_ANALYSIS_ENGINE 它是我从RUTA工作台复制的引擎描述符。
最佳答案
尝试在声明之后添加一个半列,并为Token
注释使用完全限定的名称:
PACKAGE edu.isistan.carcha.concern;
TYPESYSTEM org.cleartk.ClearTKTypeSystem;
DECLARE persistence;
org.cleartk.token.type.Token{FEATURE("lemma","storage") -> MARK(persistence)};
RUTA中的类型别名有点过于激进。管道已知的每种类型都可以通过其短名称使用,即使您未在脚本中导入它们也是如此。如果您的管道有不止一种
Token
类型可用,则当前无法知道将选择哪种类型(请参阅https://issues.apache.org/jira/browse/UIMA-3322?filter=-2)。关于java - 如何通过uima-ruta脚本创建AnalysisEngineDescriptor以在SimplePipeline中使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20315856/