Skip to content

Sección X – Engadindo múltiples suxeitos e complementos

andrea.cascallar edited this page Jul 11, 2018 · 1 revision

Un SPhraseSpec pode ter múltiples suxeitos e complementos pero non verbos. Iso conséguese coa clase CoordinatedPhraseElement. Supoñamos que, ademáis de María, tamén hai unha xirafa que quere perseguir ao mono. Para engadila na frase teremos que escribir:

    NPPhraseSpec subject1 = nlgFactory.createNounPhrase("María");
    NPPhraseSpec subject2 = nlgFactory.createNounPhrase("unha", "xirafa");

    CoordinatedPhraseElement subj = nlgFactory.createCoordinatedPhrase(subject1, subject2); 
    p.setSubject(subj);

A saída resultante sería:

    María e unha xirafa perseguen un mono.

SimpleNLG-gl engadiu automaticamente a conxunción 'e' e cambiou a conxugación do verbo para que coincida cos múltiples suxeitos da oración.

Do mesmo xeito, podemos ter varios complementos nun SPhraseSpec. Supoñendo que María e a túa xirafa atoparon a máis xente a quen aterrorizar, en vez de p.setObject(" un mono "), escribiríase:

    NPPhraseSpec object1 = nlgFactory.createNounPhrase("un mono");
    NPPhraseSpec object2 = nlgFactory.createNounPhrase("a Xurxo");

    CoordinatedPhraseElement obj = nlgFactory.createCoordinatedPhrase(object1, object2); 
    obj.addCoordinate("a Marta");
    p.setObject(obj);

A saída salida resultante será:

    María e unha xirafa perseguen un mono, a Xurxo e a Marta.

Si María e a xirafa corren tan rápido que non se pode ver a quen perseguen, pódese cambiar a conxunción dos elementos coordinados:

    obj.setFeature(Feature.CONJUNCTION, "ou");

A saída resultante será:

    María e unha xirafa perseguen un mono, a Xurxo ou a Marta.

Como ocorre con moitos métodos en SimpleNLG-gl, o método createCoordinatedPhrase pode recibir todo tipo de argumentos - NPPhraseSpec, PPPhraseSpec ou incluso cadeas de texto.

→ Para ver máis exemplos de coordinación, ver testsrc/ClauseAggregationTest.java.