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