How to reconfigure uima ruta analysis engine (change the parameter values) programmatically?

后端 未结 1 945
予麋鹿
予麋鹿 2021-01-07 04:33

This is in continuation with the question: How to run external ruta scripts from a maven project without placing the script or its typesystem in the classpath?

Pleas

相关标签:
1条回答
  • 2021-01-07 04:58

    Situation: you have a correct xml descriptor of a UIMA Ruta analysis engine and you want to reconfigure so that the paths point to the folder of the descriptor.java url to file

    The following code illustrates that by changing the parameter values in different stages. Only one stage is required. Which is the correct one for you depends on your code.

    package example;
    
    import java.io.File;
    import java.net.URL;
    
    import org.apache.uima.analysis_engine.AnalysisEngine;
    import org.apache.uima.analysis_engine.AnalysisEngineDescription;
    import org.apache.uima.fit.factory.AnalysisEngineFactory;
    import org.apache.uima.resource.metadata.ConfigurationParameterSettings;
    import org.apache.uima.ruta.engine.RutaEngine;
    
    public class ReconfigureExample {
    
      public static void main(String[] args) throws Exception {
    
        File file = new File("path to descriptor");
        String path = new File(file.toURI()).getParentFile().getAbsolutePath();
        String[] pathsArray = new String[] { path };
    
        // override the values in the descriptor when creating the description
        AnalysisEngineDescription desc = AnalysisEngineFactory.createEngineDescriptionFromPath(
                file.getAbsolutePath(), RutaEngine.PARAM_SCRIPT_PATHS, pathsArray,
                RutaEngine.PARAM_DESCRIPTOR_PATHS, pathsArray, RutaEngine.PARAM_RESOURCE_PATHS,
                pathsArray);
    
        // in case the location of the descriptor is not known...
        URL sourceUrl = desc.getSourceUrl();
        path = new File(sourceUrl.toURI()).getParentFile().getAbsolutePath();
        pathsArray = new String[] { path };
    
        // set the values in the description
        ConfigurationParameterSettings settings = desc.getAnalysisEngineMetaData()
                .getConfigurationParameterSettings();
        settings.setParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, pathsArray);
        settings.setParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, pathsArray);
        settings.setParameterValue(RutaEngine.PARAM_RESOURCE_PATHS, pathsArray);
    
        // override the values in the descriptor when creating the analysis engine
        AnalysisEngine ae = AnalysisEngineFactory.createEngine(desc, RutaEngine.PARAM_SCRIPT_PATHS, pathsArray,
                RutaEngine.PARAM_DESCRIPTOR_PATHS, pathsArray, RutaEngine.PARAM_RESOURCE_PATHS,
                pathsArray);
    
        // set the values in the analysis engine and reconfigure it
        ae.setConfigParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, pathsArray);
        ae.setConfigParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, pathsArray);
        ae.setConfigParameterValue(RutaEngine.PARAM_RESOURCE_PATHS, pathsArray);
        ae.reconfigure();
    
      }
    
    }
    

    DISCLAIMER: I am a developer of UIMA Ruta

    0 讨论(0)
提交回复
热议问题