/* * SupervisedLearner.java * * Yaoyong Li 22/03/2007 * * $Id: SupervisedLearner.java, v 1.0 2007-03-22 12:58:16 +0000 yaoyong $ */ package gate.learning.learners; import gate.learning.SparseFeatureVector; import java.io.BufferedReader; import java.io.BufferedWriter; /** * The abstract class for supervised binary learner. The implemented class is * SvmLibSVM.java so far. */ public abstract class SupervisedLearner { /** Learner's name. */ private static String learnerName; /** * The executable name of the learner, which is used for the learner as the * external executable. Not suitable for the SvmLibSVM.java, because it is * implemented in Java class. */ private String learnerExecutable; /** The parameters of the learner, in the string format. */ private String learnerParams; /** The actual command line used for external executable. */ public String commandLine; /** * Does use the parameter tau to adjust the numeric output of svm. */ boolean isUseTau = true; /** * Does use the parameter tau to adjust the numeric output of svm. */ boolean isUseTauALLCases = true; /** Abstract method of parsing the command to get the parameters. */ public abstract void getParametersFromCommmand(); /** Abstract method for training, with binary labeled data as input. */ public abstract void training(BufferedWriter modelFile, SparseFeatureVector[] dataLearning, int totalNumFeatures, short[] classLabels, int numTraining); /** Abstract method for training, by reading from data file for feature vectors, and * with label as input. */ public abstract void trainingWithDataFile(BufferedWriter modelFile, BufferedReader dataFile, int totalNumFeatures, short[] classLabels, int numTraining); /** * Abstract method for application. Called once per class by * {@link MultiClassLearning}. */ public abstract void applying(BufferedReader modelFile, DataForLearning dataLearning, int totalNumFeatures, int classIndex); public void setCommandLine(String command) { this.commandLine = command; commandLine = commandLine.replaceAll(" +", " "); } public String getCommandLine() { return this.commandLine; } public final String getLearnerName() { return learnerName; } public final void setLearnerName(String name) { learnerName = name; } public final String getLearnerExecutable() { return learnerExecutable; } public final void setLearnerExecutable(String name) { learnerExecutable = name; } public final String getLearnerParams() { return learnerParams; } public final void setLearnerParams(String name) { learnerParams = name; } public final void setUseTau(boolean choice) { this.isUseTau = choice; } }