2016-08-02 5 views
2

Это вопрос с вопросом: How to run external ruta scripts from a maven project without placing the script or its typesystem in the classpath?Как перенастроить механизм анализа uima ruta (изменить значения параметров) программно?

Просьба направлять меня к программному преобразованию механизма анализа (путем изменения значений параметров).

ответ

2

Ситуация: у вас есть правильный дескриптор XML в механизм анализа UIMA Рута и вы хотите перенастроить так, что пути указывают на папку descriptor.java URL в файл

Следующий код показывает, что за счет изменения значения параметров в разные этапы. Требуется только один этап. Какой из них правильный, зависит от вашего кода.

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(); 

    } 

} 

ОТКАЗ: Я разработчик UIMA Ruta