如何从uima-ruta脚本创建AnalysisEngineDescriptor以在SimplePipeline中使用

时间:2013-12-01 18:49:37

标签: java maven uima ruta

我无法在简单的管道中运行uima ruta脚本。我正在使用下一个库:

  1. Uimafit 2.0.0
  2. Uima-ruta 2.0.1
  3. ClearTK 1.4.1
  4. 的Maven
  5. 我正在使用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)};
    

    查看带注释的文件:    enter image description here

    基本的ruta注释如“SPACE”或“SW”就在那里,因此正在创建RutaEngine并将其添加到管道......

    如何正确创建AnalysisEngineDescriptor以运行Ruta脚本?

    注意:     RUTA_ANALYSIS_ENGINE 它是我从RUTA工作台复制的引擎描述符。

1 个答案:

答案 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)。