|
|
Un `SPhraseSpec` puede tener múltiples sujetos y complementos pero no verbos. Esto se consigue con la clase `CoordinatedPhraseElement`. Digamos que también tienes una jirafa que quiere perseguir al mono. Para añadir a tu jirafa tendrías que escribir:
|
|
|
|
|
|
NPPhraseSpec subject1 = nlgFactory.createNounPhrase("María");
|
|
|
NPPhraseSpec subject2 = nlgFactory.createNounPhrase("tu", "jirafa");
|
|
|
|
|
|
CoordinatedPhraseElement subj = nlgFactory.createCoordinatedPhrase(subject1, subject2);
|
|
|
p.setSubject(subj);
|
|
|
|
|
|
La salida resultante sería:
|
|
|
|
|
|
María y tu jirafa persiguen un mono.
|
|
|
|
|
|
SimpleNLG-es añadió automáticamente la conjunción 'y' y cambió la conjugación del verbo para que coincida con los múltiples sujetos de la oración.
|
|
|
|
|
|
Del mismo modo, podemos tener varios complementos en un `SPhraseSpec`. Suponiendo que María y tu jirafa han encontrado a más gente a quien aterrorizar. En lugar de `p.setObject (" un mono ")`, se escribiría:
|
|
|
|
|
|
NPPhraseSpec object1 = nlgFactory.createNounPhrase("un mono");
|
|
|
NPPhraseSpec object2 = nlgFactory.createNounPhrase("a Jorge");
|
|
|
|
|
|
CoordinatedPhraseElement obj = nlgFactory.createdCoordinatedPhrase(object1, object2);
|
|
|
obj.addCoordinate("a Marta");
|
|
|
p.setObject(obj);
|
|
|
|
|
|
La salida resultante será:
|
|
|
|
|
|
María y tu jirafa persiguen un mono, a Jorge y a Marta.
|
|
|
|
|
|
Si Mary y la jirafa corren tan rápido que no se puede ver a quién persiguen, se puede cambiar la conjunción en los elementos coordinados:
|
|
|
|
|
|
obj.setFeature(Feature.CONJUNCTION, "or");
|
|
|
|
|
|
La salida resultante será:
|
|
|
|
|
|
María y tu jirafa persiguen un mono, a Jorge o a Marta.
|
|
|
|
|
|
Como ocurre con muchos métodos en SimpleNLG-es, el método `createCoordinatedPhrase` puede recibir todo tipo de argumentos -` NPPhraseSpec`, `PPPhraseSpec` o incluso cadenas de texto.
|
|
|
|
|
|
→ Para ver más ejemplos de coordinación, ver `testsrc/ClauseAggregationTest.java`. |
|
|
\ No newline at end of file |