Exemple #1
0
        public override bool Transform(Sentence sentence)
        {
            KeyValuePair <string, string> nks = NeighborKinds(sentence);

            if (nks.Key == "NP" && nks.Value == "NP")
            {
                sentence.Combine(Neighborhood(sentence), new NounPhrase());
                return(true);
            }
            else if (nks.Key == "VP" && nks.Value == "VP")
            {
                sentence.Combine(Neighborhood(sentence), new VerbPhrase());
                return(true);
            }
            else if (nks.Key == "PP" && nks.Value == "PP")
            {
                sentence.Combine(Neighborhood(sentence), new PrepositionalPhrase());
                return(true);
            }
            else if (nks.Key == "S" && nks.Value == "S")
            {
                sentence.Combine(Neighborhood(sentence), new SimpleDeclarativePhrase());
                return(true);
            }

            if (nks.Key == "PP" && nks.Value == "NP")
            {
                Phrase preposition = sentence.PhraseBefore(this);
                sentence.AbsorbNext(preposition);   // absorb this
                sentence.AbsorbNext(preposition);   // absorb noun
                return(true);
            }

            return(false);
        }
        public override bool Transform(Sentence sentence)
        {
            Phrase next = sentence.PhraseAfter(this);

            if (next != null && next.Part == "WHNP")
            {
                Phrase afternext = sentence.PhraseAfter(next);
                if (afternext == null || afternext is Period || afternext is QuestionMark || afternext is Exclamation || afternext is Semicolon || afternext is Colon)
                {
                    Parenthetical parenthetical = new Parenthetical();
                    List <Phrase> consts        = new List <Phrase>();
                    consts.Add(this);
                    consts.Add(next);
                    sentence.Combine(consts, parenthetical);
                    Phrase before = sentence.PhraseBefore(parenthetical);
                    if (before != null)
                    {
                        // would the last subphrase better take this?
                        if (!AbsorbInLast(sentence, before, parenthetical))
                        {
                            sentence.AbsorbNext(before);
                        }
                    }
                    return(true);
                }

                if (afternext is Comma)
                {
                    Parenthetical parenthetical = new Parenthetical();
                    List <Phrase> consts        = new List <Phrase>();
                    consts.Add(this);
                    consts.Add(next);
                    consts.Add(afternext);
                    sentence.Combine(consts, parenthetical);
                    Phrase before = sentence.PhraseBefore(parenthetical);
                    if (before != null)
                    {
                        // would the last subphrase better take this?
                        if (!AbsorbInLast(sentence, before, parenthetical))
                        {
                            sentence.AbsorbNext(before);
                        }
                    }
                    return(true);
                }
            }

            return(false);
        }
        // Combine with adjacent proper nouns, before rolling into Noun Phrase
        public override bool Transform(Sentence sentence)
        {
            List <Phrase> phrases = new List <Phrase>();

            phrases.Add(this);

            // Look ahead and behind
            Phrase next = sentence.PhraseAfter(this);

            while (next != null && next.Part == "NNP")
            {
                phrases.Add(next);
                next = sentence.PhraseAfter(next);
            }

            Phrase prev = sentence.PhraseBefore(this);

            while (prev != null && prev.Part == "NNP")
            {
                phrases.Insert(0, prev);
                prev = sentence.PhraseBefore(prev);
            }

            sentence.Combine(phrases, new NounPhrase());
            return(true);
        }
        public override bool Transform(Sentence sentence)
        {
            List <Phrase> phrases = new List <Phrase>();

            phrases.Add(this);
            sentence.Combine(phrases, new VerbPhrase());
            return(true);
        }
Exemple #5
0
        public override bool Transform(Sentence sentence)
        {
            KeyValuePair <string, string> nks = NeighborKinds(sentence);

            if (nks.Key == "S" && nks.Value == "S")
            {
                sentence.Combine(Neighborhood(sentence), new SimpleDeclarativePhrase());
                return(true);
            }

            return(false);
        }
Exemple #6
0
        public override bool Transform(Sentence sentence)
        {
            KeyValuePair <string, string> nks = NeighborKinds(sentence);

            if (nks.Value == "NP" || nks.Value == "VP")
            {
                List <Phrase> consts = new List <Phrase>();
                consts.Add(this);
                consts.Add(sentence.PhraseAfter(this));
                sentence.Combine(consts, new WhNounPhrase());
                return(true);
            }

            return(false);
        }
Exemple #7
0
        public override bool Transform(Sentence sentence)
        {
            KeyValuePair <string, string> nks = NeighborKinds(sentence);

            if (nks.Value == "NP")
            {
                List <Phrase> us = new List <Phrase>();
                us.Add(this);
                us.Add(sentence.PhraseAfter(this));
                sentence.Combine(us, new PrepositionalPhrase());
                return(true);
            }

            return(false);
        }
        public override bool Transform(Sentence sentence)
        {
            List <Phrase> phrases = new List <Phrase>();

            phrases.Add(this);

            KeyValuePair <string, string> nks = NeighborKinds(sentence);

            if (nks.Value == "VP")
            {
                phrases.Add(sentence.PhraseAfter(this));
            }

            sentence.Combine(phrases, new VerbPhrase());
            return(true);
        }
Exemple #9
0
        public override bool Transform(Sentence sentence)
        {
            if (!sentence.phrases.Contains(this))
            {
                return(false);
            }

            bool success = false;
            KeyValuePair <string, string> nks = NeighborKinds(sentence);

            Phrase verbphr = FindConsituent <Verb>();
            string verb    = (verbphr == null ? "" : verbphr.Text);

            if (nks.Key == "ADVP")
            {
                sentence.AbsorbPrevious(this);
                success = true;
            }
            else if (nks.Value == "VBN")
            { // is considered
                sentence.AbsorbNext(this);
                success = true;
            }
            else if (nks.Value == "ADVP")
            {
                sentence.AbsorbNext(this);
                success = true;
            }
            else if (nks.Value == "NP")
            {
                sentence.AbsorbNext(this);
                success = true;
            }
            else if (nks.Value == "ADJP" && Verbs.IsToBe(verb))
            {
                sentence.AbsorbNext(this);
                success = true;
            }

            else if (nks.Value == "PP")
            {
                sentence.AbsorbNext(this);
                success = true;
            }

            else if (nks.Key == "TO")
            {
                List <Phrase> us = new List <Phrase>();
                us.Add(sentence.PhraseBefore(this));
                us.Add(this);
                sentence.Combine(us, new PrepositionalPhrase());
                success = true;
            }

            else if (nks.Key == "WHNP" || nks.Key == "WRB")
            {
                string trial = sentence.PhraseBefore(this).ToString() + ";" + ToString() + ";SBARQ";
                if (!triedBefore.ContainsKey(trial))
                {
                    List <Phrase> phrases = new List <Phrase>();
                    phrases.Add(sentence.PhraseBefore(this));
                    phrases.Add(this);
                    sentence.Combine(phrases, new SimpleQuestion());
                    triedBefore.Add(trial, true);
                    success = true;
                }
            }

            else if (nks.Key == "NP" || nks.Key == "EX")
            {
                string trial = sentence.PhraseBefore(this).ToString() + ";" + ToString() + ";S";
                if (!triedBefore.ContainsKey(trial))
                {
                    List <Phrase> phrases = new List <Phrase>();
                    phrases.Add(sentence.PhraseBefore(this));
                    phrases.Add(this);
                    sentence.Combine(phrases, new SimpleDeclarativePhrase());
                    triedBefore.Add(trial, true);
                    success = true;
                }
            }

            return(success);
        }
        public override bool Transform(Sentence sentence)
        {
            if (!sentence.phrases.Contains(this))
            {
                return(false);
            }

            bool success = false;

            bool lastFound = true;

            while (lastFound)
            {
                KeyValuePair <string, string> nks = NeighborKinds(sentence);
                if (nks.Value == "." && constituents[constituents.Count - 1].Text.Length == 1)
                {
                    sentence.AbsorbNext(this);   // eat the period
                }
                else if (nks.Key == "" && nks.Value == "NP")
                {
                    sentence.MergeNext(this);
                }
                else if (nks.Key == "NP" && nks.Value == "NP")
                {
                    sentence.MergeNext(this);
                }
                else if (nks.Key == "NP" && (nks.Value == "" || nks.Value == "." || nks.Value == "!"))
                {
                    sentence.MergePrevious(this);
                }
                else
                {
                    lastFound = false;
                }

                if (lastFound == true)
                {
                    success = true;
                }
            }

            KeyValuePair <string, string> neighbors = NeighborKinds(sentence);

            if (neighbors.Key == "DT" || neighbors.Key == "PRP$")
            {
                sentence.AbsorbPrevious(this);
                neighbors = NeighborKinds(sentence);
                success   = true;
            }

            if (neighbors.Key == "ADJP")
            {
                List <Phrase> phrases = new List <Phrase>();
                phrases.Add(sentence.PhraseBefore(this));
                phrases.Add(this);
                sentence.Combine(phrases, new NounPhrase());
                neighbors = NeighborKinds(sentence);
                success   = true;
            }

            if (neighbors.Value == "PP")
            {
                Phrase after = sentence.PhraseAfter(this);
                if (after.Constituents.Count > 1 && after.Constituents[0].Text.ToLower() == "of")
                {
                    sentence.AbsorbNext(this);
                    return(true);
                }
            }

            return(success);
        }