package edu.stanford.nlp.quoteattribution.Sieves.QMSieves;
import edu.stanford.nlp.classify.GeneralDataset;
import edu.stanford.nlp.classify.RVFDataset;
import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.ling.RVFDatum;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.quoteattribution.*;
import edu.stanford.nlp.quoteattribution.Sieves.training.SupervisedSieveTraining;
import edu.stanford.nlp.stats.ClassicCounter;
import edu.stanford.nlp.stats.Counter;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.Pair;
import edu.stanford.nlp.util.Triple;
import java.util.*;
/**
* Created by mjfang on 7/7/16.
*/
public class SupervisedSieve extends QMSieve {
private ExtractQuotesClassifier quotesClassifier;
public SupervisedSieve(Annotation doc, Map<String, List<Person>> characterMap, Map<Integer, String> pronounCorefMap, Set<String> animacyList) {
super(doc, characterMap, pronounCorefMap, animacyList, "supervised");
}
public void loadModel(String filename) {
quotesClassifier = new ExtractQuotesClassifier(filename);
}
public void doQuoteToMention(Annotation doc) {
if(quotesClassifier == null) {
throw new RuntimeException("need to do training first!");
}
SupervisedSieveTraining.FeaturesData fd = SupervisedSieveTraining.featurize(new SupervisedSieveTraining.SieveData(doc, this.characterMap, this.pronounCorefMap, this.animacySet), null, false);
quotesClassifier.scoreBestMentionNew(fd, doc);
}
}