package edu.cmu.minorthird.classify.sequential; import java.util.Iterator; import edu.cmu.minorthird.classify.Classifier; import edu.cmu.minorthird.classify.ClassifierLearner; import edu.cmu.minorthird.classify.Example; import edu.cmu.minorthird.classify.ExampleSchema; import edu.cmu.minorthird.classify.algorithms.svm.SVMLearner; /** * Train a CMM (in batch mode). * * @author William Cohen */ public class CMMLearner implements BatchSequenceClassifierLearner { private ClassifierLearner baseLearner; private int historySize; @Override public int getHistorySize() { return historySize; } public void setHistorySize(int newHistorySize) { this.historySize = newHistorySize; } public CMMLearner() { this(new SVMLearner(),3); } public CMMLearner(ClassifierLearner baseLearner,int historySize) { this.baseLearner = baseLearner; this.historySize = historySize; } @Override public void setSchema(ExampleSchema schema) {;} @Override public SequenceClassifier batchTrain(SequenceDataset dataset) { ExampleSchema schema = dataset.getSchema(); baseLearner.reset(); baseLearner.setSchema( schema ); dataset.setHistorySize(historySize); for (Iterator<Example> i=dataset.iterator(); i.hasNext(); ) { Example e = i.next(); baseLearner.addExample( e ); } Classifier classifier = baseLearner.getClassifier(); return new CMM(classifier,historySize,schema); } }