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");
                    }
                }
            }
        }