|
|
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. |