public override IParsedPhrase ConceptToPhrase(Context context, Concept concept, POSTagger tagger, GrammarParser parser) { Verbs.Person person = Verbs.Person.ThirdSingle; object start = context.LookupDefaulted <object>("$check", null); if (start != null && start is Datum) { Datum noundat = KnowledgeUtilities.GetClosestDatum(memory, (Datum)start, Relations.Relation.Subject); person = nouns.GetPerson(noundat.Right.Name); } return(Relations.ConjugateToPhrase(memory, conjugate, person, concept)); }
// compase a conjugation of the verb to have public static string ComposeToHave(Verbs.Person person, Verbs.Convert convert) { if (convert == Verbs.Convert.ext_Ved) { return("had"); } if (convert == Verbs.Convert.ext_Vs) { return((person == Verbs.Person.ThirdSingle) ? "has" : "have"); } if (convert == Verbs.Convert.ext_Ving) { return("having"); } if (convert == Verbs.Convert.ext_Ven) { return("had"); } return("have"); }
// compose a conjugation of the verb to do public static string ComposeToDo(Verbs.Person person, Verbs.Convert convert) { if (convert == Verbs.Convert.ext_Ved) { return("did"); } if (convert == Verbs.Convert.ext_Vs) { return(person == Verbs.Person.ThirdSingle ? "does" : "do"); } if (convert == Verbs.Convert.ext_Ving) { return("doing"); } if (convert == Verbs.Convert.ext_Ven) { return("done"); } return("do"); }
// compse a conjugation of the verb to be public static string ComposeToBe(Verbs.Person person, Verbs.Convert convert) { if (convert == Verbs.Convert.ext_Ved) { return((person == Verbs.Person.FirstSingle || person == Verbs.Person.ThirdSingle) ? "was" : "were"); } if (convert == Verbs.Convert.ext_Vs) { return(person == Verbs.Person.FirstSingle ? "am" : (person == Verbs.Person.ThirdSingle ? "is" : "are")); } if (convert == Verbs.Convert.ext_Ving) { return("being"); } if (convert == Verbs.Convert.ext_Ven) { return("been"); } return("be"); }
public static string ConjugateToTense(Memory memory, string verb, Verbs.Person person, Concept right, Verbs verbs) { if (right == memory.past) { return(verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Ved)); } if (right == memory.now) { return(verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Vs)); } if (right == memory.future) { return("will " + verbs.ComposePersonable(verb, person, Verbs.Convert.ext_V)); } List <string> parts = StringUtilities.SplitWords(right.Name, true); bool usedverb = false; for (int ii = 0; ii < parts.Count; ii++) { if (parts[ii] == "en") { parts[ii] = verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Ven); usedverb = true; } else if (parts[ii] == "ing") { parts[ii] = verbs.ComposePersonable(verb, person, Verbs.Convert.ext_Ving); usedverb = true; } } if (!usedverb) { parts.Add(verbs.InputToBase(verb)); } return(StringUtilities.JoinWords(parts)); }
// inflect a verb, appropriate to a given person for irregulars public string ComposePersonable(string verb, Verbs.Person person, Verbs.Convert convert) { if (Verbs.IsToBe(verb)) { return(Verbs.ComposeToBe(person, convert)); } if (Verbs.IsToDo(verb)) { return(Verbs.ComposeToDo(person, convert)); } if (Verbs.IsToHave(verb)) { return(Verbs.ComposeToHave(person, convert)); } if (convert == Verbs.Convert.ext_Vs && person != Verbs.Person.ThirdSingle) { return(InflectVerb(verb, Verbs.Convert.ext_V)); } else { return(InflectVerb(verb, convert)); } }
public static IParsedPhrase ConjugateToPhrase(Memory memory, IrregularVerbVariable.ConjugateVerb conjugate, Verbs.Person person, Concept right) { if (right == memory.past) { return(new WordPhrase(conjugate(person, Verbs.Convert.ext_Ved), "VBD")); } else if (right == memory.now) { return(new WordPhrase(conjugate(person, Verbs.Convert.ext_Vs), "VBZ")); } else if (right == memory.future) { return(new WordPhrase("will " + conjugate(person, Verbs.Convert.ext_V), "VB")); } List <string> parts = StringUtilities.SplitWords(right.Name, true); bool usedverb = false; for (int ii = 0; ii < parts.Count; ii++) { if (parts[ii] == "en") { parts[ii] = conjugate(person, Verbs.Convert.ext_Ven); usedverb = true; } else if (parts[ii] == "ing") { parts[ii] = conjugate(person, Verbs.Convert.ext_Ving); usedverb = true; } } if (!usedverb) { parts.Add(conjugate(person, Verbs.Convert.ext_V)); } List <IParsedPhrase> branches = new List <IParsedPhrase>(); branches.Add(new WordPhrase(StringUtilities.JoinWords(parts), "VB")); return(new GroupPhrase("VP", branches)); }