public override void DoQuoteToMention(Annotation doc) { if (quotesClassifier == null) { throw new Exception("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); }
public virtual void ScoreBestMentionNew(SupervisedSieveTraining.FeaturesData fd, Annotation doc) { IList <ICoreMap> quotes = doc.Get(typeof(CoreAnnotations.QuotationsAnnotation)); for (int i = 0; i < quotes.Count; i++) { ICoreMap quote = quotes[i]; if (quote.Get(typeof(QuoteAttributionAnnotator.MentionAnnotation)) != null) { continue; } double maxConfidence = 0; int maxDataIdx = -1; int goldDataIdx = -1; Pair <int, int> dataRange = fd.mapQuoteToDataRange[i]; if (dataRange == null) { continue; } else { for (int dataIdx = dataRange.first; dataIdx <= dataRange.second; dataIdx++) { RVFDatum <string, string> datum = fd.dataset.GetRVFDatum(dataIdx); double isMentionConfidence = quoteToMentionClassifier.ScoresOf(datum).GetCount("isMention"); if (isMentionConfidence > maxConfidence) { maxConfidence = isMentionConfidence; maxDataIdx = dataIdx; } } if (maxDataIdx != -1) { Sieve.MentionData mentionData = fd.mapDatumToMention[maxDataIdx]; if (mentionData.type.Equals("animate noun")) { continue; } quote.Set(typeof(QuoteAttributionAnnotator.MentionAnnotation), mentionData.text); quote.Set(typeof(QuoteAttributionAnnotator.MentionBeginAnnotation), mentionData.begin); quote.Set(typeof(QuoteAttributionAnnotator.MentionEndAnnotation), mentionData.end); quote.Set(typeof(QuoteAttributionAnnotator.MentionTypeAnnotation), mentionData.type); quote.Set(typeof(QuoteAttributionAnnotator.MentionSieveAnnotation), "supervised"); } } } }