コード例 #1
0
        public override bool CanResolve(MentionContext mention)
        {
            string tag = mention.HeadTokenTag;

            return(tag != null && PartsOfSpeech.IsPersonalOrPossessivePronoun(tag) &&
                   Linker.PluralThirdPersonPronounPattern.IsMatch(mention.HeadTokenText));
        }
コード例 #2
0
        protected internal override bool IsOutOfRange(MentionContext mention, DiscourseEntity entity)
        {
            MentionContext cec = entity.LastExtent;

            //System.err.println("MaxentSingularPronounresolve.outOfRange: ["+entity.getLastExtent().toText()+" ("+entity.getId()+")] ["+mention.toText()+" ("+mention.getId()+")] entity.sentenceNumber=("+entity.getLastExtent().getSentenceNumber()+")-mention.sentenceNumber=("+mention.getSentenceNumber()+") > "+numSentencesBack);
            return(mention.SentenceNumber - cec.SentenceNumber > NumberSentencesBack);
        }
コード例 #3
0
        protected internal override List<string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List<string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                List<string> contexts = GetContextFeatures(mention);
                MentionContext cec = entity.LastExtent;
                if (mention.HeadTokenTag.StartsWith("PRP") && cec.HeadTokenTag.StartsWith("PRP"))
                {
                    features.Add(mention.HeadTokenText + "," + cec.HeadTokenText);
                }
                else if (mention.HeadTokenText.StartsWith("NNP"))
                {
                    for (int ci = 0, cl = contexts.Count; ci < cl; ci++)
                    {
                        features.Add(contexts[ci]);
                    }
                    features.Add(mention.NameType + "," + cec.HeadTokenText);
                }
                else
                {
                    List<string> ccontexts = GetContextFeatures(cec);
                    for (int ci = 0, cl = ccontexts.Count; ci < cl; ci++)
                    {
                        features.Add(ccontexts[ci]);
                    }
                    features.Add(cec.NameType + "," + mention.HeadTokenText);
                }
            }
            return (features);
        }
コード例 #4
0
        protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
        {
            if (base.IsExcluded(mention, entity))
            {
                return(true);
            }
            string mentionGender = null;

            foreach (MentionContext entityMention in entity.Mentions)
            {
                string tag = entityMention.HeadTokenTag;
                if (tag != null && PartsOfSpeech.IsPersOrPossPronoun(tag) && Linker.SingularThirdPersonPronounPattern.IsMatch(mention.HeadTokenText))
                {
                    if (mentionGender == null)
                    {
                        //lazy initilization
                        mentionGender = GetPronounGender(mention.HeadTokenText);
                    }
                    string entityGender = GetPronounGender(entityMention.HeadTokenText);
                    if (!entityGender.Equals("u") && !mentionGender.Equals(entityGender))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
コード例 #5
0
ファイル: IsAResolver.cs プロジェクト: AndreyShp/StudyFun
        protected internal override bool IsExcluded(MentionContext context, DiscourseEntity discourseEntity)
        {
            MentionContext currentContext = discourseEntity.LastExtent;

            //System.err.println("IsAResolver.excluded?: ec.span="+ec.getSpan()+" cec.span="+cec.getSpan()+" cec="+cec.toText()+" lastToken="+ec.getNextToken());
            if (context.SentenceNumber != currentContext.SentenceNumber)
            {
                //System.err.println("IsAResolver.excluded: (true) not same sentence");
                return(true);
            }
            //shallow parse appositives
            //System.err.println("IsAResolver.excluded: ec="+ec.toText()+" "+ec.span+" cec="+cec.toText()+" "+cec.span);
            if (currentContext.IndexSpan.End == context.IndexSpan.Start - 2)
            {
                return(false);
            }
            //full parse w/o trailing comma
            if (currentContext.IndexSpan.End == context.IndexSpan.End)
            {
                //System.err.println("IsAResolver.excluded: (false) spans share end");
                return(false);
            }
            //full parse w/ trailing comma or period
            if (currentContext.IndexSpan.End <= context.IndexSpan.End + 2 && (context.NextToken != null && (context.NextToken.ToString().Equals(",") || context.NextToken.ToString().Equals("."))))
            {
                //System.err.println("IsAResolver.excluded: (false) spans end + punct");
                return(false);
            }
            //System.err.println("IsAResolver.excluded: (true) default");
            return(true);
        }
コード例 #6
0
        protected internal override List <string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List <string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                List <string>  contexts = GetContextFeatures(mention);
                MentionContext cec      = entity.LastExtent;
                if (mention.HeadTokenTag.StartsWith("PRP") && cec.HeadTokenTag.StartsWith("PRP"))
                {
                    features.Add(mention.HeadTokenText + "," + cec.HeadTokenText);
                }
                else if (mention.HeadTokenText.StartsWith("NNP"))
                {
                    for (int ci = 0, cl = contexts.Count; ci < cl; ci++)
                    {
                        features.Add(contexts[ci]);
                    }
                    features.Add(mention.NameType + "," + cec.HeadTokenText);
                }
                else
                {
                    List <string> ccontexts = GetContextFeatures(cec);
                    for (int ci = 0, cl = ccontexts.Count; ci < cl; ci++)
                    {
                        features.Add(ccontexts[ci]);
                    }
                    features.Add(cec.NameType + "," + mention.HeadTokenText);
                }
            }
            return(features);
        }
コード例 #7
0
        public override bool CanResolve(MentionContext mention)
        {
            //System.err.println("MaxentSingularPronounResolver.canResolve: ec= ("+mention.id+") "+ mention.toText());
            string tag = mention.HeadTokenTag;

            return(tag != null && tag.StartsWith("PRP") && Linker.SingularThirdPersonPronounPattern.IsMatch(mention.HeadTokenText));
        }
コード例 #8
0
 public override bool CanResolve(MentionContext mention)
 {
     string firstTok = mention.FirstTokenText.ToLower();
     string firstTokTag = mention.FirstToken.SyntacticType;
     bool rv = mention.HeadTokenTag.Equals("NNS") && !IsDefiniteArticle(firstTok, firstTokTag);
     return rv;
 }
コード例 #9
0
        protected internal override List <string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            var features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                var contexts = GetContextFeatures(mention);
                var cec      = entity.LastExtent;
                if (PartsOfSpeech.IsPersOrPossPronoun(mention.HeadTokenTag) && PartsOfSpeech.IsPersOrPossPronoun(cec.HeadTokenTag))
                {
                    features.Add(mention.HeadTokenText + "," + cec.HeadTokenText);
                }
                else if (PartsOfSpeech.IsProperNoun(mention.HeadTokenText))
                {
                    for (int ci = 0, cl = contexts.Count; ci < cl; ci++)
                    {
                        features.Add(contexts[ci]);
                    }
                    features.Add(mention.NameType + "," + cec.HeadTokenText);
                }
                else
                {
                    var ccontexts = GetContextFeatures(cec);
                    for (int ci = 0, cl = ccontexts.Count; ci < cl; ci++)
                    {
                        features.Add(ccontexts[ci]);
                    }
                    features.Add(cec.NameType + "," + mention.HeadTokenText);
                }
            }
            return(features);
        }
コード例 #10
0
ファイル: IsAResolver.cs プロジェクト: gblosser/OpenNlp
		 protected internal override bool IsExcluded(MentionContext context, DiscourseEntity discourseEntity)
		{
			MentionContext currentContext = discourseEntity.LastExtent;
			if (context.SentenceNumber != currentContext.SentenceNumber)
			{
				return true;
			}
			//shallow parse appositives
			if (currentContext.IndexSpan.End == context.IndexSpan.Start - 2)
			{
				return false;
			}
			//full parse w/o trailing comma
			if (currentContext.IndexSpan.End == context.IndexSpan.End)
			{
				return false;
			}
			//full parse w/ trailing comma or period
			if (currentContext.IndexSpan.End <= context.IndexSpan.End + 2 && (context.NextToken != null 
                && (context.NextToken.ToString() == PartsOfSpeech.Comma || context.NextToken.ToString() == PartsOfSpeech.SentenceFinalPunctuation)))
			{
				return false;
			}
			return true;
		}
コード例 #11
0
		public override bool CanResolve(MentionContext mention)
		{
			string firstTok = mention.FirstTokenText.ToLower();
			string firstTokTag = mention.FirstToken.SyntacticType;
			bool rv = mention.HeadTokenTag == PartsOfSpeech.NounPlural && !IsDefiniteArticle(firstTok, firstTokTag);
			return rv;
		}
コード例 #12
0
ファイル: IsAResolver.cs プロジェクト: ehsan2022002/VirastarE
        protected internal override bool IsExcluded(MentionContext context, DiscourseEntity discourseEntity)
        {
            MentionContext currentContext = discourseEntity.LastExtent;

            if (context.SentenceNumber != currentContext.SentenceNumber)
            {
                return(true);
            }
            //shallow parse appositives
            if (currentContext.IndexSpan.End == context.IndexSpan.Start - 2)
            {
                return(false);
            }
            //full parse w/o trailing comma
            if (currentContext.IndexSpan.End == context.IndexSpan.End)
            {
                return(false);
            }
            //full parse w/ trailing comma or period
            if (currentContext.IndexSpan.End <= context.IndexSpan.End + 2 && (context.NextToken != null &&
                                                                              (context.NextToken.ToString() == PartsOfSpeech.Comma || context.NextToken.ToString() == PartsOfSpeech.SentenceFinalPunctuation)))
            {
                return(false);
            }
            return(true);
        }
コード例 #13
0
        protected internal override bool IsOutOfRange(MentionContext mention, DiscourseEntity entity)
        {
            MentionContext cec = entity.LastExtent;

            //System.err.println("MaxentPluralPronounResolver.outOfRange: ["+ec.toText()+" ("+ec.id+")] ["+cec.toText()+" ("+cec.id+")] ec.sentenceNumber=("+ec.sentenceNumber+")-cec.sentenceNumber=("+cec.sentenceNumber+") > "+NUM_SENTS_BACK_PRONOUNS);
            return(mention.SentenceNumber - cec.SentenceNumber > NUM_SENTS_BACK_PRONOUNS);
        }
コード例 #14
0
 public override bool CanResolve(MentionContext mention)
 {
     string tag = mention.HeadTokenTag;
     bool fpp = tag != null && tag.StartsWith("PRP") && Linker.SpeechPronounPattern.IsMatch(mention.HeadTokenText);
     bool pn = tag != null && tag.StartsWith("NNP");
     return (fpp || pn);
 }
コード例 #15
0
        public override bool CanResolve(MentionContext mention)
        {
            var tag = mention.HeadTokenTag;
            var fpp = tag != null && PartsOfSpeech.IsPersOrPossPronoun(tag) && Linker.SpeechPronounPattern.IsMatch(mention.HeadTokenText);
            var pn  = tag != null && PartsOfSpeech.IsProperNoun(tag);

            return(fpp || pn);
        }
コード例 #16
0
        public override bool CanResolve(MentionContext mention)
        {
            string tag = mention.HeadTokenTag;
            bool   fpp = tag != null && tag.StartsWith("PRP") && Linker.SpeechPronounPattern.IsMatch(mention.HeadTokenText);
            bool   pn  = tag != null && tag.StartsWith("NNP");

            return(fpp || pn);
        }
コード例 #17
0
ファイル: IsAResolver.cs プロジェクト: gblosser/OpenNlp
		public override bool CanResolve(MentionContext context)
		{
			if (PartsOfSpeech.IsNoun(context.HeadTokenTag))
			{
                return (context.PreviousToken != null && predicativePattern.IsMatch(context.PreviousToken.ToString()));
			}
			return false;
		}
コード例 #18
0
ファイル: IsAResolver.cs プロジェクト: ehsan2022002/VirastarE
 public override bool CanResolve(MentionContext context)
 {
     if (PartsOfSpeech.IsNoun(context.HeadTokenTag))
     {
         return(context.PreviousToken != null && predicativePattern.IsMatch(context.PreviousToken.ToString()));
     }
     return(false);
 }
コード例 #19
0
        public override bool CanResolve(MentionContext mention)
        {
            string firstTok    = mention.FirstTokenText.ToLower();
            string firstTokTag = mention.FirstToken.SyntacticType;
            bool   rv          = mention.HeadTokenTag.Equals("NNS") && !IsDefiniteArticle(firstTok, firstTokTag);

            return(rv);
        }
コード例 #20
0
ファイル: IsAResolver.cs プロジェクト: AndreyShp/StudyFun
 public override bool CanResolve(MentionContext context)
 {
     if (context.HeadTokenTag.StartsWith("NN"))
     {
         return(context.PreviousToken != null && predicativePattern.IsMatch(context.PreviousToken.ToString()));
     }
     return(false);
 }
コード例 #21
0
		public override bool CanResolve(MentionContext mention)
		{
			Object[] mtokens = mention.Tokens;
			
			string firstTok = mention.FirstTokenText.ToLower();
			bool rv = mtokens.Length > 1 && !PartsOfSpeech.IsProperNoun(mention.HeadTokenTag) && IsDefiniteArticle(firstTok, mention.FirstTokenTag);
			return (rv);
		}
コード例 #22
0
        public override bool CanResolve(MentionContext mention)
        {
            string firstTok    = mention.FirstTokenText.ToLower();
            string firstTokTag = mention.FirstToken.SyntacticType;
            bool   rv          = mention.HeadTokenTag == PartsOfSpeech.NounPlural && !IsDefiniteArticle(firstTok, firstTokTag);

            return(rv);
        }
コード例 #23
0
        public override bool CanResolve(MentionContext mention)
        {
            string tag = mention.HeadTokenTag;
            bool   fpp = tag != null && PartsOfSpeech.IsPersonalOrPossessivePronoun(tag) && Linker.SpeechPronounPattern.IsMatch(mention.HeadTokenText);
            bool   pn  = tag != null && PartsOfSpeech.IsProperNoun(tag);

            return(fpp || pn);
        }
コード例 #24
0
 public override bool CanResolve(MentionContext context)
 {
     if (context.HeadTokenTag.StartsWith("NN"))
     {
         return (context.PreviousToken != null && predicativePattern.IsMatch(context.PreviousToken.ToString()));
     }
     return false;
 }
コード例 #25
0
        public override bool CanResolve(MentionContext mention)
        {
            Object[] mtokens = mention.Tokens;

            string firstTok = mention.FirstTokenText.ToLower();
            bool   rv       = mtokens.Length > 1 && !PartsOfSpeech.IsProperNoun(mention.HeadTokenTag) && IsDefiniteArticle(firstTok, mention.FirstTokenTag);

            return(rv);
        }
コード例 #26
0
        protected internal override List<string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List<string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                features.AddRange(GetContextFeatures(mention));
                features.AddRange(GetStringMatchFeatures(mention, entity));
            }
            return features;
        }
コード例 #27
0
        protected internal override List <string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List <string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                features.AddRange(GetStringMatchFeatures(mention, entity));
                features.AddRange(getAcronymFeatures(mention, entity));
            }
            return(features);
        }
コード例 #28
0
        public override bool CanResolve(MentionContext mention)
        {
            System.Object[] mtokens = mention.Tokens;

            string firstTok = mention.FirstTokenText.ToLower();
            bool rv = mtokens.Length > 1 && !mention.HeadTokenTag.StartsWith("NNP") && IsDefiniteArticle(firstTok, mention.FirstTokenTag);
            //if (rv) {
            //  System.err.println("defNp "+ec);
            //}
            return (rv);
        }
コード例 #29
0
		protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
		{
			if (base.IsExcluded(mention, entity))
			{
				return true;
			}
			else
			{
				MentionContext cec = entity.LastExtent;
                return (cec.HeadTokenTag != PartsOfSpeech.NounPlural || base.IsExcluded(mention, entity));
			}
		}
コード例 #30
0
 protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
 {
     if (base.IsExcluded(mention, entity))
     {
         return(true);
     }
     else
     {
         MentionContext cec = entity.LastExtent;
         return(!cec.HeadTokenTag.Equals("NNS") || base.IsExcluded(mention, entity));
     }
 }
コード例 #31
0
        public override bool CanResolve(MentionContext mention)
        {
            System.Object[] mtokens = mention.Tokens;

            string firstTok = mention.FirstTokenText.ToLower();
            bool   rv       = mtokens.Length > 1 && !mention.HeadTokenTag.StartsWith("NNP") && IsDefiniteArticle(firstTok, mention.FirstTokenTag);

            //if (rv) {
            //  System.err.println("defNp "+ec);
            //}
            return(rv);
        }
コード例 #32
0
 protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
 {
     if (base.IsExcluded(mention, entity))
     {
         return(true);
     }
     else
     {
         MentionContext cec = entity.LastExtent;
         return(cec.HeadTokenTag != PartsOfSpeech.NounPlural || base.IsExcluded(mention, entity));
     }
 }
コード例 #33
0
        protected internal override List <string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            //System.err.println("ProperNounResolver.getFeatures: "+mention.toText()+" -> "+entity);
            List <string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                features.AddRange(GetStringMatchFeatures(mention, entity));
                features.AddRange(getAcronymFeatures(mention, entity));
            }
            return(features);
        }
コード例 #34
0
        //UPGRADE_NOTE: Access modifiers of method 'excluded' were changed to 'public'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1204'"
        protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
        {
            if (base.IsExcluded(mention, entity))
            {
                return(true);
            }
            var cec = entity.LastExtent;

            if (!CanResolve(cec))
            {
                return(true);
            }
            if (PartsOfSpeech.IsProperNoun(mention.HeadTokenTag))
            {
                //mention is a propernoun
                if (PartsOfSpeech.IsProperNoun(cec.HeadTokenTag))
                {
                    return(true);                    // both NNP
                }
                else
                {
                    if (entity.MentionCount > 1)
                    {
                        return(true);
                    }
                    return(!CanResolve(cec));
                }
            }
            else if (PartsOfSpeech.IsPersOrPossPronoun(mention.HeadTokenTag))
            {
                // mention is a speech pronoun
                // cec can be either a speech pronoun or a propernoun
                if (PartsOfSpeech.IsProperNoun(cec.HeadTokenTag))
                {
                    //exclude antecedents not in the same sentence when they are not pronoun
                    return(mention.SentenceNumber - cec.SentenceNumber != 0);
                }
                else if (PartsOfSpeech.IsPersOrPossPronoun(cec.HeadTokenTag))
                {
                    return(false);
                }
                else
                {
                    Console.Error.WriteLine("Unexpected candidate exluded: " + cec.ToText());
                    return(true);
                }
            }
            else
            {
                Console.Error.WriteLine("Unexpected mention exluded: " + mention.ToText());
                return(true);
            }
        }
コード例 #35
0
        protected internal override List <string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List <string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                //generate pronoun w/ referent features
                MentionContext cec = entity.LastExtent;
                //string gen = getPronounGender(pronoun);
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                features.AddRange(GetContextFeatures(cec));
                features.AddRange(GetDistanceFeatures(mention, entity));
                features.Add(GetMentionCountFeature(entity));

                /*
                 *              //lexical features
                 *              Set featureSet = new HashSet();
                 *              for (Iterator ei = entity.getExtents(); ei.hasNext();) {
                 *              MentionContext ec = (MentionContext) ei.next();
                 *              List toks = ec.tokens;
                 *              Parse tok;
                 *              int headIndex = PTBHeadFinder.getInstance().getHeadIndex(toks);
                 *              for (int ti = 0; ti < headIndex; ti++) {
                 *              tok = (Parse) toks.get(ti);
                 *              featureSet.add(gen + "mw=" + tok.ToString().toLowerCase());
                 *              featureSet.add(gen + "mt=" + tok.getSyntacticType());
                 *              }
                 *              tok = (Parse) toks.get(headIndex);
                 *              featureSet.add(gen + "hw=" + tok.ToString().toLowerCase());
                 *              featureSet.add(gen + "ht=" + tok.getSyntacticType());
                 *              //semantic features
                 *              if (ec.neType != null) {
                 *              featureSet.add(gen + "," + ec.neType);
                 *              }
                 *              else {
                 *              for (Iterator si = ec.synsets.iterator(); si.hasNext();) {
                 *              Integer synset = (Integer) si.next();
                 *              featureSet.add(gen + "," + synset);
                 *              }
                 *              }
                 *              }
                 *              Iterator fset = featureSet.iterator();
                 *              while (fset.hasNext()) {
                 *              string f = (string) fset.next();
                 *              features.add(f);
                 *              }
                 */
            }
            return(features);
        }
コード例 #36
0
        protected internal override List<string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List<string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                //generate pronoun w/ referent features
                MentionContext cec = entity.LastExtent;
                //string gen = getPronounGender(pronoun);
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                features.AddRange(GetContextFeatures(cec));
                features.AddRange(GetDistanceFeatures(mention, entity));
                features.Add(GetMentionCountFeature(entity));
                /*
                //lexical features
                Set featureSet = new HashSet();
                for (Iterator ei = entity.getExtents(); ei.hasNext();) {
                MentionContext ec = (MentionContext) ei.next();
                List toks = ec.tokens;
                Parse tok;
                int headIndex = PTBHeadFinder.getInstance().getHeadIndex(toks);
                for (int ti = 0; ti < headIndex; ti++) {
                tok = (Parse) toks.get(ti);
                featureSet.add(gen + "mw=" + tok.toString().toLowerCase());
                featureSet.add(gen + "mt=" + tok.getSyntacticType());
                }
                tok = (Parse) toks.get(headIndex);
                featureSet.add(gen + "hw=" + tok.toString().toLowerCase());
                featureSet.add(gen + "ht=" + tok.getSyntacticType());
                //semantic features
                if (ec.neType != null) {
                featureSet.add(gen + "," + ec.neType);
                }
                else {
                for (Iterator si = ec.synsets.iterator(); si.hasNext();) {
                Integer synset = (Integer) si.next();
                featureSet.add(gen + "," + synset);
                }
                }
                }
                Iterator fset = featureSet.iterator();
                while (fset.hasNext()) {
                string f = (string) fset.next();
                features.add(f);
                }
                */
            }
            return (features);
        }
コード例 #37
0
        protected internal virtual List <string> getAcronymFeatures(MentionContext mention, DiscourseEntity entity)
        {
            MentionContext xec      = getProperNounExtent(entity);
            string         ecStrip  = StripNounPhrase(mention);
            string         xecStrip = StripNounPhrase(xec);

            if (ecStrip != null && xecStrip != null)
            {
                if (isAcronym(ecStrip, xecStrip))
                {
                    List <string> features = new List <string>(1);
                    features.Add("knownAcronym");
                    return(features);
                }
            }
            return(new List <string>());
        }
コード例 #38
0
        protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
        {
            if (base.IsExcluded(mention, entity))
            {
                return(true);
            }

            foreach (MentionContext xec in entity.Mentions)
            {
                if (PartsOfSpeech.IsProperNoun(xec.HeadTokenTag))
                {
                    // || initialCaps.matcher(xec.headToken.ToString()).find()) {
                    return(false);
                }
            }
            return(true);
        }
コード例 #39
0
        protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
        {
            if (base.IsExcluded(mention, entity))
            {
                return(true);
            }

            foreach (MentionContext xec in entity.Mentions)
            {
                if (xec.HeadTokenTag.StartsWith("NNP"))
                {
                    // || initialCaps.matcher(xec.headToken.toString()).find()) {
                    //System.err.println("MaxentProperNounResolver.exclude: kept "+xec.toText()+" with "+xec.headTag);
                    return(false);
                }
            }
            return(true);
        }
コード例 #40
0
        protected internal override List <string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List <string> features = base.GetFeatures(mention, entity);

            //features.add("eid="+pc.id);
            if (entity != null)
            {
                //generate pronoun w/ referent features
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                MentionContext cec = entity.LastExtent;
                features.AddRange(GetDistanceFeatures(mention, entity));
                features.AddRange(GetContextFeatures(cec));
                features.Add(GetMentionCountFeature(entity));

                /*
                 * //lexical features
                 * Set featureSet = new HashSet();
                 * for (Iterator ei = entity.getExtents(); ei.hasNext();) {
                 * MentionContext ec = (MentionContext) ei.next();
                 * int headIndex = PTBHeadFinder.getInstance().getHeadIndex(ec.tokens);
                 * Parse tok = (Parse) ec.tokens.get(headIndex);
                 * featureSet.add("hw=" + tok.ToString().toLowerCase());
                 * if (ec.parse.isCoordinatedNounPhrase()) {
                 * featureSet.add("ht=CC");
                 * }
                 * else {
                 * featureSet.add("ht=" + tok.getSyntacticType());
                 * }
                 * if (ec.neType != null){
                 * featureSet.add("ne="+ec.neType);
                 * }
                 * }
                 * Iterator fset = featureSet.iterator();
                 * while (fset.hasNext()) {
                 * string f = (string) fset.next();
                 * features.add(f);
                 * }
                 */
            }
            return(features);
        }
コード例 #41
0
        protected internal override List<string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List<string> features = base.GetFeatures(mention, entity);

            //features.add("eid="+pc.id);
            if (entity != null)
            {
                //generate pronoun w/ referent features
                features.AddRange(GetPronounMatchFeatures(mention, entity));
                MentionContext cec = entity.LastExtent;
                features.AddRange(GetDistanceFeatures(mention, entity));
                features.AddRange(GetContextFeatures(cec));
                features.Add(GetMentionCountFeature(entity));
                /*
                //lexical features
                Set featureSet = new HashSet();
                for (Iterator ei = entity.getExtents(); ei.hasNext();) {
                MentionContext ec = (MentionContext) ei.next();
                int headIndex = PTBHeadFinder.getInstance().getHeadIndex(ec.tokens);
                Parse tok = (Parse) ec.tokens.get(headIndex);
                featureSet.add("hw=" + tok.toString().toLowerCase());
                if (ec.parse.isCoordinatedNounPhrase()) {
                featureSet.add("ht=CC");
                }
                else {
                featureSet.add("ht=" + tok.getSyntacticType());
                }
                if (ec.neType != null){
                featureSet.add("ne="+ec.neType);
                }
                }
                Iterator fset = featureSet.iterator();
                while (fset.hasNext()) {
                string f = (string) fset.next();
                features.add(f);
                }
                */
            }
            return features;
        }
コード例 #42
0
 public override bool CanResolve(MentionContext mention)
 {
     return(PartsOfSpeech.IsProperNoun(mention.HeadTokenTag) || mention.HeadTokenTag.StartsWith(PartsOfSpeech.CardinalNumber));
 }
コード例 #43
0
 protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
 {
     if (base.IsExcluded(mention, entity))
     {
         return true;
     }
     else
     {
         MentionContext cec = entity.LastExtent;
         return (!cec.HeadTokenTag.Equals("NNS") || base.IsExcluded(mention, entity));
     }
 }
コード例 #44
0
        protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
        {
            if (base.IsExcluded(mention, entity))
            {
                return true;
            }

            foreach (MentionContext xec in entity.Mentions)
            {
                if (xec.HeadTokenTag.StartsWith("NNP"))
                {
                    // || initialCaps.matcher(xec.headToken.toString()).find()) {
                    //System.err.println("MaxentProperNounResolver.exclude: kept "+xec.toText()+" with "+xec.headTag);
                    return false;
                }
            }
            return true;
        }
コード例 #45
0
        protected internal override bool IsOutOfRange(MentionContext mention, DiscourseEntity entity)
        {
            var cec = entity.LastExtent;

            return(mention.SentenceNumber - cec.SentenceNumber > NumberSentencesBack);
        }
コード例 #46
0
 public override bool CanResolve(MentionContext mention)
 {
     return (mention.HeadTokenTag.StartsWith("NNP") || mention.HeadTokenTag.StartsWith("CD"));
 }
コード例 #47
0
 protected internal virtual List<string> getAcronymFeatures(MentionContext mention, DiscourseEntity entity)
 {
     MentionContext xec = getProperNounExtent(entity);
     string ecStrip = StripNounPhrase(mention);
     string xecStrip = StripNounPhrase(xec);
     if (ecStrip != null && xecStrip != null)
     {
         if (isAcronym(ecStrip, xecStrip))
         {
             List<string> features = new List<string>(1);
             features.Add("knownAcronym");
             return features;
         }
     }
     return new List<string>();
 }
コード例 #48
0
 protected internal override bool IsExcluded(MentionContext context, DiscourseEntity discourseEntity)
 {
     MentionContext currentContext = discourseEntity.LastExtent;
     //System.err.println("IsAResolver.excluded?: ec.span="+ec.getSpan()+" cec.span="+cec.getSpan()+" cec="+cec.toText()+" lastToken="+ec.getNextToken());
     if (context.SentenceNumber != currentContext.SentenceNumber)
     {
         //System.err.println("IsAResolver.excluded: (true) not same sentence");
         return true;
     }
     //shallow parse appositives
     //System.err.println("IsAResolver.excluded: ec="+ec.toText()+" "+ec.span+" cec="+cec.toText()+" "+cec.span);
     if (currentContext.IndexSpan.End == context.IndexSpan.Start - 2)
     {
         return false;
     }
     //full parse w/o trailing comma
     if (currentContext.IndexSpan.End == context.IndexSpan.End)
     {
         //System.err.println("IsAResolver.excluded: (false) spans share end");
         return false;
     }
     //full parse w/ trailing comma or period
     if (currentContext.IndexSpan.End <= context.IndexSpan.End + 2 && (context.NextToken != null && (context.NextToken.ToString().Equals(",") || context.NextToken.ToString().Equals("."))))
     {
         //System.err.println("IsAResolver.excluded: (false) spans end + punct");
         return false;
     }
     //System.err.println("IsAResolver.excluded: (true) default");
     return true;
 }
コード例 #49
0
 public override bool CanResolve(MentionContext mention)
 {
     //System.err.println("MaxentSingularPronounResolver.canResolve: ec= ("+mention.id+") "+ mention.toText());
     string tag = mention.HeadTokenTag;
     return (tag != null && tag.StartsWith("PRP") && Linker.SingularThirdPersonPronounPattern.IsMatch(mention.HeadTokenText));
 }
コード例 #50
0
        protected internal override List<string> GetFeatures(MentionContext mention, DiscourseEntity entity)
        {
            List<string> features = base.GetFeatures(mention, entity);

            if (entity != null)
            {
                MentionContext ant = entity.LastExtent;
                List<string> leftContexts = GetContextFeatures(ant);
                for (int ci = 0, cn = leftContexts.Count; ci < cn; ci++)
                {
                    features.Add("l" + leftContexts[ci]);
                }
                List<string> rightContexts = GetContextFeatures(mention);
                for (int ci = 0, cn = rightContexts.Count; ci < cn; ci++)
                {
                    features.Add("r" + rightContexts[ci]);
                }
                features.Add("hts" + ant.HeadTokenTag + "," + mention.HeadTokenTag);
            }
            /*
            if (entity != null) {
            //System.err.println("MaxentIsResolver.getFeatures: ["+ec2.toText()+"] -> ["+de.getLastExtent().toText()+"]");
            //previous word and tag
            if (ant.prevToken != null) {
            features.add("pw=" + ant.prevToken);
            features.add("pt=" + ant.prevToken.getSyntacticType());
            }
            else {
            features.add("pw=<none>");
            features.add("pt=<none>");
            }

            //next word and tag
            if (mention.nextToken != null) {
            features.add("nw=" + mention.nextToken);
            features.add("nt=" + mention.nextToken.getSyntacticType());
            }
            else {
            features.add("nw=<none>");
            features.add("nt=<none>");
            }

            //modifier word and tag for c1
            int i = 0;
            List c1toks = ant.tokens;
            for (; i < ant.headTokenIndex; i++) {
            features.add("mw=" + c1toks.get(i));
            features.add("mt=" + ((Parse) c1toks.get(i)).getSyntacticType());
            }
            //head word and tag for c1
            features.add("mh=" + c1toks.get(i));
            features.add("mt=" + ((Parse) c1toks.get(i)).getSyntacticType());

            //modifier word and tag for c2
            i = 0;
            List c2toks = mention.tokens;
            for (; i < mention.headTokenIndex; i++) {
            features.add("mw=" + c2toks.get(i));
            features.add("mt=" + ((Parse) c2toks.get(i)).getSyntacticType());
            }
            //head word and tag for n2
            features.add("mh=" + c2toks.get(i));
            features.add("mt=" + ((Parse) c2toks.get(i)).getSyntacticType());

            //word/tag pairs
            for (i = 0; i < ant.headTokenIndex; i++) {
            for (int j = 0; j < mention.headTokenIndex; j++) {
            features.add("w=" + c1toks.get(i) + "|" + "w=" + c2toks.get(j));
            features.add("w=" + c1toks.get(i) + "|" + "t=" + ((Parse) c2toks.get(j)).getSyntacticType());
            features.add("t=" + ((Parse) c1toks.get(i)).getSyntacticType() + "|" + "w=" + c2toks.get(j));
            features.add("t=" + ((Parse) c1toks.get(i)).getSyntacticType() + "|" + "t=" + ((Parse) c2toks.get(j)).getSyntacticType());
            }
            }
            features.add("ht=" + ant.headTokenTag + "|" + "ht=" + mention.headTokenTag);
            features.add("ht1=" + ant.headTokenTag);
            features.add("ht2=" + mention.headTokenTag);
            */
            //semantic categories
            /*
            if (ant.neType != null) {
            if (re.neType != null) {
            features.add("sc="+ant.neType+","+re.neType);
            }
            else if (!re.headTokenTag.startsWith("NNP") && re.headTokenTag.startsWith("NN")) {
            Set synsets = re.synsets;
            for (Iterator si=synsets.iterator();si.hasNext();) {
            features.add("sc="+ant.neType+","+si.next());
            }
            }
            }
            else if (!ant.headTokenTag.startsWith("NNP") && ant.headTokenTag.startsWith("NN")) {
            if (re.neType != null) {
            Set synsets = ant.synsets;
            for (Iterator si=synsets.iterator();si.hasNext();) {
            features.add("sc="+re.neType+","+si.next());
            }
            }
            else if (!re.headTokenTag.startsWith("NNP") && re.headTokenTag.startsWith("NN")) {
            //System.err.println("MaxentIsaResolover.getFeatures: both common re="+re.parse+" ant="+ant.parse);
            Set synsets1 = ant.synsets;
            Set synsets2 = re.synsets;
            for (Iterator si=synsets1.iterator();si.hasNext();) {
            Object synset = si.next();
            if (synsets2.contains(synset)) {
            features.add("sc="+synset);
            }
            }
            }
            }
            }
            */
            //System.err.println("MaxentIsResolver.getFeatures: "+features.toString());
            return features;
        }
コード例 #51
0
        protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
        {
            if (base.IsExcluded(mention, entity))
            {
                return (true);
            }
            string mentionGender = null;

            foreach (MentionContext entityMention in entity.Mentions)
            {
                string tag = entityMention.HeadTokenTag;
                if (tag != null && tag.StartsWith("PRP") && Linker.SingularThirdPersonPronounPattern.IsMatch(mention.HeadTokenText))
                {
                    if (mentionGender == null)
                    {
                        //lazy initilization
                        mentionGender = GetPronounGender(mention.HeadTokenText);
                    }
                    string entityGender = GetPronounGender(entityMention.HeadTokenText);
                    if (!entityGender.Equals("u") && !mentionGender.Equals(entityGender))
                    {
                        return (true);
                    }
                }
            }
            return (false);
        }
コード例 #52
0
 public override bool CanResolve(MentionContext mention)
 {
     string tag = mention.HeadTokenTag;
     return (tag != null && tag.StartsWith("PRP") && Linker.PluralThirdPersonPronounPattern.IsMatch(mention.HeadTokenText));
 }
コード例 #53
0
ファイル: PerfectResolver.cs プロジェクト: gblosser/OpenNlp
		public override DiscourseEntity Resolve(MentionContext ec, DiscourseModel dm)
		{
			return (null);
		}
コード例 #54
0
ファイル: PerfectResolver.cs プロジェクト: gblosser/OpenNlp
		protected internal override bool IsOutOfRange(MentionContext ec, DiscourseEntity de)
		{
			return (false);
		}
コード例 #55
0
ファイル: PerfectResolver.cs プロジェクト: gblosser/OpenNlp
		public override bool CanResolve(MentionContext ec)
		{
			return (true);
		}
コード例 #56
0
 protected internal override bool IsOutOfRange(MentionContext mention, DiscourseEntity entity)
 {
     MentionContext cec = entity.LastExtent;
     //System.err.println("MaxentPluralPronounResolver.outOfRange: ["+ec.toText()+" ("+ec.id+")] ["+cec.toText()+" ("+cec.id+")] ec.sentenceNumber=("+ec.sentenceNumber+")-cec.sentenceNumber=("+cec.sentenceNumber+") > "+NUM_SENTS_BACK_PRONOUNS);
     return (mention.SentenceNumber - cec.SentenceNumber > NUM_SENTS_BACK_PRONOUNS);
 }
コード例 #57
0
 protected internal override bool IsOutOfRange(MentionContext mention, DiscourseEntity entity)
 {
     MentionContext cec = entity.LastExtent;
     //System.err.println("MaxentSingularPronounresolve.outOfRange: ["+entity.getLastExtent().toText()+" ("+entity.getId()+")] ["+mention.toText()+" ("+mention.getId()+")] entity.sentenceNumber=("+entity.getLastExtent().getSentenceNumber()+")-mention.sentenceNumber=("+mention.getSentenceNumber()+") > "+numSentencesBack);
     return (mention.SentenceNumber - cec.SentenceNumber > NumberSentencesBack);
 }
コード例 #58
0
 protected internal override bool IsOutOfRange(MentionContext context, DiscourseEntity discourseEntity)
 {
     MentionContext currentContext = discourseEntity.LastExtent;
     return (currentContext.SentenceNumber != context.SentenceNumber);
 }
コード例 #59
0
 //UPGRADE_NOTE: Access modifiers of method 'excluded' were changed to 'public'. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1204'"
 protected internal override bool IsExcluded(MentionContext mention, DiscourseEntity entity)
 {
     if (base.IsExcluded(mention, entity))
     {
         return true;
     }
     MentionContext cec = entity.LastExtent;
     if (!CanResolve(cec))
     {
         return true;
     }
     if (mention.HeadTokenTag.StartsWith("NNP"))
     {
         //mention is a propernoun
         if (cec.HeadTokenTag.StartsWith("NNP"))
         {
             return true; // both NNP
         }
         else
         {
             if (entity.MentionCount > 1)
             {
                 return true;
             }
             return !CanResolve(cec);
         }
     }
     else if (mention.HeadTokenTag.StartsWith("PRP"))
     {
         // mention is a speech pronoun
         // cec can be either a speech pronoun or a propernoun
         if (cec.HeadTokenTag.StartsWith("NNP"))
         {
             //exclude antecedents not in the same sentence when they are not pronoun
             return (mention.SentenceNumber - cec.SentenceNumber != 0);
         }
         else if (cec.HeadTokenTag.StartsWith("PRP"))
         {
             return false;
         }
         else
         {
             System.Console.Error.WriteLine("Unexpected candidate exluded: " + cec.ToText());
             return true;
         }
     }
     else
     {
         System.Console.Error.WriteLine("Unexpected mention exluded: " + mention.ToText());
         return true;
     }
 }
コード例 #60
0
 protected internal override bool IsOutOfRange(MentionContext mention, DiscourseEntity entity)
 {
     MentionContext cec = entity.LastExtent;
     return (mention.SentenceNumber - cec.SentenceNumber > NumberSentencesBack);
 }