Beispiel #1
0
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})
Beispiel #2
0
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})