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

  • Uimafit 2.0.0
  • Uima-ruta 2.0.1
  • ClearTK 1.4.1
  • Maven

  • 我正在使用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/

    10-09 00:00