/* Copyright 2003, Carnegie Mellon, All Rights Reserved */
package edu.cmu.minorthird.classify.multi;
import java.util.Collections;
import java.util.Iterator;
import edu.cmu.minorthird.classify.Instance;
import edu.cmu.minorthird.classify.Util;
/**
* Trains a MultiClassifierLearner using the information in a labeled Dataset.
*
* @author Cameron Williams
*
*/
public class MultiDatasetClassifierTeacher extends MultiClassifierTeacher{
private MultiDataset dataset;
private boolean activeLearning=false;
public MultiDatasetClassifierTeacher(MultiDataset dataset){
this.dataset=dataset;
}
@Override
public MultiExampleSchema schema(){
return dataset.getMultiSchema();
}
@Override
public Iterator<MultiExample> examplePool(){
if(activeLearning){
return Collections.<MultiExample>emptySet().iterator();
}
else{
return dataset.multiIterator();
}
}
@Override
public Iterator<Instance> instancePool(){
if(activeLearning){
return Util.toInstanceIterator(dataset.multiIterator());
}else if(dataset instanceof MultiDataset){
return dataset.iteratorOverUnlabeled();
}else{
return Collections.<Instance>emptySet().iterator();
}
}
@Override
public MultiExample labelInstance(Instance query){
if(query instanceof MultiExample)
return (MultiExample)query;
else
return null;
}
@Override
public boolean hasAnswers(){
return activeLearning;
}
}