问题
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?
Please guide me to reconfigure analysis engine (by changing the parameter values) programmatically.
回答1:
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
来源:https://stackoverflow.com/questions/38721977/how-to-reconfigure-uima-ruta-analysis-engine-change-the-parameter-values-progr