facultad matemática, física y computación

82
Universidad Central “Marta Abreu” de Las Villas. Facultad Matemática, Física y Computación TRABAJO DE DIPLOMA Título: Traductor de Español a Latín para la descripción de las especies botánicas. AUTORES: Daril Alemán Morales Fernando David García García TUTORES: Dra. Zoila Zenaida García Valdivia Dra. Susana Carreras Gómez CARRERA: Licenciatura en Ciencia de la Computación Curso 2012-2013

Upload: others

Post on 29-Dec-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Facultad Matemática, Física y Computación

Universidad Central “Marta Abreu” de Las Villas.

Facultad Matemática, Física y Computación

TRABAJO DE DIPLOMA

Título: Traductor de Español a Latín para la

descripción de las especies botánicas.

AUTORES: Daril Alemán Morales

Fernando David García García

TUTORES: Dra. Zoila Zenaida García Valdivia

Dra. Susana Carreras Gómez

CARRERA: Licenciatura en Ciencia de la Computación

Curso 2012-2013

Page 2: Facultad Matemática, Física y Computación

Hago constar que el presente trabajo fue realizado en la Universidad Central “Marta Abreu” de Las Villas

como parte de la culminación de los estudios de la especialidad de Ciencia de la Computación,

autorizando a que el mismo sea utilizado por la institución, para los fines que estime conveniente, tanto

de forma parcial como total y que además no podrá ser presentado en eventos ni publicado sin la

autorización de la Universidad.

________________ ________________

Firma de los autores

Los abajo firmantes, certificamos que el presente trabajo ha sido realizado según acuerdos de la

dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta

envergadura referido a la temática señalada.

______________ _______________ __________________

Firma de los tutores Firma del jefe del

Laboratorio

Page 3: Facultad Matemática, Física y Computación

Pensamiento

I

No necesito saberlo todo, tan sólo necesito saber dónde encontrar aquello que me hace

falta, cuando lo necesite.

Albert Einstein

Page 4: Facultad Matemática, Física y Computación

Dedicatoria

II

Dedicatoria

A mí, por tanto esfuerzo y noches sin dormir.

A mis padres, por su apoyo en todo momento.

A toda mi familia, por su preocupación.

A mis amigos, siempre presentes en momentos difíciles.

Daril Alemán Morales

Page 5: Facultad Matemática, Física y Computación

Dedicatoria

III

Dedicatoria

En memoria de mi abuelo Fernando que siempre confió en mí y me brindó apoyo en todo

momento de su vida; y sé que está orgulloso de mí.

A toda mi familia que de una forma u otra me brindaron su apoyo.

Fernando D. García García

Page 6: Facultad Matemática, Física y Computación

Agradecimientos

IV

Agradecimientos

A mis padres, por su incondicional apoyo en todos los momentos de mi vida y por hacer de

mí una mejor persona.

A mis abuelos, por preguntarme en todo momento aun cuando no entendieran nada.

A mi hermana Deyanira, por hacerme olvidar los problemas.

A todos mis tíos, por estar siempre presentes.

A Fernando, mi compañero de tesis, por su aporte en la realización de la misma.

A Víctor, Sergito y Ruperto por su ayuda en estos 5 años.

A todos los colegas que aún continuamos juntos después de tantas aventuras.

A los que ya no están.

A mis tutoras, por su paciencia y apoyo en estos meses difíciles.

A Maikel, por su ayuda a última hora.

A Dayana, por los buenos momentos, típico de ella.

A Nesty, por su apoyo en la distancia.

A todos los que contribuyeron en mi formación como estudiante.

Daril Alemán Morales

Muchas Gracias.

Page 7: Facultad Matemática, Física y Computación

Agradecimientos

V

Agradecimientos

A mi madre, por haberme dado la fuerza necesaria durante todos estos años para enfrentarme

a las dificultades de la vida.

A mis abuelas, mi abuelo Marcelino, mis tías y mi padre, por preocuparse tanto por mí.

A mis hermanas Maité y Kemeelyt, por estar en todo momento disponibles para brindarme

su ayuda y cariño.

A mi novia Baby por su cariño y ayuda desinteresada.

A todos mis amigos, que estuvieron junto a mí en los buenos y malos momentos.

A mis compañeros de aula, especialmente a Victor Marrero, Sergito y Daril por su ayuda

académica incondicional.

A mis tutoras Zenaida y Susana por su inestimable ayuda.

A mis profesores de clases que con tanta sabiduría me prepararon para ser un buen

profesional.

A mi compañero de tesis Daril, por todo su apoyo y su paciencia infinita.

A mi compañero Maikel y a todas aquellas personas que de una forma u otra, ayudaron a la

realización de este trabajo.

GRACIAS A DIOS

Fernando D. García García

Muchas gracias.

Page 8: Facultad Matemática, Física y Computación

Resumen

VI

Resumen

Los profesionales de la botánica requieren conocer un sistema preciso y universal que

les permita describir las nuevas unidades que van siendo incorporadas al sistema de su

ciencia. En la Universidad Central “Marta Abreu” de las Villas (UCLV) existe un Jardín

Botánico en el cual se llevan a cabo investigaciones acerca del mundo vegetal. Por

solicitud de esta entidad, surgió la idea de desarrollar una aplicación computacional que

dotara a sus especialistas de la herramienta básica en la práctica taxonómica.

Como antecedente de este trabajo, se desarrolló una primera versión del software con

el fin de automatizar el proceso taxonómico. El mismo fue desarrollado como trabajo de

Diploma por parte de dos estudiantes de la carrera Ciencia de la Computación en el año 2006.

Esta versión no cumplía aún con todos los requerimientos de la problemática en cuestión. Por

ello se decidió dar continuidad al tema a través del presente trabajo.

La aplicación se desarrolló en dos etapas. En la primera de ellas se realizó el diseño

del programa que daría solución al problema planteado. Para ello se utilizó la notación del

Lenguaje de Modelación Unificado. En la segunda etapa se procedió a la implementación del

programa utilizando conjuntamente la programación a través de un lenguaje declarativo,

como lo es Prolog, y la programación orientada a objeto, en este caso Java. De esta forma

quedó desarrollado EsLatín3, Traductor de Español a Latín para la descripción de las especies

botánicas, que constituye una herramienta muy útil y eficiente.

Page 9: Facultad Matemática, Física y Computación

Abstract

VII

Abstract

The professionals of the botany need to know a precise and universal system that

allows them to describe the new units that are incorporated into the system of their science. In

the Central University “Marta Abreu“ of Las Villas (UCLV) exists a Botanical Garden in

which researches are carried out on the vegetable world. For request of this entity, arose the

idea of creating an application that will provide its specialists with the basic tool in the

taxonomic practice.

As precedent of this work, the first version of the software was developed in order to

automate the taxonomic process. It was developed like a Diploma Paper on the part of two

students of the major of Computer Science in 2006. This version was still not fulfilling with

all the requests of the issue in question. That is why it was decided to give continuity to that

topic through the present work.

The application was developed in two stages. The first one was the creation of the

design of the program that would answer the problem. For this, there was used the notation of

the Unified Modelling Language. The second stage was the implementation of the program

using jointly the programming through a declarative language, as it is Prolog, and the

programming faced to the object, in this case Java. This way was developed EsLatín3, a

Translator from Spanish to Latin for the description of the botanical species, which

constitutes a very useful and efficient tool.

Page 10: Facultad Matemática, Física y Computación

Índice

VIII

Contenido

Dedicatoria .............................................................................................................................................. II

Dedicatoria ............................................................................................................................................. III

Agradecimientos .................................................................................................................................... IV

Agradecimientos ..................................................................................................................................... V

Resumen ................................................................................................................................................ VI

Abstract ................................................................................................................................................. VII

Introducción ............................................................................................................................................ 1

Planteamiento del problema .................................................................................................................... 1

Objetivo general ...................................................................................................................................... 2

Objetivos específicos .............................................................................................................................. 3

Preguntas de investigación ...................................................................................................................... 3

Justificación de la investigación ............................................................................................................. 4

CAPÍTULO 1: PROCESAMIENTO DEL LENGUAJE NATURAL EN LA INTELIGENCIA ARTIFICIAL ................. 5

1.1 Procesamiento del lenguaje natural ....................................................................................... 5

1.1.1 Introducción .................................................................................................................... 5

1.1.2 Historia ............................................................................................................................ 6

1.1.3 Problemática del lenguaje natural .................................................................................. 7

1.2 Traducción automática: métodos, problemas y potencial ..................................................... 9

1.2.1 ¿Qué es la traducción automática? ................................................................................ 9

1.2.2 Métodos de traducción automática ............................................................................... 9

1.2.3 Problemas de la traducción automática ....................................................................... 12

1.2.4 Futuro de la traducción automática ............................................................................. 13

1.3 La programación lógica y el lenguaje natural ....................................................................... 13

1.3.1 Las gramáticas en Prolog .............................................................................................. 14

1.3.2 Gramáticas Libres del Contexto .................................................................................... 15

1.3.3 Gramáticas de Cláusulas Definidas ............................................................................... 17

1.4 Descripción de plantas mediante el Latín Botánico .............................................................. 21

Page 11: Facultad Matemática, Física y Computación

Índice

IX

1.4.1 Características del texto latino empleado en la descripción de las especies botánica. 21

1.4.2 El texto no comparativo en la descripción de las especies botánicas. ......................... 23

1.5 Conclusiones parciales .......................................................................................................... 25

CAPÍTULO II: IMPLEMENTACIÓN DE ESLATÍN 3, TRADUCTOR DE ESPAÑOL A LATÍN PARA LA

DESCRIPCIÓN DE LAS ESPECIES BOTÁNICAS ......................................................................................... 26

2.1 Introducción .......................................................................................................................... 26

2.2 Modelación del sistema ........................................................................................................ 26

2.2.1 Diagrama de Casos de Uso ............................................................................................ 27

2.2.2 Diagrama de Actividades............................................................................................... 28

2.2.3 Diagrama de Clases ....................................................................................................... 28

2.3 ¿Por qué se escogen los lenguajes JAVA y PROLOG? ........................................................... 33

2.3.1 La Gramática en Prolog ................................................................................................. 33

2.3.2 El archivo Diccionario .................................................................................................... 35

2.3.3 Predicados auxiliares en Prolog .................................................................................... 36

2.3.4 Enlace Java-Prolog......................................................................................................... 37

2.3.5 Acerca del instalador del Software. .............................................................................. 40

2.4 Conclusiones Parciales .......................................................................................................... 40

CAPÍTULO III: MANUAL DE USUARIO DE ESLATÍN 3 .............................................................................. 41

3.1 Características del software .................................................................................................. 41

3.2 Pasos para la instalación del software .................................................................................. 42

3.3 Trabajo con la aplicación ....................................................................................................... 42

3.4 El menú Archivo .................................................................................................................... 45

3.5 El menú Editar ....................................................................................................................... 46

3.6 El menú Diccionario .............................................................................................................. 47

3.7 El menú Herramientas .......................................................................................................... 54

3.8 El menú Ayuda ...................................................................................................................... 56

CONCLUSIONES ..................................................................................................................................... 59

Recomendaciones ................................................................................................................................. 60

Referencias bibliográficas ..................................................................................................................... 61

Anexos ................................................................................................................................................... 64

Page 12: Facultad Matemática, Física y Computación

Introducción

1

Introducción

En la era de la comunicación y de las tecnologías, la difusión de información y de

ideas no debería tener obstáculos y, por lo tanto, la diversidad de lenguas existentes no

debería constituir una barrera. Sin embargo, ante la ausencia de una lengua común surge la

necesidad de contar con instrumentos que permitan acceder a cualquier tipo de información,

independientemente del idioma en que esté escrita o expresada.

Hoy día, los avances en la Tecnología de la Información y las Comunicaciones (TIC)

se han combinado para fomentar la automatización de la traducción. La relación entre la

tecnología y la traducción se remonta al período de la Guerra Fría, ya que en los años 50 la

competición entre los EEUU y la Unión Soviética era tan intensa a todos los niveles, que

miles de documentos tuvieron que ser traducidos del ruso al inglés y viceversa. Al mismo

tiempo, toda esta gran demanda puso de manifiesto la ineficacia de los procesos de

traducción, sobre todo en áreas especializadas del conocimiento, e hizo que aumentara el

interés por la traducción automática.

La importancia de los sistemas de traducción radica en que pueden contribuir a

eliminar las barreras de comunicación entre personas de diferentes culturas. Aunque en la

actualidad ya se comercializan algunos sistemas de traducción automática, la obtención de un

sistema de calidad y totalmente automático está lejos de haberse conseguido.

Haciendo uso de la computadora como herramienta de desarrollo ha sido posible

construir aplicaciones para el procesamiento del lenguaje natural, tales como: traductores,

diccionarios electrónicos, reconocedores de voz, procesadores de textos especializados,

correctores ortográficos, analizadores sintácticos, bases de datos terminológicos, entre otros.

Planteamiento del problema

El latín, lengua que tuvo su origen en la región del Lacio, Península Itálica, es el

idioma utilizado por los profesionales de la botánica para describir las nuevas unidades o

grupos taxonómicos que van siendo incorporados al corpus que conforma el sistema de su

Page 13: Facultad Matemática, Física y Computación

Introducción

2

ciencia. El documento prescriptivo para la práctica de la nomenclatura botánica es el Código

Internacional de Nomenclatura Botánica (ICBN, por sus siglas en inglés). Aunque en la

actualidad no es obligatorio hacer estas descripciones en latín, muchos investigadores lo

continúan utilizando con el objetivo de mantener un consenso general y casi universal que

permita el global entendimiento acerca de este ámbito que, efectivamente, es patrimonio de

toda la humanidad.

El estudio del latín en Cuba no satisface todas las demandas profesionales de esta

lengua, pues sólo se imparte en el nivel universitario como parte de la carrera Licenciatura en

Filología. Por esta razón se hace muy difícil la capacitación de profesionales en el área de la

Botánica. Ante estos inconvenientes se decidió abrir un curso de postgrado de latín en el

Jardín Botánico Nacional impartido por la Dra. Susana Carreras Gómez, profesora titular del

Departamento de Lingüística y Literatura de la Facultad de Humanidades de la Universidad

Central “Marta Abreu” de Las Villas. El curso pretende dotar a los especialistas de los

conocimientos acerca de la lengua latina que se emplea en la nomenclatura botánica y la

práctica taxonómica. Como herramienta de ayuda en la impartición de este curso se utiliza el

software EsLatín versión 2, desarrollado como parte de un trabajo de diploma por los

estudiantes de Ciencia de la Computación Marvin Ávila Kotliarov y Noeslen Mendoza

Morales en el año 2006.

El trabajo anteriormente mencionado constituye el antecedente principal de la

presente investigación. Realiza traducciones de palabras aisladas y no de frases completas.

Con el objetivo de ampliar la ayuda, se decidió dar continuidad al tema por medio del

presente trabajo de diploma.

Objetivo general

Desarrollar un software que facilite el proceso de traducción de frases del español al

latín, mejorando la capacidad de traducción y las funcionalidades de la aplicación actual en

aras de sentar bases concretas en el proceso de construcción de un definitivo traductor

automático de una taxonomía completa.

Page 14: Facultad Matemática, Física y Computación

Introducción

3

Objetivos específicos

1- Analizar los referentes teóricos y metodológicos que sustentan el estudio.

2- Dominar elementos básicos del latín empleado en la botánica.

3- Determinar el universo lingüístico que se incorporará al traductor.

4- Lograr un correcto análisis morfológico y sintáctico de las palabras para mejorar

el proceso de traducción.

5- Adicionar funcionalidades de modificación a la base de conocimiento.

6- Crear una interfaz visual tan cómoda y eficiente como la de la versión anterior del

software.

Preguntas de investigación

1- ¿Cuál de los métodos de traducción automática es el más adecuado para resolver el

problema?

2- ¿Es Prolog el lenguaje adecuado para representar el conocimiento?

3- ¿Se podrá utilizar la base de conocimiento de la versión actual del EsLatín en la nueva

aplicación?

4- ¿Cómo se tratará la ambigüedad de las palabras según el contexto en que estén

escritas?

Page 15: Facultad Matemática, Física y Computación

Introducción

4

Justificación de la investigación

Entre los principios de Nomenclatura Botánica expresados en El Código de

Nomenclatura Botánica está el de escribir los nombres científicos en latín o latinizados,

aunque sus orígenes se encuentren en otro idioma. En el Jardín Botánico de la Universidad

Central “Marta Abreu” de Las Villas (UCLV), este proceso se realiza con ayuda de la

aplicación EsLatín versión 2 la cual efectúa traducciones palabra a palabra. Pero la práctica

taxonómica va más allá de la traducción de palabras y la creación de sintagmas nominales.

Los especialistas deben expresar las características de las especies, entre las que se

encuentran tamaño, color, forma, etc., y esto se realiza a través de la construcción de

oraciones, lo cual no puede hacerse en una única consulta en el EsLatín.

Sin dudas, un software que permita la traducción de una oración completa del español al latín

ha de constituir un aporte de gran valía para los profesionales de la botánica, que ahorrarían

tiempo, añadirían automatización al proceso y verían reducido el corpus de la lengua latina

que ellos deben incorporar a su conocimiento.

Una vez introducidos los aspectos generales del presente trabajo, se describe cómo se

ha estructurado la tesis en capítulos.

Capítulo I: En este capítulo se trata el tema del Procesamiento del Lenguaje Natural como

una rama de la Inteligencia Artificial para el desarrollo de este tipo de aplicaciones. Se hace

un análisis de los diferentes métodos de traducción automática, con el objetivo de determinar

cuál de ellos es el más adecuado para la investigación. Por último se hace referencia, al uso

de la programación lógica en la solución de problemas relacionados con el lenguaje natural.

Capítulo II: En el segundo capítulo se concentra toda la labor de análisis previo de los

problemas y los métodos a utilizar, el diseño y organización de las clases y la explicación de

la implementación del software EsLatín versión 3.

Capítulo III: El tercer y último capítulo constituye el manual de usuario donde se explican

las principales funcionalidades de la aplicación.

Page 16: Facultad Matemática, Física y Computación

Capítulo 1

5

CAPÍTULO 1: PROCESAMIENTO DEL LENGUAJE NATURAL EN

LA INTELIGENCIA ARTIFICIAL

1.1 Procesamiento del lenguaje natural

Una meta fundamental de la Inteligencia Artificial es la manipulación del lenguaje

natural usando herramientas de computación, que les permitan a las computadoras

comunicarse con un humano en su propio lenguaje (español, inglés, francés, etc.). A esta

tarea se le denomina Procesamiento del Lenguaje Natural (Russell and Norvig 1995). El

mismo se ocupa de la formulación e investigación de mecanismos eficaces

computacionalmente para la comunicación entre personas o entre personas y máquinas.

1.1.1 Introducción

El Procesamiento del Lenguaje Natural (PLN) (Moreno, Palomar et al. 1999) es uno

de los campos relacionados con la Inteligencia Artificial, “que hace uso de un conjunto de

mecanismos que la computadora asimila en un lenguaje de programación definido (formal) y

le permite comunicarse con el ser humano en su propio lenguaje (español, inglés,

etc.)”.(Montero Martínez 2000). En sentido general se ocupa de la formulación e

investigación de mecanismos eficaces computacionalmente para la comunicación entre

personas o entre personas y máquinas por medio de lenguajes naturales. El PLN no trata de la

comunicación por medio de lenguajes naturales de una forma abstracta, sino de diseñar

mecanismos para comunicarse que sean eficaces computacionalmente, que se puedan realizar

por medio de programas que ejecuten o simulen la comunicación. El lenguaje natural es

inherentemente ambiguo a diferentes niveles: a nivel léxico, una misma palabra puede tener

varios significados, y la selección del apropiado se debe deducir a partir del contexto

oracional o conocimiento básico. Muchas investigaciones en el campo del PLN han estudiado

métodos para resolver las ambigüedades léxicas mediante diccionarios, gramáticas, bases de

conocimiento y correlaciones estadísticas. Desde este punto de vista, el conocimiento

humano sería incomprensible para una computadora, teniendo en cuenta que una

computadora puede almacenar un texto en archivos, con lo que poseería la misma

Page 17: Facultad Matemática, Física y Computación

Capítulo 1

6

información que una persona, pero no podría extraer inferencias lógicas de ese texto,

generalizarlo, resumirlo, o responder a preguntas sobre dicho texto, porque no lo entiende,

simplemente lo conoce.

Por ello surgen un conjunto de disciplinas como el procesamiento del texto,

tecnologías del lenguaje, lingüística computacional, etc., entre las que se incluye igualmente

el procesamiento del lenguaje natural, que pretenden proporcionar a las computadoras la

habilidad de entender el texto y no sólo almacenarlo.

La experiencia práctica acumulada en este campo, señala la conveniencia de orientar

el reconocimiento del lenguaje natural más al análisis de frases, oraciones y textos en su

conjunto, que al reconocimiento de palabras aisladas. En otras palabras, dar más prioridad al

reconocimiento del sistema en su conjunto que al reconocimiento de cada una de las partes

que lo conforman.

1.1.2 Historia

Las primeras aplicaciones del procesamiento del lenguaje natural surgieron entre 1940

y 1960, teniendo como interés fundamental la traducción automática de textos entre

diferentes idiomas (Hutchins 2007). Los experimentos en este ámbito se basaban

fundamentalmente en la sustitución automática palabra por palabra, por lo que se obtenían

traducciones muy rudimentarias, que no proporcionaban unos resultados claros.

Surgió por tanto la necesidad de resolver ambigüedades sintácticas y semánticas, así

como la importancia de considerar la información contextual. Los problemas más relevantes

en este tiempo fueron la carencia de un orden de la estructura oracional en algunas lenguas, y

la dificultad para obtener una representación tanto sintáctica como semántica; pero una vez

que se empezaron a tener en cuenta, se dio paso a una concepción más realista del lenguaje en

la que era necesario contemplar las transformaciones que se producen en la estructura de la

frase durante el proceso de traducción.

En los años sesenta los intereses se desplazaron hacia la comprensión del lenguaje. La

mayor parte del trabajo realizado en este período se centró en técnicas de análisis sintáctico.

Hacia los setenta la influencia de los trabajos en inteligencia artificial fue decisiva, y

el interés se centró en la representación del significado. Como resultado se construyó el

Page 18: Facultad Matemática, Física y Computación

Capítulo 1

7

primer sistema de preguntas-respuestas basado en lenguaje natural. En esta misma época

surgió la máquina Eliza (Giannetti 1997, Dávila, Astorga et al. 2007) que reproducía las

habilidades conversacionales de un psicólogo, para lo cual recogía patrones de información

de las respuestas del cliente y elaboraba preguntas que simulaban una entrevista.

Entre los años 70 y 80, ya superados los primeros experimentos, se hicieron intentos

más serios de construir programas más fiables, por lo que aparecieron numerosas gramáticas

orientadas a un tratamiento computacional, y la tendencia hacia la programación lógica

experimentó un notable crecimiento.

En Europa surgieron intereses en la elaboración de programas para la traducción

automática, y se creó el proyecto de investigación Eurotra (Benotti 2004) que tenía como

finalidad la traducción multilingüe. En Japón aparecieron equipos dedicados a la creación de

productos de traducción para su distribución comercial.

Los últimos años se caracterizan por la incorporación de técnicas estadísticas y el

desarrollo de formalismos adecuados para el tratamiento de la información léxica. Se han

introducido nuevas técnicas de representación del conocimiento muy cercanas a la

inteligencia artificial, y las técnicas de procesamiento utilizadas por investigadores

procedentes del área de la lingüística e informática son cada vez más próximas.

1.1.3 Problemática del lenguaje natural

Uno de los principales problemas encontrados al tratar el texto es la ambigüedad. En

el lenguaje humano es posible encontrar múltiples expresiones y palabras que pueden tener

varios significados dependiendo de las circunstancias de uso. En el campo del PLN el

problema de la ambigüedad puede tratarse desde distintas perspectivas. Desde la ambigüedad

debido a palabras polisémicas, hasta la ambigüedad producida por las distintas

interpretaciones que pueda tener una oración. Dentro del PLN, por tanto, se pueden distinguir

tres tipos de ambigüedad (Vázquez Pérez 2009):

Ambigüedad léxica (Kaplan, Doorn et al. 2010)

Ambigüedad sintáctica o ambigüedad estructural (Fernández Reyes 2011)

Ambigüedad semántica.(Gelbukh and Sidorov 2006)

Page 19: Facultad Matemática, Física y Computación

Capítulo 1

8

La primera de ellas se produce cuando una misma palabra puede pertenecer a diferentes

categorías gramaticales. La segunda aparece cuando debido a la forma en que se asocian los

distintos constituyentes de una oración, esta se puede interpretar de varias formas. Por último,

la ambigüedad semántica se refiere a los distintos significados que puede tener una palabra

dependiendo del uso que se le esté dando en cada momento. Para tratar de eliminar la

ambigüedad es preciso dividir el lenguaje en partes, es decir, construir modelos más

pequeños donde cada uno de ellos se encarga de un determinado aspecto de la lengua. Según

(Sosa 1997) el lenguaje natural se estructura normalmente en cuatro niveles de análisis:

morfológico,

sintáctico,

semántico y

pragmático.

Análisis morfológico: Se ocupa de la formación y estructura de las palabras a partir de las

unidades más básicas de significado denominadas morfemas. Su función consiste en detectar

la relación que se establece entre las unidades mínimas que forman una palabra, como puede

ser el reconocimiento de sufijos o prefijos (Pereira and Shieber 2002).

Análisis sintáctico: Este módulo se ocupa de realizar el análisis sintáctico de tal forma que

selecciona la etiqueta gramatical más apropiada para cada palabra (Montero Martínez 2000).

El resultado de este proceso consiste en generar la estructura correspondiente a las categorías

sintácticas formadas por cada una de las unidades léxicas que aparecen en la oración.

Análisis semántico: En este caso se ocupa de asignar el sentido correspondiente a cada

palabra (resolver la ambigüedad semántica). Este módulo puede funcionar en paralelo con el

módulo de análisis sintáctico o posteriormente (Dagerman, Akan et al. 2013). En cualquier

caso, existen diferentes técnicas aplicables para resolver la ambigüedad: lógica de predicados,

redes semánticas, grafos de dependencias conceptuales, etc.

Análisis pragmático: Añade información adicional al análisis del significado de la frase en

función del contexto donde aparece. Da cuenta de la información no lingüística que influye

en el procesamiento e interpretación. En resumen, se ocupa de cómo las oraciones se utilizan

Page 20: Facultad Matemática, Física y Computación

Capítulo 1

9

en diferentes situaciones y cómo el uso puede afectar a su interpretación. Se trata de uno de

los niveles de análisis más complejos (Reyes 1990).

1.2 Traducción automática: métodos, problemas y potencial

1.2.1 ¿Qué es la traducción automática?

Entre las dificultades históricas de la comunicación se puede mencionar la barrera del

lenguaje. Es por ello que la traducción ha cobrado gran interés aún antes del

nacimiento de la informática. Los avances tecnológicos han propiciado el desarrollo de

herramientas para la automatización de este proceso.

La traducción automática (en adelante: TA) es sin duda un desafío científico. Sin

embargo la razón por la cual despierta tanto interés no es de índole científica, sino

por una necesidad netamente práctica.

No existe en la bibliografía una definición formal de lo que significa TA. Según

(Hernández Mercedes 2002), en sentido estricto es “el proceso por el cual una máquina

traduce un texto de una lengua a otra, subdividiendo la sintaxis, identificando las partes del

discurso, intentando resolver eventuales ambigüedades y, por último, traduciendo los

componentes y la estructura en la lengua de destino”.

El propósito de este trabajo está en capturar el potencial de las técnicas y paradigmas

actualmente desarrollados en el área de la TA, para poder utilizar la mejor variante que

permita resolver el problema en cuestión.

1.2.2 Métodos de traducción automática

Enfoques basados en normas

Las estrategias basadas en normas, de acuerdo con (Hutchins 2007), se pueden dividir

en tres enfoques tradicionales, a saber: el sistema de traducción directa, el sistema interlingua

y el sistema de transferencia.

Page 21: Facultad Matemática, Física y Computación

Capítulo 1

10

Sistema de traducción directa

El sistema de traducción directa es el enfoque más sencillo (Craciunescu and Gerding-

Salas 2007). Está diseñado para un par de lenguas determinado. Se traduce directamente de la

lengua fuente (LF) a la lengua meta (LM), su supuesto básico es que el vocabulario y la

sintaxis de los textos de la lengua fuente no necesitan ser analizados, sólo lo estrictamente

necesario para la resolución de ambigüedades. Normalmente, estos sistemas consisten en un

único diccionario bilingüe y un programa único para analizar el texto fuente.

Sistema interlingua

El segundo sistema básico es el sistema interlingua, que asume que es posible

convertir un texto de LF en representaciones sintácticas y semánticas comunes para más de

una lengua (Zapata and Benítez 2009). El texto en la LF se transforma en un lenguaje

intermedio mediante el componente “Análisis” (véase Figura 1.1). El texto en la LM se

obtiene a partir de la representación del texto en el lenguaje intermedio, mediante el

componente “Generación”. La estructura del lenguaje intermedio, llamado “interlingua”, es

independiente de la lengua fuente y de la lengua meta y está basada en una lengua artificial,

como por ejemplo el esperanto. Un argumento a su favor es el efecto de economía: con un

solo sistema se puede traducir a varias lenguas, aunque por otro lado, la construcción de tal

interlingua es un trabajo muy complejo.

Sistema de transferencia

Este sistema establece una representación intermedia entre las lenguas origen y meta,

alrededor de la cual se organiza el análisis y la síntesis. La transferencia separa el proceso de

traducción en tres fases: análisis, transferencia y síntesis y, a su vez, se puede producir en

varios niveles: léxico, sintáctico y semántico (Amores Carredano 2002).

Page 22: Facultad Matemática, Física y Computación

Capítulo 1

11

Figura 1.1 El diagrama de la pirámide (Hutchins and Somers 1992)

Una manera sencilla para poder entender las relaciones entre los tres sistemas, es

reconocer que el sistema de interlingua elimina el componente “transferencia”, y que la

traducción directa traduce sin el componente “análisis” y “generación” (la traducción sólo

existe a partir del componente “transferencia”).

Enfoques basados en corpus

Los enfoques basados en corpus, también llamados “enfoques empíricos”, se pueden

distinguir en dos sistemas, a saber, la TA basada en ejemplos (Diéguez M. 1998) y la TA

estadística (Somers 2003).

Traducción automática basada en ejemplos

La idea básica de la traducción automática basada en ejemplos es reutilizar muestras

reales con sus respectivas traducciones como base de una nueva traducción (Muñoz and

Ramírez 2010). Se caracteriza por encontrar traducciones correspondientes a una base de

datos de traducciones reales. El proceso consiste en tres etapas: encontrar correspondencias,

alinear y recombinar. En la primera etapa el sistema encontrará, mediante correspondencias

con la entrada, muestras de traducciones que pueden contribuir a la traducción. La segunda

etapa, la alineación, consiste en identificar las partes útiles de la traducción correspondiente.

El tercer paso, llamado “recombinación”, recombina las partes correspondientes. Cuando se

sabe qué partes de los ejemplos se reutilizan, es preciso intentar que las partes correspondan

de manera legítima.

Page 23: Facultad Matemática, Física y Computación

Capítulo 1

12

Traducción automática estadística

En su forma auténtica, la traducción automática estadística no usa datos lingüísticos

tradicionales. La esencia de este método es alinear frases, grupos de palabras y palabras

individuales de textos paralelos y calcular las probabilidades de que una palabra en una frase

de una lengua se corresponda con una palabra en una frase de una traducción con la que está

alineada. Dado que la TA estadística genera sus traducciones a partir de métodos estadísticos

basados en corpus de textos bilingües, la disponibilidad de un corpus grande de traducciones

fiables es una característica esencial de este sistema. Se suele ver este método como “anti-

lingüístico”. La idea de este sistema es modelar el proceso de traducción en términos de

probabilidades estadísticas. Para mayor información sobre este método puede consultar

(Tomás Gironés 2003).

1.2.3 Problemas de la traducción automática

Actualmente, la traducción automática perfecta sin la ayuda del ser humano no existe.

A pesar de ello, una tasa de precisión básica de más del 90% no es rara en los programas

modernos. Lo que sigue siendo más problemático son los momentos de ambigüedad y

complejidad que todos los idiomas poseen, donde tanto los análisis basados en las normas

como los basados en el análisis estadístico de frases se estrellan con ambigüedades básicas

como una referencia singular, una peculiaridad lingüística, algo que no tiene equivalencia

lingüística directa, etc. (Ledo Mezquita 2006). Una razón que explica la dificultad que tienen

los ordenadores con la traducción es simplemente el hecho de que traducir en sí es difícil,

incluso para los traductores humanos.

Un traductor se dedica a producir un texto “equivalente” en una lengua meta, que

tenga que servir autónomamente, siendo fiel al texto fuente y comprensible en la lengua meta.

El término “equivalencia” es difícil de precisar. Hay que tener en cuenta que las lenguas

difieren, y, por consiguiente, que una lengua meta no siempre permite expresar el mismo

contenido que una lengua fuente. Crear un texto equivalente en la lengua meta no es un

trabajo sencillo. El traductor no sólo debe “inventar” traducciones para los nuevos términos

que aparecen en el texto fuente, sino que también debe actuar como intermediario entre dos

culturas. Queda claro que incluso para los traductores humanos el trabajo de traducir es muy

Page 24: Facultad Matemática, Física y Computación

Capítulo 1

13

difícil y requiere mucha creatividad. Encontrar una nueva terminología, un neologismo, es

más bien una cuestión de inventar una regla que seguir una regla. La mediación intercultural

es un trabajo muy complejo: el traductor no sólo tiene que ser capaz de extraer el sentido de

un texto, sino también tiene que ser capaz de prever el sentido que extraiga el lector potencial

del texto meta.

1.2.4 Futuro de la traducción automática

Si bien es cierto que la traducción perfecta no existe, hay que dejar constancia de que

el sueño de conseguir mecanizar la traducción se ha realizado. La existencia de numerosos

programas de ordenador capaces de traducir una gran variedad de textos de un idioma a otro

es ya un hecho y no una quimera (Gutiérrez and Figueroa 2011). Sin embargo, la realidad

nunca es perfecta. De hecho no existen máquinas de traducir que sean capaces de analizar

textos en cualquier idioma y producir una traducción perfecta a cualquier otro idioma sin

intervención humana. Esta es una aspiración para el futuro y sólo en ese futuro se podrá saber

si esto es realizable.

Se sigue investigando para poder crear sistemas rentables desde el punto de vista

lingüístico y comercial. Algunos sistemas resultan muy útiles cuando se trata de parafrasear

un texto para que lo entienda, por ejemplo, una determinada comunidad. Es decir, si se trata

de un lenguaje botánico, es posible que a un especialista de esta área le resulte muy útil un

sistema de TA que esté disponible en el mercado, pues no necesita una traducción de alta

calidad. El camino que se está siguiendo va orientado a la creación de sistemas de TA

basados en sublenguajes, como pueden ser el médico, el jurídico, el científico, etc. para poder

limitar el vocabulario y la sintaxis de estos textos y hacer más fácil su traducción.

1.3 La programación lógica y el lenguaje natural

Un paradigma de programación representa un enfoque particular o filosofía para la

construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y

desventajas. También hay situaciones donde un paradigma resulta más apropiado que otro.

Para el caso del tratamiento del lenguaje natural el paradigma más apropiado es el lógico

Page 25: Facultad Matemática, Física y Computación

Capítulo 1

14

(Warren 1983, Bratko 1986). Este paradigma, que resultó una apasionante novedad en la

década del 70, tiene como característica diferenciadora el hecho de manejarse de manera

declarativa y con la aplicación de las reglas de la lógica. Esto significa que en lugar de

basarse, como en el caso de los paradigmas procedurales, en el planteo del algoritmo para la

resolución del problema, se basa en expresar todas las condiciones del problema y luego

buscar un objetivo dentro de las declaraciones realizadas.

Esta forma novedosa de tratamiento de la información llevó a pensar en un

determinado momento en la revolución que significaría la existencia de “programas

inteligentes” que pudieran responder, no por tener en la base de datos determinados

conocimientos, sino por poder inferirlos a través de la deducción.

Actualmente es utilizado en aplicaciones que tienen que ver con la Inteligencia

Artificial, particularmente en dos campos:

Sistemas Expertos (Lezcano 2005, Riley and Giarratano 2012) y

Procesamiento de Lenguaje Natural (Rowe 1988).

En el caso del procesamiento del lenguaje natural se trata de dividir el lenguaje en

partes y relaciones y tratar de comprender su significado. Para plantear los problemas en

términos del paradigma lógico, es necesario en primer lugar poder plantearlos en términos de

reglas lógicas.

La resolución es una regla de inferencia que permite a la computadora decir qué

proposiciones siguen lógicamente a otras proposiciones. El software que utiliza el principio

de resolución trabaja con cláusulas lógicas. Utiliza la búsqueda a ciegas “primero en

profundidad” para intentar identificar las partes derecha e izquierda de las cláusulas de una

forma lógica, investigando los términos que unifican para permitir una identificación

correcta.

1.3.1 Las gramáticas en Prolog

Muchas de las investigaciones hechas hasta la fecha en la construcción eficiente de

sistemas de procesamiento del lenguaje natural, han concluido que las inferencias constituyen

Page 26: Facultad Matemática, Física y Computación

Capítulo 1

15

un mecanismo poderoso mediante el cual el lenguaje puede ser analizado sintácticamente y

generado. La lógica de cláusulas definidas, el subconjunto de la lógica en el cual está basado

Prolog, ha mostrado un amplio uso para construir analizadores sintácticos y generadores.

Un lenguaje puede verse como un conjunto (normalmente infinito) de frases de

longitud finita. Cada frase está compuesta de símbolos de algún alfabeto, según una

combinación determinada para formar frases correctas. Para especificar cómo construir frases

correctas en cualquier lenguaje se utilizan como formalismo las gramáticas, que constituyen

un conjunto de reglas que definen la estructura legal en un lenguaje.

Las reglas de una gramática definen qué cadenas de palabras o símbolos son oraciones

válidas de la lengua. Además, la gramática generalmente brinda algún tipo de análisis de la

oración, en una estructura que hace su significado más explícito.

1.3.2 Gramáticas Libres del Contexto

Una clase fundamental de la gramática es la Gramática Libre de Contexto (GLC).

Según (Pereira and Shieber 2002), “constituyen un sistema para definir las expresiones de un

idioma en términos de reglas, que son las ecuaciones recursivas sobre tipos de expresiones,

llamadas no terminales, y expresiones primitivas, llamadas terminales.”

En las GLC, las palabras o símbolos básicos de la lengua se identifican por símbolos

terminales, mientras que las categorías o frases de la lengua se identifican por símbolos no

terminales (Wu 2011). Cada regla expresa una forma posible para un no terminal, como una

secuencia de terminales y no terminales. El análisis de una cadena de acuerdo con una GLC

es un árbol de análisis, que muestra las frases constituyentes de la cadena y sus relaciones

jerárquicas.

El siguiente ejemplo se expone en (Monferrer, Pacheco et al. 2001) y muestra de

forma sencilla el empleo de una GLC.

<oracion> <sintagma_nominal> <sintagma_verbal>

<sintagma_nominal> <determinante> <nombre>

<sintagma_verbal> <verbo> <sintagma_nominal>

Page 27: Facultad Matemática, Física y Computación

Capítulo 1

16

<sintagma_verbal> <verbo>

<determinante> el

<determinante> la

<nombre> hombre

<nombre> manzana

<verbo> come

Los no terminales se escriben entre paréntesis angulados (esta notación para describir

gramáticas se denomina BNF —Backus-Naur Form—). La derivación de una frase a partir

del no terminal inicial de la gramática (que en el ejemplo anterior puede ser <oracion>) puede

describirse mediante el siguiente árbol de derivación:

A partir de esta gramática es sencillo construir un analizador en Prolog (Bratko 1986):

oración (Z):- conc (X, Y, Z), sintagma_nominal (X), sintagma_verbal (Y).

sintagma_nominal (Z):- conc (X, Y, Z), determinante (X), nombre (Y).

sintagma_verbal (Z):- conc (X, Y, Z), verbo (X), sintagma_nominal (Y).

sintagma_verbal (X):- verbo (X).

determinante ([el]).

determinante ([la]).

nombre ([hombre]).

Page 28: Facultad Matemática, Física y Computación

Capítulo 1

17

nombre ([manzana]).

verbo ([come]).

Una de las deficiencias de las GLC es que no se pueden utilizar para describir la

concordancia de número, entre el nombre y el verbo o el artículo y el nombre, ya que ignoran

la interdependencia estructural de los constituyentes de la sentencia. Para superar estas

deficiencias, se extienden las gramáticas libres de contexto a las gramáticas de cláusulas

definidas.

1.3.3 Gramáticas de Cláusulas Definidas

Las gramáticas de cláusulas definidas (GCD) (Gurney, Claffy et al. 1989, Sterling

1994) son una clase particular de las gramáticas, usada para la construcción de sistemas del

lenguaje natural; hacen un uso eficiente del poder del Prolog como un lenguaje de

programación de propósito general. Son usadas de maneras específicas: ellas sirven como una

descripción del lenguaje y como una descripción del proceso para analizar dicho lenguaje.

Para entender completamente un lenguaje ya sea lenguaje natural o un lenguaje de

programación se tiene que comprender su gramática. La estructura de un lenguaje contiene

una secuencia de palabras ordenadas de acuerdo con reglas específicas. Estas reglas tienen en

cuenta modo, género, número y la estructura de la oración. Estas reglas son también aplicadas

a las descripciones y calificación de palabras y frases.

Las GCD son una extensión de las GLC donde se permite a los no terminales contener

argumentos que representen la interdependencia de los componentes de una frase (Monferrer,

Pacheco et al. 2001). Por ejemplo, se pueden añadir a los terminales del ejemplo anterior los

argumentos “singular” o “plural” para asegurar la concordancia de número (los no terminales

también tendrían un argumento más para definir una frase en singular o plural, etc.).

determinante ( singular, [el | S], S).

determinante (plural, [los | S], S).

Page 29: Facultad Matemática, Física y Computación

Capítulo 1

18

Basado en el trabajo de (Gelbukh 2010) y (Villayandre Llamazares 2010), un

formalismo conocido como las GCD expresan las reglas libres del contexto como

declaraciones lógicas. Las GCD son más poderosas que las GLC. El problema de analizar

sintácticamente una cadena de un lenguaje se convierte en el problema de probar que un

teorema sigue los axiomas de cláusulas definidas del lenguaje.

Una oración en GCD se define por el sintagma nominal y el sintagma verbal. Un

ejemplo es el siguiente:

oración --> sintagma_nominal, sintagma_verbal.

Para leer una regla en una GCD se lee el símbolo “-->”, que significa puede tomar la

forma y el símbolo “,”, que significa seguido por. El ejemplo anterior se puede leer como:

una oración puede tomar la forma de un sintagma nominal seguido por un sintagma verbal.

Esta regla anterior es equivalente a la siguiente cláusula en Prolog:

oracion (S0, S):-

sintagma_nominal (S0, S1), sintagma_verbal (S1, S).

Dicha cláusula se puede leer como: una oración extiende de S0 a S si existe un

sintagma nominal de S0 a S1 y un sintagma verbal de S1 a S.

Una GCD para una gramática que acepte la oración “el músico toca el violín” es de la

siguiente forma:

oracion --> sintagma_nominal, sintagma_verbal.

sintagma_nominal --> determinante, nombre.

sintagma_verbal --> verbo, sintagma_nominal.

determinante --> [el].

nombre --> [músico].

nombre --> [violín].

verbo --> [toca].

Page 30: Facultad Matemática, Física y Computación

Capítulo 1

19

GCD y los Analizadores Sintácticos del Lenguaje Natural

Muchos lenguajes de programación no están bien capacitados para transformar

gramáticas en analizadores sintácticos del lenguaje natural ni generadores. Prolog, sin

embargo, es un lenguaje particularmente conveniente para hacer esto.

Los programas escritos en notación GCD son transformados a Prolog usando el

predicado expand_term (T1, T2). Este predicado funciona de la siguiente forma: si T1 es un

término de Prolog retorna el término inalterado en el valor para T2. Si T1 es un término en

GCD, Prolog retorna el término equivalente de Prolog en T2. Esta transformación es hecha

automáticamente al mismo tiempo que las reglas son leídas, pero el procedimiento puede ser

útil también cuando se usa para propósitos específicos, como parte de los predicados consult

y reconsult. También es usado por el intérprete en el nivel superior. En el momento en que el

programa escrito en notación GCD es compilado o consultado es que se realiza la

transformación descrita anteriormente. Prolog traduce cada regla escrita en GCD en una

cláusula que pueda ser comprendida por su intérprete. El operador “-->” es transformado a “:-

“. Luego se traducen los no terminales en predicados con dos argumentos adicionales. El

primer argumento añadido es la lista de palabras que se pasaron dentro del símbolo no

terminal (se refiere a los token de entrada). El argumento final es la lista remanente cuando

está terminado (se refiere a los token de salida). Las secuencia de token son listas, un token

vacío es equivalente a una lista vacía, la lista vacía es escrita como “[ ]”.

El equivalente en Prolog a una GCD que acepte la oración “el músico toca el violín”

es de la siguiente forma:

oracion (S0, S) :- sintagma_nominal (S0, S1), sintagma_verbal (S1, S).

sintagma_nominal (S0, S) :- determinante (S0, S1), nombre (S1, S).

sintagma_verbal(S0,S) :- verbo (S0,S1), sintagma_nominal (S1, S).

sintagma_verbal (S0, S) :- verbo (S0, S).

determinante ([el|S], S).

nombre ([músico|S], S).

nombre ([violín|S], S).

verbo ([toca|S], S).

Page 31: Facultad Matemática, Física y Computación

Capítulo 1

20

Sintaxis de las GCD

La sintaxis de las GCD es similar a la sintaxis en Prolog. A continuación se muestran

algunas reglas para el uso de dichas gramáticas (Corporation 1986).

- Los símbolos no terminales son escritos como cualquier átomo o estructura en Prolog

que no sea una lista.

- Los terminales son escritos como cualquier término en Prolog. Para distinguir los

terminales de los no terminales, una secuencia de terminales es escrita como una lista

en Prolog; una secuencia vacía es escrita como la lista vacía. Las secuencias de

terminales que son listas de caracteres se ponen entre comillas.

- La parte izquierda de la regla contiene solamente los no terminales, opcionalmente

seguidos por una secuencia de terminales escritos como una lista.

- La parte derecha de una regla puede contener terminales y no terminales.

- Las alternativas pueden ser tratadas explícitamente en la parte derecha de la regla,

usando el operador “;” o la barra vertical.

- El símbolo de corte puede ser incluido en la parte derecha de la regla y no es

necesario encerrarlo entre paréntesis.

Cómo llamar a una GCD

Una vez que se tiene la GCD se puede llamar en Prolog con el predicado que

representa el símbolo distinguido de la misma. Por ejemplo se puede llamar el predicado

oracion de la siguiente forma:

oracion ([‘el’, ‘músico’, ‘toca’, ‘el’, ‘violín’], L).

Si la variable L instancia con la lista vacía “[ ]”, quiere decir que la gramática

reconoce la oración. De lo contrario la oración no fue reconocida por la gramática.

Cuando se escribe una gramática utilizando GCD es necesario recordar que sigue

siendo Prolog y por tanto la resolución de la gramática se realizará mediante búsqueda

primero en profundidad y backtracking. Hay que tener por tanto especial cuidado de no

introducir recursividad infinita. Por otro lado, al utilizar backtracking la resolución puede

Page 32: Facultad Matemática, Física y Computación

Capítulo 1

21

llegar a ser muy ineficiente, por eso es bastante recomendable el uso del corte (con

precaución).

1.4 Descripción de plantas mediante el Latín Botánico

El latín es una lengua indoeuropea de la rama itálica que fue hablada en la antigua

República Romana y el Imperio Romano desde el siglo IX A.C. Su nombre deriva de la

existencia de una zona geográfica de la península itálica denominada "Vetus Latium" o

'antiguo llano' (hoy llamado Lacio). Ganó gran importancia con la expansión del estado

romano, siendo lengua oficial del imperio en gran parte de Europa y África septentrional,

junto con el griego. Hoy día, el latín sigue siendo utilizado como lengua litúrgica oficial de la

Iglesia Católica de rito latino. Es la lengua oficial de la Santa Sede. Por otra parte, la

nomenclatura de especies y grupos de la clasificación biológica sigue haciéndose con

términos en latín o latinizados.

1.4.1 Características del texto latino empleado en la descripción de las

especies botánicas

La sintaxis del texto latino empleado en la descripción de las especies botánicas no

responde en sentido general a la sintaxis del latín clásico. Visto de manera integral, el texto

del latín botánico, sistema lingüístico que es considerado por algunos como una lengua

particular, comporta características singulares, que apuntan principalmente al rasgo de la

síntesis.

Existen dos tipos de texto que responden a los objetivos de dos tipos de descripción:

el texto de la descripción no comparativa, que se propone exponer una especie en su

integralidad fenoménica, es decir, en toda su apariencia, y que hace alusión a las

características de todos sus órganos y partes visibles, y el texto de la descripción comparativa,

que tiene como objetivo dar a conocer las características de una especie a partir de los rasgos

que la distinguen o que la acercan a otras especies.

Page 33: Facultad Matemática, Física y Computación

Capítulo 1

22

Según (Carreras 2009) “Existen dos tipos principales de descripción: la descripción

positiva y la descripción comparativa. La primera es la inicial, la del holotipo o modelo

primario y paradigmático, el cual se conserva en el herbario, y describe todos los aspectos de

la especie; la segunda, como su nombre lo indica, es comparativa, y se utiliza para separar el

nombre de dos especies, subespecies, variedades que se pensaba hasta ese momento que

formaban parte de una misma categoría taxonómica”

En la simplificación del texto no comparativo se destaca la presencia de un tipo único

de oración: la oración atributiva, es decir, aquella que emplea los verbos ser o estar con valor

copulativo, donde además dichos verbos se omiten por quedar sobreentendidos. El texto de

carácter comparativo es más complejo que el anterior: en primer lugar, ofrece una mayor

libertad para el empleo de oraciones tanto atributivas como predicativas (aquellas que no

emplean los verbos ser o estar como copulativos), pero, aunque la gama de oraciones es

mayor, las mismas acaban repitiéndose y empleando los mismos verbos, adverbios y

complementos, con igual significado.

En cuanto a los elementos que componen estas estructuras, entre los que se destacan

por su frecuencia de uso los adjetivos y los adverbios, se puede apreciar una práctica

sostenida de composición y derivación sí presentes, pero no tan usuales en el latín clásico, lo

cual reduce la complejidad estructural de la sintaxis textual.

Tratándose de un sistema lingüístico para la comunicación científica dentro de una

lengua específica, está claro el hecho de que el referente del texto está acotado por aspectos

de la propia ciencia, de manera que los sujetos de las oraciones, que en este caso son los

elementos descritos, se repiten en cada texto. Asimismo se reiteran en los adjetivos las

características de las partes descritas, o sea, de los sujetos de las oraciones, que son por

decreto aspectos determinantes en el discernimiento de los diferentes grupos taxonómicos.

Las condiciones en que se presenta una especie: lugar, época del año, nivel de

desarrollo de la planta, están expresados tanto por adverbios como por sintagmas nominales,

que conforman el sistema de los complementos en las oraciones, y que asimismo suelen

repetirse.

Sobre la base de la consideración de Carreras, el presente trabajo se ocupa solamente

de la oración que estructura el texto no comparativo, o sea, de la oración atributiva latina

Page 34: Facultad Matemática, Física y Computación

Capítulo 1

23

empleada en las descripciones botánicas: “En lo que respecta a la lógica del proceso

descriptivo, hay que aprender en primer lugar a desarrollar descripciones positivas, para crear

el referente de la comparación. […]. En lo que respecta al conocimiento de la lengua latina

que ha de permitir la práctica de la descripción comparativa, hay que partir del aprendizaje de

aquella que se emplea en la descripción positiva, más simple y esquemática, aunque todavía

notablemente compleja para los botánicos”.

1.4.2 El texto no comparativo en la descripción de las especies botánicas.

El texto no comparativo en la descripción de las especies botánicas ocupa un solo

párrafo para cada especie. Está compuesto por oraciones atributivas que omiten el verbo ser o

estar. Dentro del párrafo se encuentran segmentos gramaticales separados por coma, punto y

coma y punto y seguido, de acuerdo con la jerarquía del núcleo de cada segmento.

El texto está encabezado por el nombre de la especie y algunos datos de ayuda a la

labor del taxónomo. Generalmente la primera oración está compuesta por un sintagma

nominal que informa acerca del porte de la planta (árbol, arbusto, hierba, enredadera); dicho

sintagma es el núcleo del predicado nominal de una oración atributiva que omite el verbo

copulativo y cuyo sujeto está referido en el nombre de la especie.

Ejemplo:

Marila biflora URB. (spec. nov.). Arbor parva v. mediocris.

(Se expresa que la Marila biflora es una especie nueva, descrita por el conocido botánico

Ignatius Urban y que es un árbol pequeño o mediano).

Las oraciones restantes responden a una estructura que en teoría presenta seis elementos:

1. Sintagma nominal sujeto de la oración

2. Adjetivo núcleo del predicado nominal (NPN)

3. Adverbio o frase adverbial que modifica al adjetivo NPN

4. Sintagma nominal con preposición que modifica al NPN

Page 35: Facultad Matemática, Física y Computación

Capítulo 1

24

5. Sintagma nominal sin preposición que modifica al NPN

6. Oración que modifica al núcleo del sujeto y que repite la estructura de los seis

elementos

El sujeto (elemento 1) de esta sexta oración, que es subordinada, puede estar

acompañado por los cinco elementos restantes, y teóricamente estas estructuras subsistémicas

pueden repetirse infinitamente, aunque generalmente no pasan de un segundo nivel; es decir,

que en un sistema estructural completo no suele aparecer más de una oración 6 subordinada a

otra oración 6.

Los sujetos principales (elemento 1) de las oraciones que componen el texto suelen

ser: ramas, hojas, flores, sépalos, pétalos, estambres, ovario, inflorescencias, frutos, semillas,

entre otros menos frecuentes. Como ya se ha dicho, las características que pueden presentar

estos sujetos están bien definidas dentro de la ciencia botánica, y se representan en las

oraciones atributivas a través de los adjetivos (elemento 2). Las condiciones en que se

presentan estas características expresadas en los adjetivos se expresan mediante los adverbios

(elemento 3), los sintagmas nominales con preposición (elemento 4) y los sintagmas

nominales sin preposición (elemento 5). Los elementos 4 y 5 en latín, suelen traducirse al

español por un sintagma nominal con preposición, lo que en esta lengua española los

convertiría a casi todos en un elemento 4.

Los denominados “elementos 5” son muy usuales, pero presentan muy poca variedad:

en 1111 descripciones revisadas, en las que casi siempre aparecen, no pasan de veinte

elementos diferentes.

En cada oración solamente puede aparecer un sujeto (elemento 1), pero el resto de los

elementos puede repetirse, pues de un mismo ente pueden expresarse varias características

(elemento 2), en condiciones diversas (elementos 3, 4 y 5).

La oración subordinada (elemento 6) aparece solamente cuando no es suficiente un

adjetivo para expresar determinada característica del sujeto; entonces es preciso crear una

estructura más compleja, pero que siempre coincide con la estructura de la oración

subordinante.

Ejemplos de oraciones atributivas en la descripción no comparativa:

Page 36: Facultad Matemática, Física y Computación

Capítulo 1

25

Rami (1), elongati (2), graciles (2), hirsuti (2).

Ramas (1) alargadas (2), gráciles (2), hirsutas (2).

Rami (1) teretes (2), non (3) v. vix (3) striati (2), glabri (2), internodiis 2,5-4 cm longis (6).

Ramas (1) rollizas (2), no (3) o apenas (3) estriadas (2), lampiñas (2), que tienen entrenudos

de 2,5 a 4 cm de largo (6).

Rami (1) pallide (3) grisei (2).

Ramas (1) pálidamente (3) grisáceas (2).

Folia (1) inferne (3) sensim (3) in petiolum (4) angustata (2).

Hojas (1) por debajo (3) notablemente (3) estrechadas (2) hacia el peciolo (4).

Folia (1) alterna (2), basi (5 que pasa a 4 en español) parum (3) v. vix (3) in petiolum (4)

protracta (2), apice (5 que pasa a 4 en español) acuminata (2), nervo medio supra impresso,

subtus crasse prominente (6).

Hojas (1) alternas (2), en la base (4) poco (3) o apenas (3) protractas (2) hacia el peciolo (4),

acuminadas (2) en el ápice (4), que tienen el nervio medio impreso por encima y gruesamente

prominente por debajo (6).

Como puede apreciarse, la oración en español sigue la estructura del texto en latín,

salvo algunos cambios de posición dentro de cada sintagma, los cuales también son

previsibles, ya que se repiten sistemáticamente.

1.5 Conclusiones parciales

En este capítulo se abordaron temas del procesamiento del lenguaje natural, así como

el uso de la programación lógica y en especial de las gramáticas en Prolog en la solución de

problemas que involucren el lenguaje natural. También se hace un breve análisis de los

métodos de traducción automática para determinar cuál de ellos sería el más conveniente para

dar solución a este trabajo. Por último, se mencionan las características del texto latino

empleado en la descripción de las especies botánicas, para brindar al lector una rápida

familiarización con el tema.

Page 37: Facultad Matemática, Física y Computación

Capítulo 2

26

CAPÍTULO II: IMPLEMENTACIÓN DE ESLATÍN 3, TRADUCTOR

DE ESPAÑOL A LATÍN PARA LA DESCRIPCIÓN DE LAS ESPECIES

BOTÁNICAS

2.1 Introducción

El traductor de español a latín EsLatín 3, como ya fue indicado en el capítulo I de esta

tesis tiene su versión 2 (Ávila Kotliarov and Mendoza Morales 2006) . Este nuevo software

ha retomado las ideas de ese trabajo anterior, además permite realizar traducciones referentes

a la descripción de plantas del idioma español al latín. También permite realizar

actualizaciones al diccionario que sirve como herramienta a la aplicación. La interfaz visual

se mantiene similar a la de la versión anterior para permitirle al usuario una rápida

familiarización con la herramienta.

En este capítulo se explica cuáles han sido las herramientas computacionales

utilizadas en la implementación del software, así como los diagramas correspondientes al

diseño del mismo.

2.2 Modelación del sistema

Los sistemas o aplicaciones toman forma cuando una o varias personas tienen la visión

de cómo la tecnología pueden mejorarlos. Los desarrolladores deben entender la idea

mientras crean el sistema, para ello debe existir un enlace entre quien tiene la idea y el

desarrollador.

El UML (Lenguaje Unificado de Modelado) es una herramienta que cumple con esta

función, se basa en símbolos y diagramas que permiten a los creadores generar diseños que

capturen la idea de un sistema para comunicárselo de una forma fácil de comprender a quien

realice el proceso de desarrollo.

Existen diversas herramientas que permiten la realización de diagramas UML y la

integración de los mismos en un modelo de diseño. Los más notables son Select Enterprise,

Rational Rose y Visual Paradigm que es el utilizado a lo largo del presente proyecto.

Page 38: Facultad Matemática, Física y Computación

Capítulo 2

27

2.2.1 Diagrama de Casos de Uso

Un caso de uso es una descripción de las acciones de un sistema desde el punto de

vista de un usuario. Se representa la interacción con el sistema a desarrollar donde se

muestran los requisitos funcionales. Cada caso de uso, que representa el sistema, es una

colección de situaciones y cada una de estas una secuencia de pasos. A las entidades que

inician las secuencias se les conoce como actores.

En el problema que se aborda se han definido dos actores, cada uno con sus

respectivos casos de uso. El primero de ellos es el usuario encargado de interactuar con el

sistema y realizar cualquier traducción, así como de utilizar el visor de imágenes. El segundo

de ellos es el experto en el lenguaje latín, quien se encarga de actualizar el diccionario. Los

casos de uso son los siguientes:

Realizar traducción: Caso de uso que corresponde a las acciones de efectuar la

traducción y comprobar los resultados de la solución.

Visualizar imágenes: Utilizar el gestor de imágenes.

Actualizar diccionario: Caso de uso que incluye adicionar, eliminar o modificar

palabras del diccionario por parte del experto.

Figura 2.1 Diagrama de Casos de Uso

Page 39: Facultad Matemática, Física y Computación

Capítulo 2

28

2.2.2 Diagrama de Actividades

Los diagramas de actividades describen cómo se desarrolla un flujo de actividades

entre elementos del sistema o del dominio.

Figura 2.2 Diagrama de Actividades

2.2.3 Diagrama de Clases

Figura 2.3 Diagrama de Clases

Page 40: Facultad Matemática, Física y Computación

Capítulo 2

29

Visual: Es la clase principal del sistema. Se encarga mayormente de la administración de los

componentes gráficos del sistema.

Los principales métodos implementados para efectuar esta labor son los siguientes:

mostrar Diccionario( ){…}

Este método es el encargado de mostrar el diccionario donde se encuentran todas las palabras

con su significado.

mostrarImagen(File file){…}

Se encarga de mostrar el visor de imágenes que brinda utilidad para reconocer rasgos propios

de las plantas, y además sirve para orientar mejor cualquier tipo de búsqueda.

abrirFichero( ){…}

Es el encargado de abrir un fichero previamente confeccionado por el usuario con el texto a

traducir.

salvarFichero( ){…}

Se encarga de guardar un fichero con el texto a traducir y el resultado de la traducción.

Esta clase también controla las acciones de cada botón de la aplicación.

Encriptación: Esta clase es la encargada de la seguridad del sistema. Es necesario proteger

el diccionario de una incorrecta manipulación por parte de los usuarios en tiempo de

ejecución del programa. Con este fin se incluye en el sistema la posibilidad de establecer una

protección mediante el uso de una contraseña. Para acceder a la ventana de modificaciones

del diccionario es necesario introducir la contraseña correcta. La contraseña se protege

mediante un algoritmo criptográfico y luego se almacena en un fichero. Los métodos de la

clase son los siguientes:

encriptarMD5(String palabra){…}

Este método se encarga de encriptar la contraseña utilizando el algoritmo MD5 que es uno de

los más seguros y conocidos.

verificarPassword(String palabra){…}

Page 41: Facultad Matemática, Física y Computación

Capítulo 2

30

Se encarga de verificar si está escrita correctamente la contraseña para permitir el acceso a las

modificaciones del diccionario.

mod_Password(String newPassword){…}

Permite la modificación de la contraseña en caso de que el usuario así lo desee; esta nueva

contraseña también es encriptada.

Diccionario: Esta clase es la encargada del trabajo con el diccionario. Permite adicionar,

eliminar y modificar las palabras y los significados que contiene. Los métodos que la

conforman son los siguientes:

insertarDicc(String pal, String sig){…}

Este método se encarga de insertar una palabra nueva en el diccionario.

eliminarDicc(String cadena){…}

Este método se encarga de eliminar una palabra existente en el diccionario.

modificarDicc(String pal, String sig, String pal_vieja){…}

Este método se encarga de modificar una palabra existente en el diccionario.

pal_vieja: palabra que se quiere modificar y por la cual se realizará la búsqueda en el método.

pal: palabra modificada lista para insertar en el diccionario.

sig: contiene el significado modificado listo para insertar al diccionario.

Gramática: Esta clase es la encargada del trabajo con la gramática. Permite adicionar,

eliminar y modificar las palabras que contiene. Los métodos que la conforman son los

siguientes:

insertarGram(String pal, String id, String id1, String gen, String num){…}

Este método permite insertar una nueva palabra a la gramática.

pal: contiene la palabra a insertar.

id: es el identificador que dice si la palabra a añadir es un sustantivo, adjetivo o un adverbio.

Page 42: Facultad Matemática, Física y Computación

Capítulo 2

31

id1: es el identificador que permite añadir una palabra nueva en el lugar correcto de la

gramática.

gen y num: indican el género y número de la palabra a añadir.

eliminarGram(String cadena){…}

Este método permite eliminar una palabra de la gramática.

modificarGram(String pal, String pal_vieja){…}

Este método permite modificar una palabra existente en la gramática.

pal_vieja: palabra a modificar.

pal: palabra nueva.

compilarGram( ){…}

Este método se encarga de compilar la gramática. Es muy útil cuando se le realizan cambios a

la gramática.

Prolog: Es la clase que maneja los predicados construidos en el lenguaje Prolog. Los

principales métodos de esta clase son:

principal(String cadena){…}

Este método es el que se encarga de realizar el análisis sintáctico de cada oración. Además

elimina de la oración en español las palabras que son irrelevantes para el latín, como por

ejemplo los artículos y las conjunciones.

listarTodos( ) {…}

Este método se encarga de listar todos los artículos y las conjunciones que se encuentran en la

gramática. Utiliza el predicado listarTodos(L) que se encuentra en la gramática para realizar

dicha función. Para utilizar este predicado se utiliza la clase Query de la biblioteca Interfaz

Java Prolog (JPL, por sus siglas en inglés).

eliminar1_de_2(String L1, String L2){…}

Page 43: Facultad Matemática, Física y Computación

Capítulo 2

32

Con este método se realiza la eliminación de los artículos y las conjunciones de la oración

introducida por el usuario, es decir, lo que se encuentra en lista 1 se elimina de la lista 2.

L1: lista de artículos y conjunciones.

L2: oración introducida por el usuario convertida en un lista.

Util: Esta clase contiene tres métodos principales para realizar la traducción, los cuales

conforman las reglas de traducción de las frases con un sentido correcto. Además se encarga

del trabajo con cadenas en Java. Por ejemplo: verificar si la oración a traducir tiene comas, si

las palabras tienen tilde, etc.

Los sustantivos tienen dos traducciones, la primera para el nominativo y la segunda para el

genitivo. Los adjetivos pueden tener una, dos o tres traducciones. Si tiene una traducción, la

misma se utiliza para el género femenino, masculino y neutro del latín al mismo tiempo; si

tiene dos traducciones, la primera se utiliza para el femenino y masculino y la segunda para el

neutro. Por último si el adjetivo tiene tres traducciones cada una representa los géneros

masculino, femenino y neutro respectivamente. Los adverbios cuentan con una sola

traducción.

traducir (String palabra){…}

Este método devuelve el primer significado de cada palabra independientemente de la

categoría gramatical a la que pertenezca.

traducir_genitivo(String palabra){…}

Este método devuelve la traducción en genitivo del sustantivo pasado como parámetro.

traducir_adjetivo(String sustantivo, String adjetivo){…}

Este método devuelve la traducción del adjetivo en correspondencia con el género del

sustantivo al que caracteriza.

Page 44: Facultad Matemática, Física y Computación

Capítulo 2

33

2.3 ¿Por qué se escogen los lenguajes JAVA y PROLOG?

Los problemas a resolver en las diferentes áreas de la computación cada vez

demandan soluciones más complejas, en muchas ocasiones un solo paradigma de

programación no es lo suficientemente apropiado para enfrentar los diversos matices de la

solución de estas situaciones.

Aunque los lenguajes orientados a objetos son hoy día la corriente principal de

desarrollo de aplicaciones, varios contextos de investigación sugieren que un enfoque multi-

paradigmático constituye la mejor solución. En especial si se combina con la programación

lógica, la cual añade funcionalidades relacionadas con la inteligencia, adaptabilidad y

concisión en la expresión de algoritmos.

Para desarrollar la aplicación se hizo un análisis previo con el objetivo de determinar

cuáles eran las herramientas computacionales más eficaces que permitieran una solución

óptima, además de llevar a la práctica los conocimientos adquiridos durante la carrera. El

lenguaje Java fue escogido, en parte, por poseer un poderoso conjunto de bibliotecas gráficas,

las cuales facilitan el trabajo en la creación de la interfaz del usuario. Además, es un lenguaje

sumamente fácil de aprender, permite crear sistemas más complejos y posee características

como la posibilidad de reutilizar el código en diferentes partes del programa. Sin embargo,

los conceptos de razonamiento e inferencia son prácticamente imposibles de identificar en la

programación orientada a objetos. El lenguaje Prolog es especialmente indicado para resolver

estos inconvenientes; ofrece simplicidad, potencia, es ideal para el tratamiento del lenguaje

natural y añade características importantes como la modularidad, la cual deriva en mayor

rapidez de los programas.

2.3.1 La Gramática en Prolog

Por motivos de claridad en los códigos fue necesario crear dos archivos:

“Gramática.pl” y “Diccionario.txt”. El primero contiene la gramática definida para analizar el

texto introducido por el usuario y algunos métodos auxiliares que se explicarán más adelante.

El fichero “Diccionario.txt” contiene en sí las palabras y sus traducciones. Como se explicó

Page 45: Facultad Matemática, Física y Computación

Capítulo 2

34

en el capítulo anterior la gramática que se implementó es una GCD, pues permite establecer

concordancias de género y número entre los diferentes constituyentes de la oración. El

símbolo distinguido de la gramática utilizada en la aplicación es “oracion”.

oracion --> cat1 (Gen, Num), cat4 (_, _), cat3, cat2 (Gen, Num).

Nótese que se utiliza el símbolo --> para separar la cabeza del cuerpo de la regla. Esta

es una característica de las GCD.

Es importante señalar que el símbolo distinguido puede tener más de un cuerpo, de

hecho, la lógica lo indica así, mientras más cuerpos se tengan, más oraciones se pueden

analizar con la gramática.

oracion --> sust (Gen, Num).

oracion --> adj (Gen, Num).

oracion --> adv.

Luego se definen los símbolos no terminales, que en este caso son las categorías de la

oración así como los sustantivos, adjetivos, adverbios, etc.

cat1 (Gen, Num) --> art (Gen, Num), sust (Gen, Num).

cat1 (Gen, Num) --> sust (_, Num), prep, art (Gen, Num), sust (Gen, Num).

cat2 (Gen, Num) --> adj (Gen, Num), cat2a (Gen, Num).

cat3 --> adv.

cat4 (Gen, Num) --> prep, sust (_, _).

cat4 (Gen, Num) --> prep, art (Gen, Num), sust (Gen, Num).

sust (m, s) --> [pétalo]; [ápice]; [invierno]; [ángulo].

adj (f, p) --> [estrechas]; [ramosas]; [surcadas].

adv --> [pálidamente]; [siempre]; [densamente].

art (m, s) --> [el].

Como es lógico esta es una pequeña muestra de la gramática. (Véase la gramática

completa en el anexo #1).

En el caso:

Page 46: Facultad Matemática, Física y Computación

Capítulo 2

35

cat1 (Gen, Num) --> art (Gen, Num), sust (Gen, Num).

indica que la categoría 1 tiene género “Gen” (que es “m” para masculino y “f” para

femenino) y número “Num” (“s” para singular y “p” para plural) si está compuesto por

“art(Gen, Num)” y “sust(Gen, Num)”, es decir, por un artículo y un sustantivo cuyos género

y número no sólo deben coincidir respectivamente entre sí, sino que serán el género y el

número que se transfieran a la categoría.

Por último, toca comentar sobre el uso que se ha hecho del punto y coma “;”, que en

Prolog significa disyunción. En realidad, una regla como:

adj (f, p) --> [estrechas]; [ramosas].

equivale a:

adj (f, p) --> [estrechas].

adj (f, p) --> [ramosas].

Podrían haberse incluido las dos últimas en vez de la primera y la gramática sería

equivalente (en el sentido de que generaría y reconocería las mismas oraciones). Sin

embargo, para que sean más cortos los ficheros se ha preferido emplear el punto y coma.

2.3.2 El archivo Diccionario

Como se explicó anteriormente el archivo “Diccionario.txt” contiene las palabras y

sus traducciones. A continuación se muestra un fragmento del mismo.

adherido,,adpressus, adpressa, adpressum

adnato,,annexus, annexa, annexum

adnato,,adnatus, adnata, adnatum

adondequiera,,quolibet

adpreso,,adpressus, adpressa, adpressum

aeruginoso,,aeruginosus, aeruginosa, aeruginosum

(Para ver el Diccionario consultar anexo #2)

Para separar la palabra de sus significados se utilizaron dos comas “,,”, porque al

invocar el fichero Diccionario, retornaba caracteres ilegibles y fue necesario realizar un

complejo trabajo con las cadenas desde Java.

Page 47: Facultad Matemática, Física y Computación

Capítulo 2

36

Las palabras se encuentran ordenadas de forma alfabética, de modo tal que cuando se

muestren al usuario no estén desordenadas. Al insertar una nueva palabra, primero se busca

dónde debe quedar y luego se inserta, para así mantener el orden en el fichero.

2.3.3 Predicados auxiliares en Prolog

Cuando el usuario inserta un texto para traducir, se pasa a la fase de análisis del

mismo. Para determinar a qué categoría gramatical pertenece cada palabra se construyeron

algunos predicados y procedimientos en Prolog. A continuación se muestran los más

importantes y la función que realizan.

listarTodos (L) :- findall (X, art(_, _, [X], U), Xs),

findall (Y, cont ([Y], M), Ys),

findall (Z, prep ([Z], O), Zs),

findall (W, conj ([W], P), Ws),

concatenar (Xs, Ys, LI),

concatenar (Zs, Ws, LD),

concatenar (LI, LD, L).

concatenar (Xs, Ws, L).

El procedimiento “listarTodos (L)”, al ser invocado desde Java, devuelve una lista

con todos los artículos, contracciones, preposiciones y conjunciones que se encuentran en el

fichero “Gramática.pl”. Como puede verse se utiliza el predicado concatenar/3 (esta

notación indica predicado con tres argumentos) y el predicado de segundo orden findall/3

para construir la lista resultante

esAdjetivo (P, G, N, adj) :- adj (G, N, [P], U).

esAdjetivo1 (P, G, N, adj1) :- adj1 (G, N, [P], U).

esSustantivo (P, G, N, sust) :- sust (G, N, [P], U).

esAdverbio (P, _, _, adv) :- adv ([P], U).

esPreposicion (P, _, _, prep) :- prep ([P], U).

esConjuncion (P, _, _, conj) :- conj ([P], U).

esContraccion (P, _, _, cont) :- cont ([P], U).

Page 48: Facultad Matemática, Física y Computación

Capítulo 2

37

esArticulo (P, G, N, art) :- art (G, N, [P], U).

Los predicados anteriores determinan si la palabra insertada pertenece a alguna de las

categorías gramaticales correspondiente a cada uno de estos predicados.

queEs (P, G, N, Id) :- esAdjetivo (P, G, N, Id);

esAdjetivo1 (P, G, N, Id);

esSustantivo (P, G, N, Id);

esAdverbio (P, _, _, Id);

esPreposicion (P, _, _, Id);

esConjuncion (P, _, _, Id);

esContraccion (P, _, _, Id);

esArticulo (P, G, N, Id).

Este procedimiento define la categoría gramatical de la palabra insertada (P),

instanciando la variable Id con el identificador de la palabra.

Por último, el predicado elim_l1_de_l2/3, retorna en la lista L, el resultado de

eliminar los elementos que se encuentran en la lista L1 de la lista L2. Este predicado se usa

para eliminar los artículos, conjunciones y otras palabras irrelevantes (en la oración básica

latina que aquí se trata no existen formas verbales, artículos, preposiciones, etc.) del texto

introducido por el usuario.

elimina (X, [X|Xs], Xs).

elimina (X, [Y|Ys], [Y|Zs]):-

elimina (X, Ys, Zs).

elim_l1_de_l2 ([], L, L) :- !.

elim_l1_de_l2 ([X|M], L, S) :-

elimina_x (L, X, T), elim_l1_de_l2 (M, T, S).

2.3.4 Enlace Java-Prolog

Actualmente existen varios mecanismos y bibliotecas para enlazar Java con Prolog como los

que se muestran en la Figura 2.3.

Page 49: Facultad Matemática, Física y Computación

Capítulo 2

38

Figura 2.3 Mecanismos de conexión Java-Prolog

Para dar solución al problema planteado se utilizó la biblioteca Interfaz Java-Prolog

(JPL, por sus siglas en inglés), pues está diseñada para el SWI-Prolog, el cual es un intérprete

de líneas de comandos pequeño y rápido y cuya máquina interna puede ser anidada en otros

programas. SWI facilita una compilación muy rápida, además es software libre.

La biblioteca JPL contiene numerosas clases que permiten la comunicación entre Java

y Prolog. De todas, la más importante es la clase Query, la cual permite ejecutar consultas

sobre la base de conocimientos como si se estuviera en la consola del SWI-Prolog. La

consulta que se va a realizar se pasa como parámetro tipo String en el constructor de dicha

clase. A continuación se muestran algunos métodos de la clase Query.

hasSolution: devuelve un valor booleano indicando si la consulta tuvo éxito o no.

oneSolution: devuelve la solución a una consulta, la cual debe haber tenido variables para

unificar. La representación de dicha solución viene en forma de una tabla hash, donde la llave

es la variable, y el valor, es el valor asignado por SWI-Prolog al efectuar la consulta.

allSolutions: devuelve un arreglo de tablas hash con la misma estructura de oneSolution de

todas las soluciones de la consulta.

hasMoreSolutions: devuelve un valor booleano indicando si existen más soluciones para la

consulta especificada, generalmente se usa en combinación con nextSolution.

Page 50: Facultad Matemática, Física y Computación

Capítulo 2

39

nextSolution: devuelve la siguiente solución en una tabla hash similar a oneSolution,

generalmente se usa en combinación con hasMoreSolutions.

La primera consulta que se realiza es al archivo que constituye la base de

conocimiento. En la aplicación ese archivo es “gramática.pl”, compilado por el programa

SWI-Prolog. Luego se hacen preguntas sobre dicha base de conocimiento utilizando los

métodos descritos anteriormente.

String t1 = “consult (‘gramática.pl’)”;

Query q1 = new Query (t1);

If (q1.hasSolution ( ))

System.out.println ( “La conexión ha sido exitosa” );

else

System.out.println ( “La conexión ha fallado” );

Es recomendable insertar esta consulta en el constructor de la clase principal, con el

objetivo de mantener en memoria el fichero “gramática.pl”, evitando así cargarlo cada vez

que se haga una pregunta a la base de conocimientos. A continuación se muestran algunas

consultas realizadas al archivo “gramática.pl” a través de Java.

String instruccion1 = "listarTodos (L).";

Query q1 = new Query (instruccion1);

return q1.oneSolution( ).get ("L").toString( );

String instruccion2 = "elim_l1_de_l2 (" + "[" + l1 + "]" + "," + "[" + l2 + "]" + ",L).";

Query q2 = new Query (instruccion2);

return q2.oneSolution().get("L").toString ( );

Las consultas anteriores invocan a los predicados listarTodos(L) y

elim_l1_de_l2(L1,L2,L) respectivamente, que se encuentran en el archivo gramática.pl,

mediante la clase Query. Se utiliza el método oneSolution(), explicado anteriormente, para

obtener las soluciones .

Page 51: Facultad Matemática, Física y Computación

Capítulo 2

40

2.3.5 Acerca del instalador del Software.

Se ha querido que esta aplicación, después de terminada, quede contenida en un

fichero de instalación. Esto sirve para agilizar su distribución y permite un control sobre las

carpetas y archivos que conforman el software. De esta forma después de haber sido

instalado, el traductor optimiza su funcionamiento, ya que los archivos están ordenados según

el uso que necesita darles la aplicación. Esto repercute favorablemente a favor del

rendimiento que tendrá la computadora que ejecute el software, y dará al usuario una mayor

comodidad para trabajar con el sistema en general.

El fichero de instalación ha sido creado utilizando la herramienta Nullsoft Install

System (NSIS) en su versión 2.46, para crear ficheros de instalación a partir de cualquier

aplicación Windows implementada en un lenguaje de programación determinado.

Primeramente se crea el archivo Traductor.nsi, el cual funciona como un script con

extensión .nsi; contiene la información donde se instalará el software, posee el desinstalador,

además de colocar los accesos directos al programa y las carpetas y archivos que contendrá el

mismo. Luego de creado este archivo, se compila usando la herramienta NSIS obteniéndose

como resultado el instalador EsLatín3.exe. (Para consultar el archivo Traductor.nsi ver anexo

#3)

2.4 Conclusiones Parciales

La implementación de EsLatín versión 3, implicó el uso de varias tecnologías como la

plataforma de Java y el SWI-Prolog. Al lograr una integración entre dichas tecnologías se

obtiene un software con una interfaz gráfica amigable que posee una gramática para

reconocer en el lenguaje español la oración básica que se utiliza en el latín para la descripción

de las especies botánicas. También cuenta con un diccionario de español a latín para realizar

las traducciones. Además se cumplen los requisitos de la creación de sistemas para modificar

dicha base de conocimiento obteniéndose un software seguro, flexible y portable.

Gracias a la creación de un instalador compuesto por un solo fichero ejecutable, el

software puede ser distribuido e instalado fácilmente.

Page 52: Facultad Matemática, Física y Computación

Capítulo 3

41

CAPÍTULO III: MANUAL DE USUARIO DE ESLATÍN 3

El traductor de español a latín para la descripción de especies botánicas EsLatín

versión 3, es el segundo de su tipo desarrollado en la UCLV. La novedad de este software es

que tiene la capacidad de traducir frases, a diferencia de la versión anterior, la cual no

contaba con esta característica. En este capítulo se explica cuáles son los requisitos que deben

cumplirse para su correcto uso, al realizar una traducción o para actualizar los datos del

mismo. También se hace referencia a los pasos a seguir para la instalación del software.

3.1 Características del software

Las principales características del software son:

• La interfaz visual es sencilla, permitiendo que el usuario se familiarice rápidamente

con el uso de la herramienta. La ayuda del sistema posee suficiente información para que el

usuario comprenda cuáles son las definiciones de latín con las que va a tener que trabajar

constantemente.

• Se incluye un módulo visual de utilidad para reconocer rasgos propios de las plantas,

y además sirve para orientar mejor cualquier tipo de búsqueda.

• La ventana de modificación del diccionario cuenta con un buscador automático para

encontrar fácilmente las palabras que se desea modificar.

Para la instalación del software y la utilización del mismo, son necesarios los

siguientes requisitos mínimos:

• Sistema Operativo Windows XP o superior.

• Máquina Virtual de Java (jre5 o superior) instalada.

• SWI Prolog (versión 5.4 o superior) instalado.

• 120 Mega Bytes de espacio libre de disco duro.

• Macromedia Flash Player.

Page 53: Facultad Matemática, Física y Computación

Capítulo 3

42

3.2 Pasos para la instalación del software

El sistema no puede ser utilizado hasta que sea instalado en una computadora, la cual

deberá cumplir los requisitos planteados en el epígrafe anterior. El archivo para la instalación

debe ser ejecutado en la computadora por un usuario con los privilegios necesarios para llevar

a cabo dicha operación. La guía para la instalación del sistema está escrita en idiomas inglés

y español. A continuación se describen los aspectos fundamentales de la instalación que

puedan servir de ayuda.

Primeramente la persona encargada de instalar el software debe asegurarse de que el

mismo quede alojado en una carpeta donde los usuarios con menos privilegios tengan

permiso de lectura. La guía del instalador ofrece un camino, que por defecto es donde el

sistema operativo Windows instala sus programas. El camino es C:\Program Files para su

versión en inglés, o C:\Archivos de Programas para su versión en español.

Después que se haya instalado satisfactoriamente, en el escritorio de la sesión de

trabajo se copiará un ícono de acceso directo al fichero ejecutable de la aplicación.

3.3 Trabajo con la aplicación

El software comienza presentando una imagen que muestra el nombre de la

aplicación, donde se observa el porciento de carga de los componentes necesarios para su

correcto funcionamiento.

Page 54: Facultad Matemática, Física y Computación

Capítulo 3

43

Figura 3.1: Cargando aplicación.

A continuación se muestra una ventana que contiene el ambiente de trabajo, desde el

cual se accede a todas las opciones de la aplicación. Dicho ambiente constituye el punto de

partida del programa y por lo tanto se mantiene durante toda la ejecución de la aplicación. La

figura siguiente muestra el ambiente de trabajo.

Page 55: Facultad Matemática, Física y Computación

Capítulo 3

44

Figura 3.2: Vista principal.

A partir de aquí la aplicación se encuentra lista para su uso. En esta ventana principal

se muestran dos áreas de texto que servirán para realizar las traducciones, la primera sirve

para insertar el texto a traducir y la segunda muestra el resultado de la traducción.

Texto a traducir

El usuario introduce el texto a traducir en el área de texto que se encuentra en la parte

superior.

Page 56: Facultad Matemática, Física y Computación

Capítulo 3

45

Resultados de la traducción

La segunda área de texto, que se encuentra en la parte inferior, es la que muestra los

resultados de la traducción efectuada, o un mensaje de información que describa cualquier

error que pudiera haber ocurrido durante el proceso.

Traducir

Al presionar este botón se efectúa el proceso de traducir lo que se encuentra escrito en

el área de texto superior y aparecen los resultados en la parte inferior. Se puede ejecutar la

misma acción al presionar la combinación de teclas Ctrl + T.

Limpiar

Cuando se presiona este botón se eliminan el texto y su traducción en las ventanas

correspondientes. Se utiliza normalmente cuando se quiere realizar una nueva traducción.

Abrir

Cuando se da clic sobre este botón aparece una ventana, mediante la cual se puede

cargar hacia el editor un fichero de texto que el usuario haya guardado con antelación.

Salvar

Al oprimir este botón se muestra una ventana, mediante la cual el usuario puede salvar

hacia un fichero de texto (.txt) el resultado de la traducción, así como el texto original que

quiso traducir.

3.4 El menú Archivo

Al mismo se puede acceder dando clic sobre él. Ofrece una reducida cantidad de

operaciones a realizar principalmente sobre los editores de texto que muestra la ventana

principal de la aplicación. Las opciones Abrir y Salvar son las mismas descritas

anteriormente.

Page 57: Facultad Matemática, Física y Computación

Capítulo 3

46

Figura 3.3: El menú Archivo.

La opción Salir finaliza la ejecución del programa. Antes de terminar se pregunta al

usuario si realmente está seguro de abandonar la aplicación, o si prefiere seguir trabajando en

el traductor.

Figura 3.4: Ventana de confirmación de salida.

3.5 El menú Editar

Incluye las opciones de realizar una traducción y limpiar el contenido de los editores

de texto. Dichas acciones han sido anteriormente descritas.

Page 58: Facultad Matemática, Física y Computación

Capítulo 3

47

Figura 3.5: El menú Editar.

3.6 El menú Diccionario

Está formado por dos herramientas: Modificaciones y Visualizar Diccionario.

Figura 3.6: El menú Diccionario.

Modificaciones al diccionario

Esta opción está prevista para que un especialista en el idioma latín pueda realizar las

modificaciones que estime convenientes sobre el diccionario de la aplicación. Para prevenir

que se realicen modificaciones incorrectas se provee al software de protección por

contraseña; de esta manera sólo el experto en latín puede realizar dichas acciones.

Page 59: Facultad Matemática, Física y Computación

Capítulo 3

48

Figura 3.7: Autentificación.

La ventana anterior cuenta con la opción Cambiar contraseña, que permite al experto

cambiar la misma.

Figura 3.8: Cambiar contraseña.

Si la contraseña introducida es incorrecta se emite un mensaje de error, en caso

contrario, se mostrará la ventana Modificaciones.

Page 60: Facultad Matemática, Física y Computación

Capítulo 3

49

Figura 3.9: Modificaciones al diccionario.

Las opciones que ofrece esta ventana son las de adicionar, eliminar o modificar

cualquier palabra que se encuentra en el diccionario. Cada una de ellas se acciona

presionando sobre los botones redondos que aparecen en un grupo nombrado “Acción” que

se encuentra en la parte superior izquierda de la ventana. Cada uno de estos botones hace que

cambie lo que se observa en la misma con el objetivo de que el usuario comprenda mejor

cómo realizar los pasos para actualizar el diccionario.

Adicionar

Cuando se desea agregar una nueva palabra se muestra un segundo grupo de botones

circulares, nombrado “Clasificación”, situado a la derecha del primero. En ellos se puede

observar los tres tipos de palabras con las que trabaja el diccionario, en este caso: sustantivos,

adjetivos y adverbios.

Adicionar sustantivo

Para adicionar un sustantivo se debe especificar género y número, como se muestra en

la siguiente figura.

Page 61: Facultad Matemática, Física y Computación

Capítulo 3

50

Figura 3.10: Adicionar sustantivo.

Adicionar adjetivo

Además de seleccionar género y número, se pueden añadir adjetivos que pertenezcan

a la categoría 1. Esto se hace seleccionando dicha categoría.

Figura 3.11: Adicionar adjetivo.

Adicionar adverbio

Para adicionar un adverbio basta con seleccionar dicha opción.

Page 62: Facultad Matemática, Física y Computación

Capítulo 3

51

Figura 3.12: Adicionar adverbio.

Modificar

Para modificar una palabra basta con escribirla en el cuadro de texto o seleccionarla

de la lista. En este caso se auxiliará de una búsqueda automática de la palabra que se está

escribiendo.

Figura 3.13: Modificaciones.

Page 63: Facultad Matemática, Física y Computación

Capítulo 3

52

Después de seleccionada la palabra se presiona el botón “Modificar”. En ese caso

aparecerá una nueva ventana como se muestra a continuación.

Figura 3.14: Modificar.

Eliminar

Para eliminar una palabra, la ventana se muestra igual que en la figura 3.14, con el

único cambio de que el botón “Modificar” cambia su nombre por “Eliminar”. Se puede

realizar una búsqueda, igual que en el caso anterior, de la palabra que se desea eliminar.

Después de seleccionada la palabra en la tabla basta con dar doble clic sobre ella o presionar

el botón “Eliminar”. Automáticamente la palabra quedará eliminada del diccionario.

Page 64: Facultad Matemática, Física y Computación

Capítulo 3

53

Figura 3.15: Eliminar.

Visualizar diccionario

La aplicación cuenta con un diccionario donde se muestran todas las palabras con las

que el traductor trabaja. Está formado solamente por traducciones simples (palabra en

español – significado en latín).

Page 65: Facultad Matemática, Física y Computación

Capítulo 3

54

Figura 3.16: Diccionario.

3.7 El menú Herramientas

Este menú cuenta con la opción Visor de imágenes mediante el cual el usuario puede

comprobar la similitud de las palabras con las características de las plantas.

Page 66: Facultad Matemática, Física y Computación

Capítulo 3

55

Figura 3.16: El menú Herramientas.

Luego de presionar este botón se muestra la siguiente ventana.

Page 67: Facultad Matemática, Física y Computación

Capítulo 3

56

Figura 3.17: Visor de imágenes.

3.8 El menú Ayuda

La figura que se muestra a continuación indica cómo se accede a la ayuda del

traductor. A través de ella se explican todas las funcionalidades de la aplicación.

Page 68: Facultad Matemática, Física y Computación

Capítulo 3

57

Figura 3.18: El menú Ayuda.

Contenido

En la siguiente figura se muestra la ayuda de la aplicación que aparecerá al presionar

el botón “Contenido”.

Page 69: Facultad Matemática, Física y Computación

Capítulo 3

58

Figura 3.19: Ayuda.

Acerca de

Al presionar el botón “Acerca de” se mostrará una ventana con los datos de los

desarrolladores de la aplicación.

Figura 3.20: Acerca de.

Page 70: Facultad Matemática, Física y Computación

Conclusiones

59

CONCLUSIONES

Con este trabajo se logró construir una aplicación que permite realizar traducciones de

oraciones referentes a la descripción de las especies botánicas. Se creó una gramática de

cláusulas definidas para chequear sintácticamente las oraciones en el lenguaje español.

Durante este proceso se logró adquirir conocimientos básicos de latín lo cual permitió

determinar el universo lingüístico con que cuenta la aplicación.

Se utilizó un mecanismo que permite la comunicación entre Java y SWI-Prolog

haciendo uso de la biblioteca que ofrece este último denominada JPL (Java Prolog). Se

desarrolló una interfaz gráfica que permite al usuario final la interacción con el sistema de

forma agradable.

La actualización del diccionario de la aplicación se realiza de manera segura por el

usuario especialista en el latín, quien a través de una contraseña accede a esta opción para

agregar, eliminar o modificar palabras según lo desee.

Page 71: Facultad Matemática, Física y Computación

Recomendaciones

60

Recomendaciones

- Incorporar a la Gramática las categorías 5 y 6 de la oración básica.

- El software actual no cuenta con la opción de añadir nuevas imágenes al módulo

visual desde la misma aplicación por lo que se recomienda implementar esta opción.

- Poner a disposición de instituciones científicas vinculadas a la Botánica el presente

trabajo para su uso y distribución, así como para realizar una correcta evaluación del

mismo.

- Someter a evaluación los resultados del trabajo.

Page 72: Facultad Matemática, Física y Computación

Referencias Bibliográficas

61

Referencias bibliográficas Amores Carredano, G. (2002) Un mecanismo de transferencia para LFG DCG-Prolog. Revista "Procesamiento del Lenguaje Natural" pp 12

Ávila Kotliarov, M. and N. Mendoza Morales (2006). Traductor de español a latín para la nomenclatura botánica. Facultad Matemática, Física y Computación. Villa Clara, Cuba, Universidad Central “Marta Abreu” de Las Villas. Licenciatura en Ciencia de la Computación: 72.

Benotti, L., ROGER, Sandra (2004). Traducción Automática: Dimensiones y Estrategias. Departamento de Informática y Estadística, Universidad Nacional del Comahue, Argentina: pp 5.

Bratko, I. (1986). Prolog Programming for Artificial Intelligence, Addison-Wesley.

Carreras, S. (2009). Eslatín I. Latín básico para los profesionales de la Botánica. Universidad Central "Marta Abreu" de Las Villas, Santa Clara, Cuba.

Corporation, A. (1986). The Arity/Prolog Programming Language.

Craciunescu, O. and C. Gerding-Salas (2007). Traducción automática y asistida: ¿nuevas formas de traducir? S. Stringer-O’Keeffe: pp 17.

Dagerman, B., et al. (2013). "Semantic Analysis of Natural Language and Definite Clause Grammar using Statistical Parsing and Thesauri."

Dávila, J. A., et al. (2007). Introducción a la lingüística computacional con una perspectiva interdisciplinaria, Centro de Investigación y Proyectos en Simulación y Modelos, Escuela de Idiomas Modernos. Mérida, Venezuela.

Diéguez M., M. I., Riedemann H., Karin (1998). "Análisis del error en la traducción automática: algunos ejemplos de las formas -ing del inglés al español." pp 19.

Fernández Reyes, F. d. l. C. (2011). Integración de métodos para la desambiguación del sentido de las palabras en el contexto del procesamiento del lenguaje natural. Centro de Estudios de Ingeniería y Sistemas. Facultad de Ingeniería Informática. Ciudad de la Habana, Instituto Superior Politécnico “José Antonio Echeverría”. Master en Informática Aplicada.

Gelbukh, A. (2010). "Procesamiento de Lenguaje Natural y sus Aplicaciones." Komputer Sapiens Vol. I.: 6.

Page 73: Facultad Matemática, Física y Computación

Referencias Bibliográficas

62

Gelbukh, A. and G. Sidorov (2006). Procesamiento automático del español con enfoque en recursos léxicos grandes. México, Centro de Investigación en Computación. Instituto Politécnico Nacional.

Giannetti, C. (1997). ESTÉTICA DE LA SIMULACIÓN. Arte en la era electrónica - Perspectivas de una nueva estética. Barcelona, España.

Gurney, J., John 0. , et al. (1989). Implementing a Definite Clause Grammar for Parsing Surface Syntax, U.S. Army Laboratory Command. Harry Diamond Laboratories.

Gutiérrez, I. C. and D. F. Figueroa (2011). "Traducción automática. Técnicas y aplicaciones."

Hernández Mercedes, P. (2002). En torno a la traducción automática. España, Editorial Cervantes: pp 17.

Hutchins, J. (2007). "Machine translation: a concise history." Retrieved febrero del 2013, from http://www.hutchinsweb.me.uk/CUHK-2006.pdf.

Hutchins, W. J. and H. L. Somers (1992). An Introduction to Machine Translation. New York, Academic Press.

Kaplan, G., et al. (2010). Ambigüedad léxica en los modelos de requisitos en lenguaje natural. XII Workshop de Investigadores en Ciencias de la Computación.

Ledo Mezquita, Y. (2006). Recuperación de información con resolución de ambigüedad de sentidos de palabras para el español. Centro de Investigación en Computación. México DF, Instituto Técnico Nacional. Tesis Doctoral.

Lezcano, M. (2005). Prolog y los Sistemas Expertos.

Monferrer, M. T. E., et al. (2001). El Lenguaje de Programación PROLOG. Castellón de la Plana.

Montero Martínez, J. M. (2000). Desarrollo de un entorno para el análisis sintáctico de una lengua natural. Aplicación al castellano. Departamento de Ingeniería Electrónica. Madrid, Universidad Politécnica de Madrid.

Moreno, L., et al. (1999). "Introducción al procesamiento del lenguaje natural." Servicio de Publicaciones Universidad de Alicante). Universidad de Alicante.

Muñoz, J. M. M. and M. V. Ramírez (2010). "Aplicaciones de traducción basadas en memorias de datos: desarrollo y perspectivas de futuro." Entreculturas: revista de traducción y comunicación intercultural(3): 109-123.

Page 74: Facultad Matemática, Física y Computación

Referencias Bibliográficas

63

Pereira, F. C. N. and S. M. Shieber (2002). Prolog and Natural-Language Analysis. Brookline, Massachusetts, Microtome Publishing.

Reyes, G. (1990). La pragmática lingüística: el estudio del uso del lenguaje, Editorial Montesinos.

Riley, G. and J. Giarratano (2012). "Sistemas expertos."

Rowe, N. C. (1988). Artificial Intelligence Through Prolog, Prentice-Hall.

Russell, S. J. and P. Norvig (1995). Artificial Intelligence A Modern Approach. New Jersey, Prentice Hall.

Somers, H. (2003). Machine translation: latest developments. Oxford handbook of computational linguistics. Oxford, Oxford University Press.

Sosa, E. (1997). "Procesamiento del lenguaje natural: revisión del estado actual, bases teóricas y aplicaciones." 05/02/2013, from http://www.elprofesionaldelainformacion.com.

Sterling, S. (1994). The art of Prolog, MIT Press.

Tomás Gironés, J. (2003). Traducción automática de textos entre lenguas similares utilizando métodos estadísticos. Departamento de Sistemas Informáticos y Computación. Valencia, Universidad Politécnica de Valencia. Tesis Doctoral: pp 157.

Vázquez Pérez, S. (2009). Resolución de la ambigüedad semántica mediante métodos basados en conocimiento y su aportación a tareas de PLN. Departamento de Lenguajes y Sistemas Informáticos. Alicante, Universidad de Alicante. Tesis Doctoral.

Villayandre Llamazares, M. (2010). Aproximación a la Lingüística Computacional. Departamento de Filología Hispánica y Clásica, Universidad de León. Tesis Doctoral.

Warren, D. H. D. (1983). An abstract Prolog instruction set. California, SRI International.

Wu, J. (2011). Adaptation of language models and context free grammar in speech recognition, Google Patents.

Zapata, C. and S. Benítez (2009). "Interlingua: a-state-of-the-art overview." Revista Facultad de Ingeniería Universidad de Antioquia(47): 117-128.

Page 75: Facultad Matemática, Física y Computación

Anexos

64

Anexos

1- Gramática.pl

Nota: las vocales con tilde han sido sustituidas por las respectivas vocales sin la tilde

seguidas del número 1. De igual forma la ñ por n1.

%GRAMATICA%

oracion --> cat1(Gen,Num),cat4(_,_),cat3,cat2(Gen,Num).

oracion --> sust(Gen,Num).

oracion --> adj(Gen,Num).

oracion --> adv.

oracion --> adj1(Gen,Num).

cat1(Gen,Num) --> art(Gen,Num),sust(Gen,Num).

cat1(Gen,Num) --> sust(Gen,Num).

cat1(Gen,Num) --> sust(_,Num),prep,art(Gen,Num),sust(Gen,Num).

cat1(Gen,Num) --> sust(_,_),cont,sust(m,_).

cat1(Gen,Num) -->

sust(Gen,Num),adj1(Gen,Num),prep,art(Gen1,Num1),sust(Gen1,Num1).

cat1(Gen,Num) --> art(Gen,Num),sust(Gen,Num),adj1(Gen,Num).

cat1(Gen,Num) -->

art(Gen,Num),sust(Gen,Num),adj1(Gen,Num),prep,art(Gen1,Num1),sust(Gen1,Num1).

cat1(Gen,Num) --> sust(Gen,Num),adj1(Gen,Num).

cat2(Gen,Num) --> adj(Gen,Num),cat2a(Gen,Num).

cat2a(Gen,Num) --> conj,adj(Gen,Num),cat2a(Gen,Num).

cat2a(Gen,Num) --> [].

cat3 --> adv.

cat3 --> [].

Page 76: Facultad Matemática, Física y Computación

Anexos

65

cat4(Gen,Num) --> prep,sust(_,_).

cat4(Gen,Num) --> prep,art(Gen,Num),sust(Gen,Num).

cat4(Gen2,Num2) -->

prep,art(Gen,Num),sust(Gen,Num),prep,art(Gen2,Num2),sust(Gen2,Num2).

cat4(Gen,Num) --> prep,art(Gen,Num),sust(Gen,Num),adj(Gen,Num).

cat4(Gen,Num) --> [].

%SUSTANTIVOS%

sust(m,p) --> [pe1talos];[inviernos].

sust(m,s) --> [pe1talo];[apice];[invierno];[a1ngulo];[entrenudo];

[nervio];[tubo];[lobo];[pedu1nculo];[ovario];[ro1mulo];[limbo].

sust(m,s) --> [bulbo];[pseudobulbo];[escapo];[racimo];[nudo];

[arbusto];[alabastro];[pecio1lulo];[lo1culo];[disco];[hilacha];[hilo].

sust(f,p) --> [hojas];[llanuras];[corolas];[bra1cteas];[semillas].

sust(f,s) --> [aja];[anacordia];[barrera];[cabecita];[cima];[clase];

[conidia];[conidio1fora];[cresta];[estigma];[cuerda];[ca1scara].

sust(f,s) --> [altura];[anemocori1a];[ramificacio1n];[antera];[hoja];

[corola];[llanura];[rama];[esti1pula];[axila];[semilla];[bra1ctea];[ca1psula].

%ARTICULOS%

art(m,s) --> [el].

art(m,p) --> [los].

art(f,s) --> [la].

art(f,p) --> [las].

%CONTRACCIONES, PREPOSICIONES, CONJUNCIONES%

cont --> [al];[del].

prep --> [ante];[bajo];[cabe];[con];[contra];[de];[desde];

[durante];[en];[entre];[hacia];[hasta];[mediante];[para];[por];[segu1n];[sin].

conj --> [y];[ni];[pero];[sino];[conque];[luego];[tan];

[e];[o];[u];[sino];[que];[excepto];[salvo];[menos];[porque].

Page 77: Facultad Matemática, Física y Computación

Anexos

66

%ADJETIVOS%

adj(m,p) --> [verdes];[azules];[rojos];[amarillos];[negros];[blancos];

[altos];[opuestos];[largos];[se1siles];[ceru1leos];[cortos];[pilos].

adj(m,p) --> [estrechos];[ramosos];[surcados];[fuertes];[robustos];

[pubescentes];[erectos];[rectos];[opuestos];[lanceolados];[lobados];[pinados].

adj(m,s) --> [verde];[azul];[rojo];[amarillo];[negro];[blanco];[alto];

[opuesto];[largo];[se1sil];[ceru1leo];[corto];[pilo];[puberulento];[agudo].

adj(f,p) --> [estrechas];[ramosas];[surcadas];[fuertes];[robustas];

[pubescentes];[erectas];[rectas];[opuestas];[lanceoladas];[lobadas];[pinadas].

adj(f,p) --> [uncinadas];[globosas];[crasas];[gruesas];[ovoideas];

[multifloras];[mucronadas];[armadas];[inermes];[agudas];[redondeadas].

adj(f,p) --> [enequila1teras];[terminales];[eli1pticas];[finas];[solitarias].

adj(f,s) --> [normal];[obclaviforme];[obtriangular];[urticante];[valva].

adj(f,s) --> [marro1n];[melaniforme];[meloniforme];[meniscoide];

[mensual];[modioliforme];[moniliforme];[montante];[muscariforme];[mutante].

%ADJETIVOS1%

adj1(m,p) --> [jo1venes];[viejos];[antiguos];[inferiores];[superiores];

[masculinos];[femeninos];[exteriores];[interiores];[mayores];[menores];[primarios].

adj1(m,s) --> [joven];[viejo];[antiguo];[inferior];[superior];[masculino];

[femenino];[exterior];[interior];[mayor];[menor];[primario];[infraestaminal].

adj1(f,p) --> [jo1venes];[viejas];[antiguas];[inferiores];[superiores];

[masculinas];[femeninas];[exteriores];[interiores];[mayores];[menores].

adj1(f,s) --> [joven];[vieja];[antigua];[inferior];[superior];[masculina];

[femenina];[exterior];[interior];[mayor];[menor];[primaria];[infraestaminal].

%ADVERBIOS%

adv --> [abiertamente];[abruptamente];[abultadamente];[abundantemente].

%PREDICADOS%

Page 78: Facultad Matemática, Física y Computación

Anexos

67

miembro(X,[X|_]).

miembro(X,[_|R]):-miembro(X,R).

elimina(X,[X|Xs],Xs).

elimina(X,[Y|Ys],[Y|Zs]):-elimina(X,Ys,Zs).

elim_l1_de_l2([],L,L):-!.

elim_l1_de_l2([X|M],L,S):-elimina_x(L,X,T),elim_l1_de_l2(M,T,S).

elimina_x([],X,[]):-!.

elimina_x([X|M],X,Z):-elimina_x(M,X,Z),!.

elimina_x([R|M],X,[R|Z]):-elimina_x(M,X,Z),!.

aplanar([],[]).

aplanar([X|L],[X|K]):-not X=[M|_],aplanar(L,K).

aplanar([X|Tail],L):-X=[M|_],

aplanar(X,L1),

aplanar(Tail,L2),

concatenar(L1,L2,L).

concatenar([],L,L).

concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).

listarTodos(L):-findall(X,art(_,_,[X],U),Xs),

findall(W,conj([W],P),Ws),

concatenar(Xs,Ws,L).

prefijo([],M):-!.

Page 79: Facultad Matemática, Física y Computación

Anexos

68

prefijo([X],[X|M]):-!.

prefijo([X|L],[X|M]):-prefijo(L,M).

prefijo([X|T],[L|M]):-lista(X),prefijo(X,L),prefijo(T,M).

lista([]):-!.

lista([X|Y]):-lista(Y).

esAdjetivo(P,G,N,adj):- adj(G,N,[P],U).

esAdjetivo1(P,G,N,adj1):- adj1(G,N,[P],U).

esSustantivo(P,G,N,sust):- sust(G,N,[P],U).

esAdverbio(P,_,_,adv):- adv([P],U).

esPreposicion(P,_,_,prep):- prep([P],U).

esConjuncion(P,_,_,conj):- conj([P],U).

esContraccion(P,_,_,cont):- cont([P],U).

esArticulo(P,G,N,art):- art(G,N,[P],U).

listarSust(L,Gen):- findall(X,sust(Gen,s,[X],U),L).

listarAdj(L,Gen):- findall(X,adj(Gen,s,[X],U),L).

listarAdj1(L,Gen):- findall(X,adj1(Gen,s,[X],U),L).

queEs(P,G,N,Id):-

esAdjetivo(P,G,N,Id);esAdjetivo1(P,G,N,Id);esSustantivo(P,G,N,Id);esAdverbio(P,_,_,Id);es

Preposicion(P,_,_,Id);esConjuncion(P,_,_,Id);esContraccion(P,_,_,Id);esArticulo(P,G,N,Id).

2- Diccionario.txt (esto es solo una pequeña muestra del archivo)

abaxial,,abaxialis, abaxiale

abayado,,baccatus, baccata, baccatum

abiertamente,,patule

abierto,,apertus, aperta, apertum

abrazante,,amplectus, amplecta,

amplectum

Page 80: Facultad Matemática, Física y Computación

Anexos

69

abruptamente,,abrupte

abultadamente,,grosse

abundantemente,,longe

abundantemente,,abunde

acetabuliforme,,acetabuliformis,

acetabuliforme

aciculado,,aciculatus, aciculata,

aciculatum

acicular,,acicularis, aciculare

acicular,,acerosus, acerosa, acerosum

acinaciforme,,acinaciformis,

acinaciforme

acintado,,fasciarius, fasciaria,

fasciarium

acrecido,,accretus, accreta, accretum

acroleuco,,achroleucus, achroleuca,

achroleucum

acráceo,,achraceus, achracea,

achraceum

acrógeno,,acrogenus, acrogena,

acrogenum

aculeado,,aculeatus, aculeata,

aculeatum

acuminado,,acuminatus, acuminata,

acuminatum

adamascado,,armeniaccus,

armeniacca, armeniaccum

adaxial,,adaxialis, adaxiale

además,,insuper

además,,praeterea

adherido,,adpressus, adpressa,

adpressum

adnato,,annexus, annexa, annexum

adnato,,adnatus, adnata, adnatum

adondequiera,,quolibet

adpreso,,adpressus, adpressa,

adpressum

aeruginoso,,aeruginosus, aeruginosa,

aeruginosum

afín,,affinis, affine

agudamente,,subtiliter

agudamente,,acute

agudo,,acutus, acuta, acutum

aguijón,,spiculum, spiculi, n

ahora,,nunc

aisladamente,,simpliciter

aja,,stramen, straminis, n

alabardado,,hastatus, hastata,

hastatum

alabastro,,alabaster, alabastri, m

alado,,alatus, alata, alatum

alantoide,,botuliformis, botuliforme

alantoide,,allantoideus, allantoidea,

allantoideum

alargado,,elongatus, elongata,

elongatum

albescente,,albescens, albescentis

albumen,,albumen, albuminis, n

alegremente,,laete

almendro,,nux, nucis, m

almohadado,,pulvinatus, pulvinata,

pulvinatum

alternado,,alternativus, alternativa,

alternativum

Page 81: Facultad Matemática, Física y Computación

Anexos

70

alterno,,alternus, alterna, alternum altura,,altitudo, altitudinis, f

3- Traductor.nsi

!include "WordFunc.nsh"

!include LogicLib.nsh

!include nsDialogs.nsh

InstType "full"

InstType "minimal"

!define name "EsLatín_3"

Var JRE

Var SWI

;Nombre del instalado

Name ${name}

;El Archivo de Salida

OutFile "EsLatín_3.exe"

Icon "icon\icono.ico"

;estilo XP

XPStyle on

;El directorio default para la

instalación

InstallDir

$PROGRAMFILES\${name}

; Registry key to check for

directory (so if you install again, it

will overwrite the old one

automatically)

InstallDirRegKey HKLM

"Software\${name}" "InstallDir"

Function PutShorcuts

StrCpy $R1 $R0 1

StrCmp $R1 ">" skip

SetShellVarContext All

CreateDirectory

$SMPROGRAMS\$R0

CreateShortCut

"$SMPROGRAMS\$R0\${name}.l

nk" $INSTDIR\EsLatin_3.bat

MessageBox MB_YESNO

$(deskshort) IDYES ok IDNO no

ok:

CreateShortCut

"$DESKTOP\${name}.lnk"

$INSTDIR\EsLatin_3.bat

no:

CreateShortCut

"$SMPROGRAMS\$R0\Desinstala

r ${name}.lnk"

$INSTDIR\uninstall.exe

WriteRegStr HKLM

SOFTWARE\${name}

"StartMenuFolder"

$SMPROGRAMS\$R0

skip:

FunctionEnd

Section !$(base) sec1

SectionIn RO

SetOutPath $INSTDIR

;ver si JRE esta instalado si no

instalarlo

StrCmp $JRE "si" 0 no

installJRE:

MessageBox MB_OK "Se ha

detectado que no se encuentra

Page 82: Facultad Matemática, Física y Computación

Anexos

71

instalada la maquina $\nvirtual de

Java, o que la version instalada es

incompatible.$\n Se instalará

ahora"

SetOutPath $TEMP

File "Others\jre.exe"

ExecWait '"$TEMP\jre.exe"' $1

StrCmp $1 "1602" installFail

Goto installOK

installFail:

Call AbortarJRE

installOK:

installed:

SetOutPath $INSTDIR

Goto fn

no:

Call isJRERightVersion

StrCmp $0 "instalar" 0 fn

Goto installJRE

fn:

;ver si SWI esta instalado si no

instalarlo

StrCmp $SWI "si" 0 no1

installSWI:

MessageBox MB_OK "Se ha

detectado que no se encuentra

instalado $\nSWI-Prolog, o que la

version instalada es

incompatible.$\n Se instalará

ahora"

SetOutPath $TEMP

File "Others\swi.exe"

ExecWait '"$TEMP\swi.exe"' $1

StrCmp $1 "54" installFail1

Goto installOK1

installFail1:

Call AbortarJRE

installOK1:

installed1:

SetOutPath $INSTDIR

Goto fn1

no1:

Call isJRERightVersion

StrCmp $0 "instalar" 0 fn1

Goto installSWI

fn1:

;estos son los archivos y las

carpetas que se crearan

File /r images

File /r lib

File /r Licencia

File /r icon

File Gramatica.pl

File EsLatin_3.bat

File Eslatin_3.jar

File Diccionario.txt

File system.log

File Ayuda.exe