-
Notifications
You must be signed in to change notification settings - Fork 1
Sección XIV – Máis aló das oracións
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
.
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()
.
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
.
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.