-
Notifications
You must be signed in to change notification settings - Fork 6
Sección V – Generando una oración simple
En la clase Java de prueba TestMain mostrada anteriormente, tenemos las siguientes sentencias:
import simplenlg.framework.*;
import simplenlg.lexicon.*;
import simplenlg.lexicon.spanish.XMLLexicon;
import simplenlg.realiser.spanish.*;
import simplenlg.phrasespec.*;
import simplenlg.features.*;
Estas clases permiten especificar las partes del discurso de una oración y realizar varias operaciones sobre ellas. Es importante destacar que SimpleNLG-ES proporciona sólo una gramática sencilla: sus nociones de oración, frase nominal, etc., son muy básicas y no representan de ningún modo la gramática increíblemente variada y complicada del español.
Veamos cómo definiríamos y combinaríamos diferentes partes del discurso para generar una oración simple como "María persigue el mono". Como se discutió en la Sección III, utilizaremos la construcción de SimpleNLG SPhraseSpec
, que nos permite definir una oración o una cláusula en términos de sus constituyentes sintácticos. Esto es útil porque nos permite añadir diferentes partes de una cláusula, sin orden particular, y SimpleNLG-ES ordenará esas partes en una estructura gramatical adecuada.
SPhraseSpec p = nlgFactory.createClause();
p.setSubject("María");
p.setVerb("perseguir");
p.setObject("un mono");
El conjunto anterior de llamadas define los componentes de la oración que deseamos construir: se ha especificado un sujeto, un verbo y un complemento directo para nuestra oración. Ahora, lo único que falta es usar el realiser
, que tomará estos diferentes componentes de la oración, los combinará y generará el texto para que el resultado sea sintáctica y morfológicamente correcto:
String output2 = realiser.realiseSentence(p);
System.out.println(output2);
La salida resultante sería:
María persigue un mono.
Cuando las partes del discurso se definen y unen en una instancia de la clase SPhraseSpec
, los métodos asociados con esa clase como setSubject
, setVerb
y setObject
, unen las partes del discurso siguiendo la gramática simple incorporada en SimpleNLG-es[1].
→ Para ver más ejemplos de cláusulas, ver testsrc/ClauseTest.java
.
[1] Como veremos más adelante, las reglas de la gramática también se aplican en la construcción de los componentes más pequeños de la frase (como NPPhraseSpec
y PPPhraseSpec
) para asegurar que están bien formados. Por lo tanto, las reglas de gramática que implementa SimpleNLG-ES no se definen dentro de un solo módulo sino que se distribuyen a lo largo de las diversas definiciones de clase.