Skip to content

Sección V – Generando una oración simple

Alberto J. Bugarín Diz edited this page Sep 13, 2017 · 3 revisions

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.