package edu.cmu.minorthird.text.learn;
import java.util.Iterator;
import edu.cmu.minorthird.text.Span;
import edu.cmu.minorthird.text.TextLabels;
/**
* Train an AnnotationExample from a previously annotated corpus (stored in a
* TextLabels).
*
* @author William Cohen
*/
public class TextLabelsAnnotatorTeacher extends AnnotatorTeacher{
private TextLabels labels;
private String userLabelType;
private String userLabelProp;
public TextLabelsAnnotatorTeacher(TextLabels labels,String userLabelType){
this(labels,userLabelType,null);
}
public TextLabelsAnnotatorTeacher(TextLabels labels,String userLabelType,
String userLabelProp){
this.labels=labels;
this.userLabelType=userLabelType;
this.userLabelProp=userLabelProp;
}
@Override
public Iterator<Span> documentPool(){
return labels.getTextBase().documentSpanIterator();
}
@Override
public AnnotationExample labelInstance(Span query){
if(query.documentSpanStartIndex()!=0||
query.size()!=query.documentSpan().size()){
throw new IllegalArgumentException("can't label a partial document");
}
// should really generate a restricted view of this labels, containing just
// one document...
AnnotationExample example=
new AnnotationExample(query,labels,userLabelType,userLabelProp);
return example;
}
@Override
public boolean hasAnswers(){
return true;
}
@Override
public TextLabels availableLabels(){
return labels;
}
}