def verb(person=None, gender=None, number=None, tense=None, tran=None, S=None, OD=None, OI=None): head = wf.getVerb(person, number, tense, tran, S=S, OD=OD, OI=OI) L = [head] if tran is None: tran = head.info['entity'].transitivity if tran == 'vpi': L = [wf.getPersonalPronoun(person, number, gender, 'R', 'a')] + L if tran in ('vti', 'vtdi') and OI is None: xOI = prepositionalPhrase(function='OI', S=head.info['entity'].concept['OI'], preposition=head.info['entity'].preposition) L = L + [xOI] if tran in ('vtd', 'vtdi') and OD is None: xOD = nounPhrase(function='OD', S=head.info['entity'].concept['OD']) if xOD.info['head'].category == 'personal_pronoun': L = [xOD] + L else: L = L + [xOD] return Tree('verb', L, {'head': head})
def noun(person=None, gender=None, number=None, function='S', kind=None, S=None): if kind == 'noun': if person != '3': raise NounNotThirdPersonError( 'Phrase for noun not on the 3rd person: %s' % str( (person, gender, number, function, kind, S) ) ) head = wf.getNominal('noun', gender, number, S) next = (head.value.index, 'noun') elif kind == 'personal_pronoun': tonic = 'a' if function == 'OD' else 't' head = wf.getPersonalPronoun( person, number, gender, function, tonic) next = (head.value.index, 'personal_pronoun') else: raise NounPhraseKindError( "Invalid argument `kind`=%s for noun(). Should be one of: " "['noun', 'personal_pronoun']. " % repr(kind) ) return Tree('noun', [head], {'head': head, 'next': next})