def determiner(person=None, gender=None, number=None, function='S', kind=None, S=None): if percent(35): det = wf.getNominal('article', gender, number) next = (det.value.index, 'article') elif percent(50): det = wf.getAdjectivePronoun(gender, number, 'determiner') next = (det.value.index, 'adjective_pronoun') else: det = wf.getPossessivePronoun( gender, number, aleatory('person'), aleatory('number')) next = (det.value.index, 'possessive_pronoun') return Tree('determiner', [det], {'next': next})
def nounPhrase(person=None, gender=None, number=None, function='S', kind=None, S=None): if person is None: if S and verify_semantics(S, 'PESSOA'): person = aleatory('person') else: person = '3' if kind is None: if person != '3' or percent(15): kind = 'personal_pronoun' else: kind = 'noun' L = [] next = None if kind == 'noun': det = determiner(person, gender, number, function, kind, S) L.append(det) next = det.info['next'] n = nounBar(person, gender, number, function, kind, S) if not next: next = n.info['next'] L.append(n) return Tree('noun phrase', L, {'head': n.info['head'], 'next': next})
def prepositionalPhrase(preposition=None, person=None, gender=None, number=None, function='S', kind=None, S=None): if person is None: if S and verify_semantics(S, 'PESSOA'): person = aleatory('person') else: person = '3' if kind is None: if person != '3' or percent(15): kind = 'personal_pronoun' else: kind = 'noun' np = nounPhrase(person, gender, number, function, kind, S) next = np.info['next'] L = [np] p = wf.getPreposition(preposition, gender, number, next) L = [Tree("preposition", [p])] + L return Tree('prepositional phrase', L, {'head': np.info['head']})