package edu.stanford.nlp.ie.machinereading; import java.io.IOException; import java.io.Serializable; import java.util.logging.Level; import edu.stanford.nlp.pipeline.Annotation; // TODO make this an abstract class instead so setLoggerLevel doesn't have to be implemented by all subclasses. // also, should add the load() method here -- though it can't be static, so maybe we need a different approach. // Extractors should have a logger as an instance attribute. public interface Extractor extends Serializable { /** * Trains one extractor model using the given dataset * * @param dataset * dataset to train from (this should already have annotations and * will typically be created by a reader) */ public void train(Annotation dataset); /** * Annotates the given dataset with the current model This works in place, * i.e., it adds ExtractionObject objects to the sentences in the dataset To * make sure you are not messing with gold annotation create a copy of the * ExtractionDataSet first! * * @param dataset * dataset to annotate */ public void annotate(Annotation dataset); /** * Serializes this extractor to a file * * @param path * where to save the extractor * */ public void save(String path) throws IOException; public void setLoggerLevel(Level level); }