|
|
Volviendo al hecho de María persiguiendo un mono, vamos a añadir a la acción un escenario: "María persigue un mono **en el parque**".
|
|
|
|
|
|
The phrase "in the park" is a prepositional phrase and there are a number of ways we can create it using simplenlg. The simplest way would be to pass the string "in the park" to the addComplement method:
|
|
|
La frase "en el parque" es una frase preposicional. Hay diversas formad e crear frases preposicionales con SimpleNLG-ES. Las más sencilla sería pasar la cadena de caracteres "en el parque" al método `addComplement`d:
|
|
|
|
|
|
SPhraseSpec p = nlgFactory.createClause("María", "perseguir", "un mono");
|
|
|
p.addComplement("en el parque");
|
... | ... | @@ -15,7 +15,7 @@ A continuación, añadimos la frase preposicional como un complemento a la frase |
|
|
|
|
|
p.addComplement(pp);
|
|
|
|
|
|
A continuación se muestran tres formas diferentes de crear la frase preposicional "en el parque". La mejor manera de hacerlo depende de las necesidades del sistema.
|
|
|
A continuación se muestran tres formas diferentes de crear la frase preposicional "en el parque". La mejor manera de hacerlo depende de las necesidades de la aplicación.
|
|
|
|
|
|
* Forma simple:
|
|
|
|
... | ... | @@ -35,20 +35,20 @@ A continuación se muestran tres formas diferentes de crear la frase preposicion |
|
|
|
|
|
El tercer método requiere mucho más código que las otras dos formas. Entonces, ¿por qué elegiríamos el tercer método?
|
|
|
|
|
|
La razón principal es que el tercer método permite añadir partes a una frase o oración con mucha más facilidad. Tenemos que recordar que simpleNLG-es se usará normalmente en un programa más grande que seleccione el contenido de la oración, y que el contenido se determinará probablemente de manera fragmentada. Es mucho más fácil añadir una palabra o una cláusula a una frase que se ha definido de forma modular en lugar de tener que añadir nueva información a una cadena monolítica cuyas partes no están diferenciadas. Por ejemplo, si quisiéramos describir el parque como "frondoso" y hubiéramos utilizado el tercer método para definir nuestra oración, lo único que tendríamos que hacer es escribir el siguiente código:
|
|
|
La razón principal es que el tercer método permite añadir partes a una frase o oración con mucha mayor facilidad. Tenemos que recordar que, habitualmente, SimpleNLG-ES se usará en un programa más grande que seleccione el contenido de la oración, y que el contenido se determinará probablemente de manera fragmentada. Es mucho más fácil añadir una palabra o una cláusula a una frase que se ha definido de forma modular en lugar de tener que añadir nueva información a una cadena monolítica cuyas partes no están diferenciadas. Por ejemplo, si quisiéramos describir el parque como "frondoso" y hubiéramos utilizado el tercer método para definir nuestra oración, lo único que tendríamos que hacer es escribir el siguiente código:
|
|
|
|
|
|
place.addPreModifier("leafy");
|
|
|
|
|
|
Si hubiéramos escogido el primer o segundo método, añadir el adjetivo 'frondoso' a la cadena 'parque' sería más complicado. Entre otras cosas, habría que escribir un código que:
|
|
|
|
|
|
* Buscar dónde insertar la nueva palabra. En la mayoría de los casos esto requeriría analizar la cadena, que no es una tarea sencilla.
|
|
|
* Romper la cadena en partes para permitir la inserción.
|
|
|
* Insertar la palabra.
|
|
|
* Determinar si esa inserción requiere cambiar otras partes de la cadena.
|
|
|
* Unir de nuevo los trozos de la cadena de forma gramatical.
|
|
|
* Busque dónde insertar la nueva palabra. En la mayoría de los casos esto requeriría analizar la cadena, que no es una tarea sencilla.
|
|
|
* Rompa la cadena en partes para permitir la inserción.
|
|
|
* Inserte la palabra.
|
|
|
* Determine si esa inserción requiere cambiar otras partes de la cadena.
|
|
|
* Una de nuevo los trozos de la cadena de forma gramaticalmente correcta.
|
|
|
|
|
|
En otras palabras, habría que programar un realizador como SimpleNLG.
|
|
|
En otras palabras, habría que programar un realizador como SimpleNLG-ES.
|
|
|
|
|
|
Entonces, ¿ por qué dado el inconveniente mencionado anteriormente elegiríamos definir una oración utilizando los métodos #1 y #2? Porque a veces simplemente queremos generar texto enlatado, es decir, texto que sabemos que no necesitará ser ampliado o cambiado y que simplemente queremos que la salida sea como está. Si sabemos que no vamos a cambiar una frase (como 'en el parque'), entonces tiene sentido tratarla como una entidad uniforme de la manera en que los dos primeros métodos lo hacen.
|
|
|
Entonces, ¿por qué, dado el inconveniente mencionado anteriormente, podríamos optar por definir una oración utilizando los métodos #1 y #2? Porque a veces simplemente queremos generar texto enlatado, es decir, texto que sabemos que no necesitará ser ampliado o cambiado. Si simplemente queremos que la salida sea tal cual está, y sabemos que no vamos a cambiar una frase (como 'en el parque'), entonces tiene sentido tratarla como una entidad uniforme, como lo hacen los dos primeros métodos.
|
|
|
|
|
|
→ Para ver más ejemplos de frases preposicionales, ver `testsrc/PrepositionalPhraseTest.java`. |
|
|
\ No newline at end of file |