我无法在简单的管道中运行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工作台复制的引擎描述符。
答案 0 :(得分:4)
尝试在声明后添加一个半列,并使用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)。