|
|
Hemos visto muchas formas de crear frases individuales. Pero, ¿qué haces si quieres juntar esas frases para crear un párrafo más grande? SimpleNLG-es puede hacerlo utilizando la clase `DocumentElement`. Esta clase se utiliza para definir elementos que forman parte de una estructura textual mayor (documentos, secciones, párrafos, oraciones, listas).
|
|
|
|
|
|
Para crear un párrafo, se combinan las instancias de "DocumentElement" usando `createParagraph`. Para crear una sección, se combinan las instancias `DocumentElement` con` createSection`. Del mismo modo, para crear una lista, se pueden combinar estos elementos utilizando `createList`, y para crear un documento, se debería usar `createDocument`. A continuación, se analiza el uso de `createParagraph` y` createSection`.
|
|
|
|
|
|
## Creando un párrafo
|
|
|
|
|
|
El método `createParagraph` toma una lista de oraciones o frases simples añadidas a través del método `addComponent`. Estas oraciones se unen en forma de párrafo.
|
|
|
|
|
|
Como primer paso, añadimos la siguiente sentencia de importación al principio del archivo:
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
Esto nos permitirá pasar una lista al método `createParagraph` más adelante. Ahora estamos listos para dar formato a un párrafo. En primer lugar, definimos algunas oraciones:
|
|
|
|
|
|
SPhraseSpec p1 = nlgFactory.createClause("María", "perseguir", "un mono");
|
|
|
SPhraseSpec p2 = nlgFactory.createClause("el mono", "pelear");
|
|
|
SPhraseSpec p3 = nlgFactory.createClause("María", "estar", "nerviosa");
|
|
|
|
|
|
A continuación, definimos estas oraciones como instancias de `DocumentElement`:
|
|
|
|
|
|
DocumentElement s1 = nlgFactory.createSentence(p1);
|
|
|
DocumentElement s2 = nlgFactory.createSentence(p2);
|
|
|
DocumentElement s3 = nlgFactory.createSentence(p3);
|
|
|
|
|
|
A continuación, podemos pasar estos elementos como una lista al método `createParagraph`:
|
|
|
|
|
|
DocumentElement par1 = nlgFactory.createParagraph(Arrays.asList(s1, s2, s3)); [1]
|
|
|
|
|
|
Y finalmente, realizamos el párrafo:
|
|
|
|
|
|
String output = realiser.realise(par1).getRealisation();
|
|
|
System.out.println(output);
|
|
|
|
|
|
La salida resultante es:
|
|
|
|
|
|
María persigue un mono. El mono pelea. María está nerviosa.
|
|
|
|
|
|
Hay que tener en cuenta que en los últimos pasos, estamos usando el realiser de manera diferente que en todos los ejemplos anteriores: En lugar de usar `realiser.realiseSentence ()`, como lo hicimos para las oraciones individuales, ahora estamos usando `Realiser.realise().getRealisation()`.
|
|
|
|
|
|
## Creando una sección
|
|
|
|
|
|
Digamos que queremos tener un montón de párrafos, organizados juntos bajo un encabezado de sección. Para hacer esto, se usaría `createSection()`.
|
|
|
|
|
|
Con nuestro código anterior, podemos crear una sección con un encabezado como este:
|
|
|
|
|
|
DocumentElement section = nlgFactory.createSection("Los juicios y afliciones de María y el mono");
|
|
|
|
|
|
Un párrafo se puede agregar a esta sección:
|
|
|
|
|
|
section.addComponent(par1);
|
|
|
|
|
|
A continuación, se puede realizar esta sección como en el ejemplo anterior:
|
|
|
|
|
|
String output = realiser.realise(section).getRealisation();
|
|
|
System.out.println(output);
|
|
|
|
|
|
→ Para ver más ejemplos de DocumentElement, ver `testsrc/DocumentElementTest.java`.
|
|
|
|
|
|
## Salida HTML
|
|
|
|
|
|
De forma predeterminada, simplenlg produce una salida de texto plano. Si se desea una salida con etiquetas HTML, se debe añadir un HTMLFormatter al realiser, por ejemplo:
|
|
|
|
|
|
realiser.setFormatter(new HTMLFormatter());
|
|
|
|
|
|
→ Para ver más ejemplos con salida HTML, ver `HTMLFormatterTest.java`.
|
|
|
|
|
|
***
|
|
|
|
|
|
[1] También se puede agregar oraciones individuales:
|
|
|
|
|
|
DocumentElement par1 = nlgFactory.createParagraph();
|
|
|
par1.addComponent(s1); // ...etc. |