/** * Get a classification model trainer corresponding to a given outcome type and a given algorithm. */ public ClassificationModelTrainer constructTrainer(Config config) { config.checkValid(ConfigFactory.defaultReference(), "talismane.machineLearning"); MachineLearningAlgorithm algorithm = MachineLearningAlgorithm.valueOf(config.getString("talismane.machineLearning.algorithm")); ClassificationModelTrainer modelTrainer = null; switch (algorithm) { case MaxEnt: MaxentModelTrainer maxentModelTrainer = new MaxentModelTrainer(); modelTrainer = maxentModelTrainer; break; case LinearSVM: case LinearSVMOneVsRest: LinearSVMModelTrainer linearSVMModelTrainer = new LinearSVMModelTrainer(); modelTrainer = linearSVMModelTrainer; break; case Perceptron: PerceptronClassificationModelTrainer perceptronModelTrainer = new PerceptronClassificationModelTrainer(); modelTrainer = perceptronModelTrainer; break; default: throw new JolicielException("Machine learning algorithm not yet supported: " + algorithm); } modelTrainer.setParameters(config); return modelTrainer; }