Skip to content

Sección XIV – Máis aló das oracións

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

Vimos moitos xeitos de crear frases individuais. Pero, que fariamos para xuntar esas frases e crear un parágrafo máis grande? SimpleNLG-gl pode facelo empregando a clase DocumentElement. Esta clase utilízase para definir elementos que forman parte dunha estrutura textual maior (documentos, seccións, parágrafos, oracións, listas).

Para crear un parágrafo, combínanse as instancias de "DocumentElement" usando createParagraph. Para crear unha sección, combínanse as instancias DocumentElement con createSection. Do mesmo xeito, para crear unha lista, pódense combinar estos elementos utilizando createList, e para crear un documento, deberíase empregar createDocument. A continuación, analízase o uso de createParagraph e createSection.

Creando un parágrafo

O método createParagraph toma unha lista de oracións ou frases simples engadidas mediante o método addComponent. Estas oracións únense en forma de parágrafo.

Como primero paso, engadimos a seguinte sentencia de importación ao comezo do arquivo:

    import java.util.Arrays;

Isto permitirá pasar unha lista ao método createParagraph máis adiante. Agora estamos preparados para dar formato a un parágrafo. En primeiro lugar, definimos algunhas oracións:

    SPhraseSpec p1 = nlgFactory.createClause("María", "perseguir", "un mono");
    SPhraseSpec p2 = nlgFactory.createClause("o mono", "pelexar"); 
    SPhraseSpec p3 = nlgFactory.createClause("María", "estar", "nerviosa");

A continuación, definimos estas oracións como instancias de DocumentElement:

    DocumentElement s1 = nlgFactory.createSentence(p1);
    DocumentElement s2 = nlgFactory.createSentence(p2);
    DocumentElement s3 = nlgFactory.createSentence(p3);

A continuación, podemos pasar estes elementos como unha lista ao método createParagraph:

    DocumentElement par1 = nlgFactory.createParagraph(Arrays.asList(s1, s2, s3)); [1]

E por último realizamos o parágrafo:

    String output = realiser.realise(par1).getRealisation();
    System.out.println(output);

A saída resultante é:

    María persegue un mono. O mono pelexa. María está nerviosa.

Hai que ter en conta que nos derradeiros pasos, estamos empregando o realiser de xeito diferente que en todos os exemplos anteriores: en vez que utilizar realiser.realiseSentence() como o fixemos para as oracións individuais, agora estamos empregando Realiser.realise().getRealisation().

Creando unha sección

Digamos que queremos ter varios parágrafos, organizados xuntos baixo un encabezado de sección. Para facer isto, utilizaríase createSection().

Co noso código anterior, podemos crear unha sección con un encabezado como este:

    DocumentElement section = nlgFactory.createSection("Os xuízos juicios e aflicións de María e o mono");

Podemos agregar un parágrafo a esta sección usando:

    section.addComponent(par1);

A continuación, pódese realizar a sección como no exemplo anterior:

    String output = realiser.realise(section).getRealisation();
    System.out.println(output);

→ Para ver máis exemplos de DocumentElement, ver testsrc/DocumentElementTest.java.

Salida HTML

De forma predeterminada, SimpleNLG-Egl produce unha saída de texto plano. Se se desexa unha saída con etiquetas HTML, débese engadir un HTMLFormatter ao realiser, por exemplo:

    realiser.setFormatter(new HTMLFormatter());

→ Para ver máis exemplos con salida HTML, ver HTMLFormatterTest.java.


[1] Tamén se poden agregar oracións individuais:

    DocumentElement par1 = nlgFactory.createParagraph();
    par1.addComponent(s1); // ...etc.