Skip to content

Sección V – Xerando unha oración simple

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

Na clase Java de proba TestMain mostrada anteriormente, temos as seguintes sentencias:

    import simplenlg.framework.*;
    import simplenlg.lexicon.*;
    import simplenlg.lexicon.galician.XMLLexicon;
    import simplenlg.realiser.galician.*;
    import simplenlg.phrasespec.*;
    import simplenlg.features.*;

Estas clases permiten especificar as partes do discurso dunha oración e realizar operacións sobre elas. É importante destacar que SimpleNLG-gl soamente proporciona unha gramática sinxela: as súas nocións de oración, frase nominal, etc., son moi básicas e non representan de ningún xeito a gramática incriblemente variada e complicada do galego.

A continuación móstrase como se definirían e combinarían as diferentes partes do discurso para xerar unha oración simple como “María persegue un mono”. Para isto utilizaremos a construción de SimpleNLG SphraseSpec, que permite definir unha oración ou unha cláusula en termos dos seus constituíntes sintácticos. Isto é útil porque permite engadir diferentes partes dunha cláusula sen unha orde particular e SimpleNLG-gl ordenará esas partes nunha estrutura gramatical adecuada.

    SPhraseSpec p = nlgFactory.createClause();
    p.setSubject("María");
    p.setVerb("perseguir");
    p.setObject("un mono");

O conxunto anterior de sentencias define os compoñentes da oración que queremos construír: especificouse un suxeito, un verbo e un complemento directo. Para obter o texto final debe utilizarse o Realiser, que tomará os elementos da oración para, a partir de eles, xerar un texto sintáctica e morfoloxicamente correcto:

	String output2 = realiser.realiseSentence(p);
    System.out.println(output2);

A saída resultante é:

	María persegue un mono.

Cando as partes do discurso son definidas nunha instancia da clase SPhraseSpec, os métodos asociados a esta clase como setSubject, setVerb e setObject unen as partes do discurso seguindo a gramática simple incorporada en SimpleNLG-gl[1].

→ Para ver máis exemplos de cláusulas, ver testsrc/ClauseTest.java.


[1] Como veremos máis adiante, as regras da gramática tamén se aplican na construción de compoñentes máis pequenos da frase (como NPPhraseSpec e PPPhraseSpec) para asegurar que están ben formados. Polo tanto, as regras de gramática que implementa SimpleNLG-gl non se definen dentro dun solo módulo senón que se distribúen ao longo das diversas definicións da clase.