analizador sintÁctico de oraciones en espaÑol … jose... · en este trabajo describimos cómo...

123
SEP SES DGEST CUERNAVACA, MORELOS JULIO 2005 CENTRO NACIONAL DE INVESTIGACIÓN Y DESARROLLO TECNOLÓGICO c e n i d e t ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL USANDO EL MÉTODO DE DEPENDENCIAS T E S I S QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN CIENCIAS DE LA COMPUTACIÓN P R E S E N T A: JOSÉ ANTONIO CERVANTES ALVAREZ _ D I R E C T O R D E T E S I S: DR. RODOLFO ABRAHAM PAZOS RANGEL C O D I R E C T O R D E T E S I S: M. C. JOSÉ ANTONIO ZÁRATE MARCELEÑO

Upload: others

Post on 27-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

SEP SES DGEST

CUERNAVACA, MORELOS JULIO 2005

CENTRO NACIONAL DE INVESTIGACIÓN Y DESARROLLO

TECNOLÓGICO

c e n i d e t ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL

USANDO EL MÉTODO DE DEPENDENCIAS

T E S I S QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN CIENCIAS DE LA COMPUTACIÓN P R E S E N T A: JOSÉ ANTONIO CERVANTES ALVAREZ _

D I R E C T O R D E T E S I S: DR. RODOLFO ABRAHAM PAZOS RANGEL

C O D I R E C T O R D E T E S I S: M. C. JOSÉ ANTONIO ZÁRATE MARCELEÑO

Page 2: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Dedicatoria

Dedico esta tesis a mis padres Francisco Cervantes Martines y Ma. del Socorro

Alvarez Toscano por el amor, la confianza y el apoyo que siempre me han

brindado. Gracias ha ellos he podido cumplir mis metas.

A mis hermanos José Francisco, Salvador y Martha Angélica Cervantes Alvarez

por el cariño incondicional que nos témenos y el apoyo que siempre me han

brindado.

Page 3: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Agradecimientos

Mis más sinceros agradecimientos a los miembros del comité tutorial de esta tesis:

Dr. Guillermo Rodríguez Ortiz, Dr. Rodolfo Abraham Pazos Rangel, M.C. José

Antonio Zarate Marceleño, M.C. José Luis Ramírez Alcántara y M.C. Olivia Graciela

Fragoso Diaz. Por sus valiosas sugerencias y críticas acertadas, la cuales me

ayudaron en el desarrollo de esta tesis.

Particularmente agradezco al Dr. Rodolfo Abraham Pazos Rangel y al M.C. José

Antonio Zarate Marceleño por dirigir esta tesis. Sin su apoyo, sugerencias y

comentarios no hubiera sido posible culminar el desarrollo de este trabajo.

Agradezco al Consejo del Sistema Nacional de Educación Tecnológica (CoSNET)

por el apoyo económico que me otorgaron durante mis estudios.

Agradezco a mis compañeros de generación por brindarme su apoyo, amistad y

confianza, principalmente a Sonia López Ruiz, Rosy Ilda Basave Torres, Gabriel

Hernández Méndez y Juan Arturo Pérez Cebreros.

Le doy gracias a mi Dios por haberme dado la capacidad para poder realizar mis

estudios y la fuerza necesaria para poder afrontar cada uno de los momentos difíciles

de mi vida estudiantil.

Agradezco a mis padres por todo el apoyo incondicional que me han brindado, sin

ustedes nunca hubiera podido alcanzar mis metas. Son mi orgullo y el tesoro más

grande que la vida me ha dado.

Page 4: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

vi

Resumen Una de las características más importantes de los seres humanos es el dominio del

lenguaje natural. Es difícil imaginar que se puedan realizar algunas actividades

intelectuales sin involucrar frases en algún idioma. En la actualidad mucha de la

información y de los conocimientos que la humanidad posee está migrando a los

sistemas de cómputo, por lo que actualmente el uso de las computadoras se ha

vuelto parte de nuestra vida cotidiana y laboral.

Es por ello que actualmente ha surgido la necesidad de crear sistemas con una

interfaz que permita la interacción con el usuario de una forma más natural. Desde la

década de los 70s se ha tenido la inquietud de diseñar un sistema que sea capaz de

comprender el lenguaje natural de las personas; sin embargo, hasta el momento la

mayoría de los trabajos que se han realizado se encuentran enfocados hacia el

inglés. Es por esta razón que desde la década pasada el grupo de sistemas

distribuidos del CENIDET ha tenido la inquietud de trabajar en el ámbito de la

problemática que se tiene para el acceso a datos en la red mundial.

El objetivo de esta tesis es apoyar la investigación que se está realizando en esta

área, la cual apenas ha comenzado a tomar una gran importancia en nuestro país.

En este trabajo describimos cómo abordamos algunos de los problemas que existen

para el procesamiento de lenguaje natural; en particular, el diseño e implementación

de un analizador sintáctico para las oraciones en español usando el método de

dependencias, y principalmente las oraciones interrogativas e imperativas.

En este proyecto de tesis se implementó un analizador sintáctico flexible y dinámico

con el objetivo de que el sistema pueda incrementar sus conocimientos lingüísticos

sin mucha complejidad.

Page 5: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

vii

Tabla de contenido

Resumen................................................................................................................vi

Índice de figuras ..................................................................................................... ix

Índice de tablas ..................................................................................................... xii

Capítulo 1. Introducción........................................................................1

1.1. Antecedentes ........................................................................................... 2

1.2. Objetivos de la tesis ................................................................................. 4

1.3. Justificación y beneficios.......................................................................... 5

1.4. Alcances y limitaciones ............................................................................ 6

1.5. Contenido de la tesis................................................................................ 8

Capítulo 2. Marco teórico....................................................................10

2.1. Procesamiento de lenguaje natural........................................................ 10

2.2. Clasificación de los analizadores sintácticos ......................................... 13

2.2.1. Analizador descendente ..................................................................... 13

2.2.2. Analizador ascendente ....................................................................... 15

2.3. Método de dependencias....................................................................... 19

2.4. Trabajos realizados a nivel mundial ....................................................... 23

2.5. Trabajos realizados en México .............................................................. 24

Capítulo 3. Diseño del analizador léxico.............................................27

3.1. Arquitectura del lexicón.......................................................................... 28

3.1.1. Etiquetas gramaticales ....................................................................... 29

3.1.2. Rasgos recurrentes de las etiquetas gramaticales............................. 30

3.1.3. Rasgos particulares de las etiquetas gramaticales............................. 30

3.2. Analizador léxico.................................................................................... 37

3.2.1. Proceso de etiquetado........................................................................ 37

Page 6: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

viii

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico.39

4.1. Diversidad numérica de valencias sintácticas........................................ 40

4.2. Ejemplo de patrones de manejo sintáctico para verbos......................... 41

4.3. Diseño general de la base de datos....................................................... 44

Capítulo 5. Diseño del analizador sintáctico.......................................48

5.1. Algoritmo de Earley................................................................................ 49

5.2. Diseño general del analizador sintáctico................................................ 57

5.3. Compendio de reglas gramaticales de producción ................................ 59

5.4. Diagrama de casos de uso .................................................................... 63

5.5. Diagrama de clases ............................................................................... 66

Capítulo 6. Pruebas del sistema.........................................................69

6.1. Compendio de oraciones ....................................................................... 69

6.2. Escenario de pruebas ............................................................................ 71

6.3. Caso de prueba 1. Análisis léxico y sintáctico de una oración ambigua 76

6.4. Caso de prueba 2. Configuración y uso de una nueva gramática.......... 80

6.5. Caso de prueba 3. Análisis léxico y sintáctico de una oración............... 84

6.6. Caso de prueba 4. Edición de reglas gramaticales de producción ........ 87

Capítulo 7. Conclusiones y trabajos futuros .......................................91

7.1. Conclusiones ......................................................................................... 92

7.2. Trabajos futuros ..................................................................................... 93

Referencias bibliográficas .................................................................................... 95

Manual de usuario................................................................................................ 98

Diagramas de secuencia.................................................................................... 105

Page 7: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

ix

Índice de figuras

Figura 1.1. Arquitectura propuesta para la ILNBD....................................................... 3

Figura 1.2. Módulo de procesamiento de lenguaje natural.......................................... 4

Figura 2.1. Estado final. ............................................................................................ 14

Figura 2.2 Estrategia descendente (estado inicial).................................................... 14

Figura 2.3. Estrategia descendente (estado intermedio)........................................... 15

Figura 2.4. Estrategia descendente (estado intermedio)........................................... 15

Figura 2.5. Estrategia descendente (estado intermedio)........................................... 15

Figura 2.6. Estrategia descendente (estado final). .................................................... 15

Figura 2.7. Estrategia ascendente (estado inicial)..................................................... 16

Figura 2.8. Estrategia ascendente (estado final). ...................................................... 16

Figura 2.9. Árbol sintáctico parcial. ........................................................................... 18

Figura 2.10. Árbol sintáctico final. ............................................................................. 18

Figura 2.11. Árbol de constituyentes. ........................................................................ 21

Figura 2.12. Árbol de dependencias.......................................................................... 22

Figura 3.1. Diseño del lexicón. .................................................................................. 28

Figura 3.2. Proceso de etiquetado. ........................................................................... 38

Figura 4.1. Diseño de la base de datos del conocimiento lingüístico. ....................... 46

Figura 5.1. Grafo cíclico permitido............................................................................. 51

Figura 5.2. Grafo cíclico no permitido........................................................................ 51

Figura 5.3. Grafo cíclico no permitido........................................................................ 51

Figura 5.4. Grafo inicializado..................................................................................... 53

Figura 5.5. Aplicación de las reglas básicas.............................................................. 53

Figura 5.6. Aplicación de las reglas básicas.............................................................. 54

Figura 5.7. Proceso intermedio del algoritmo de Earley............................................ 55

Figura 5.8. Proceso intermedio del algoritmo de Earley............................................ 55

Figura 5.9. Proceso intermedio del algoritmo de Earley............................................ 55

Figura 5.10. Proceso intermedio del algoritmo de Earley. ......................................... 56

Figura 5.11. Grafo que representa una oración con dos estructuras sintácticas....... 56

Page 8: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

x

Figura 5.12. Arquitectura general del analizador sintáctico....................................... 58

Figura 5.13. Diagrama de casos de uso.................................................................... 64

Figura 5.14. Diagrama de clases del análisis de oraciones. ..................................... 67

Figura 6.1. Información léxica y morfológica de verbos. ........................................... 72

Figura 6.2. Información léxica y morfológica de sustantivos. .................................... 72

Figura 6.3. Información léxica y morfológica de adjetivos. ........................................ 73

Figura 6.4. Información léxica y morfológica de artículos.......................................... 73

Figura 6.5. Información léxica de preposiciones ....................................................... 74

Figura 6.6. Tabla de verbos en infinitivo.................................................................... 74

Figura 6.7 Tabla de oraciones................................................................................... 75

Figura 6.8. Tabla de combinaciones. ........................................................................ 75

Figura 6.9 Tabla de patrones. ................................................................................... 76

Figura 6.10. Caso de prueba 1: Etiquetado léxico de una oración. ........................... 77

Figura 6.11. Caso de prueba 1: Mensaje de error del analizador sintáctico.............. 77

Figura 6.12 Caso de prueba 1: Resultado del analizador sintáctico en formato de

texto........................................................................................................ 78

Figura 6.13. Caso de prueba 1: Árbol sintáctico de dependencias. .......................... 79

Figura 6.14. Caso de prueba 1: Árbol sintáctico de constituyentes........................... 79

Figura 6.15. Caso de prueba 2: Definición de nuevas reglas de producción. ........... 80

Figura 6.16. Caso de prueba 2: Ventana para configurar el sistema. ....................... 81

Figura 6.17. Caso de prueba 2: Etiquetado léxico de una oración. ........................... 82

Figura 6.18. Caso de prueba 2: Árbol sintáctico de dependencias. .......................... 83

Figura 6.19. Caso de prueba 2: Árbol sintáctico de constituyentes........................... 83

Figura 6.20. Caso de prueba 3: Etiquetado léxico de una oración. ........................... 85

Figura 6.21 Caso de prueba 3: Resultado del analizador sintáctico en formato de

texto........................................................................................................ 86

Figura 6.22. Caso de prueba 3: Primer árbol sintáctico de dependencias. ............... 87

Figura 6.23. Caso de prueba 3: Segundo árbol sintáctico de dependencias. ........... 87

Figura 6.24. Caso de prueba 4: Mensaje de error del analizador sintáctico.............. 88

Figura 6.25. Caso de prueba 4: Primer árbol sintáctico de constituyentes................ 89

Figura 6.26. Caso de prueba 4: Segundo árbol sintáctico de constituyentes............ 90

Page 9: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

xi

Figura A.1. Entorno gráfico del sistema. ................................................................... 99

Figura A.2. Ventana para configurar sistema. ......................................................... 100

Figura A.3. Ventana para definir nuevas reglas gramaticales. ................................ 102

Figura A.4. Ventana para editar reglas gramaticales. ............................................. 103

Figura A.5. Ventana de ayuda del analizador sintáctico.......................................... 104

Figura B.1. Secuencia para crear un archivo con reglas de producción. ................ 107

Figura B.2. Secuencia para editar un archivo de reglas de producción. ................. 109

Figura B.3. Secuencia para configurar el sistema. .................................................. 110

Figura B.4. Secuencia para analizar una oración.................................................... 113

Page 10: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

xii

Índice de tablas

Tabla 3.1. Categorías gramaticales........................................................................... 29

Tabla 3.2. Rasgos recurrentes de las categorías gramaticales................................. 30

Tabla 3.3. Rasgos particulares del verbo. ................................................................. 31

Tabla 3.4. Rasgos particulares de los sustantivos. ................................................... 32

Tabla 3.5. Rasgos particulares de los adjetivos ........................................................ 33

Tabla 3.6. Rasgos particulares de los pronombres. .................................................. 34

Tabla 3.7. Rasgos particulares de las locuciones. .................................................... 36

Tabla 3.8. Categorías gramaticales sin rasgos. ........................................................ 36

Tabla 4.1. Diversas valencias sintácticas de verbos. ................................................ 41

Tabla 4.2 Caracteres especiales de la tabla de patrones.......................................... 47

Tabla 5.1. Categoría gramatical de símbolos no terminales...................................... 59

Tabla 5.2. Categoría gramatical de símbolos terminales. ......................................... 60

Tabla 5.3. Reglas gramaticales de producción.......................................................... 60

Page 11: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

1

Capítulo 1

Introducción

Es difícil imaginar que se puedan realizar algunas actividades intelectuales sin

involucrar la comunicación en algún idioma ya sea de forma verbal o escrita. En la

actualidad la humanidad posee una gran cantidad de conocimientos, los cuales se

han ido acumulando a través de los siglos. La mayor parte de estos conocimientos se

encuentra representada de forma simbólica, es decir, a través de textos.

Gracias a los grandes avances de la ciencia, cada día contamos con mejores

herramientas que nos ayudan en nuestra vida cotidiana, como es el uso de la

computadora e Internet, las cuales nos permiten encontrar día con día grandes

volúmenes de información que se nos presentan en lenguaje natural a través de

texto.

Sin embargo, la mayoría de las personas se encuentra con diferentes problemas

cuando requieren utilizar la computadora para buscar y analizar grandes cantidades

de información, ya que es difícil tratar de seleccionar solamente aquella información

que nos es útil. Actualmente existen diferentes lenguajes de consulta a sistemas de

Page 12: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

2

cómputo tal como el Structured Query Language (SQL por sus siglas en inglés). Este

lenguaje nos puede ayudar para que la computadora entienda de una forma más

adecuada cuál es la información que necesitamos.

El problema de utilizar el lenguaje SQL es la necesidad de tener algunos

conocimientos de computación, por lo que la inmensa mayoría de las personas no

pueden trabajar con este lenguaje para obtener la información que desean encontrar.

La forma más adecuada para la mayoría de las personas, sería que la computadora

“pudiera entender” las consultas o peticiones de información en su propio lenguaje

natural. Este tema ha despertado interés desde la década de los años 70s y ha

motivado una larga serie de desarrollos para la creación de sistemas que sean

capaces de entender las peticiones realizadas en lenguaje natural.

1.1. Antecedentes

En la actualidad ha surgido la necesidad de crear sistemas con una interfaz que

permita la interacción con el usuario de una forma más natural, sin la necesidad de

que las personas tengan que aprender algún lenguaje de consulta como el SQL. Es

por esto que desde la década pasada el grupo de sistemas distribuidos del Centro

Nacional de Investigación y Desarrollo Tecnológico (CENIDET) ha tenido la inquietud

de trabajar en el ámbito de la problemática que se tiene para el acceso a datos en la

red mundial (Internet), y con un interés particular en interfaces a sistemas de bases

de datos que sean lo bastante amigables para la gran cantidad de usuarios que no

tienen un amplio conocimiento para poder acceder a los datos que se encuentran en

Internet.

Por lo que, desde hace unos años, se inició el desarrollo de una Interfaz de Lenguaje

Natural para Consulta a Bases de Datos (ILNBD por su siglas en español), con el

propósito de disminuir el esfuerzo realizado por aquellos usuarios que son inexpertos

en el acceso a la información de bases de datos. Se pretende que la interfaz sea

capaz de traducir a SQL consultas expresadas en lengua española.

Page 13: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

3

La arquitectura propuesta del sistema de procesamiento de consultas en lenguaje

natural a través de la Web, se muestra en la figura 1.1. “Al iniciar una sesión con la

interfaz, el usuario emitirá su consulta por medio de la interfaz de voz, cuyo resultado

será enviado por el cliente al módulo de atención del intermediario, el cual pasará la

consulta al módulo de procesamiento de lenguaje natural (PLN)” [1]. La figura 1.2

presenta de forma más detallada la arquitectura propuesta para el módulo PLN.

1Figura 1.1. Arquitectura propuesta para la ILNBD.

“La consulta en lenguaje natural recibida por el módulo PLN, es analizada sintáctica y

semánticamente para transformarla en una representación interna, la cual se traduce

a una consulta en el Lenguaje de Consulta Estructurado (SQL). Esta consulta es

regresada al módulo de sesión para que la reenvíe a un sistema manejador de bases

de datos (SMBD) para su evaluación. El mismo módulo de sesión se encarga de

hacer llegar al usuario final el resultado de la consulta que regrese el SMBD” [1].

Actualmente ya se tiene desarrollada una gran parte de este proyecto. Es por ello

que el objetivo de esta tesis es el diseño e implementación de un analizador

sintáctico para el procesamiento de lenguaje natural, el cual forma parte de este

Cliente (Aplicación + Interfaz de Voz)

• Solicita ontologías • Recibe ontologías • Genera consulta LN • Recibe resultados

Editor de Ontologías

Ontologías

Servidor de Web (Intermediario)

• Obtiene solicitud de ontología • Crea hilo de servicio • Regresa a estado de espera

Recibe URL y puerto de servicio y regresa ontologías

• Recibe consulta en LN • Genera consulta en SQL

Módulo de Atención

Módulo de Sesión

Módulo PLN

JDBC

JDBC

JDBC

Page 14: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

4

Módulo de Sesión del Intermediario

Analizador Sintáctico

Analizador Semántico

Analizador Pragmático y del Discurso Generador

de Código

Error

Lexicón

Ontología particular

Estructura sintáctica

Representación interna

Consulta SQL

proyecto (ILNBD), con el fin de que éste sea capaz de comprender las oraciones

expresadas con la variante del español que se habla en México.

2Figura 1.2. Módulo de procesamiento de lenguaje natural.

1.2. Objetivos de la tesis

Los objetivos principales de esta tesis son el diseño e implementación de un

analizador sintáctico para las oraciones en español usando el método de

dependencias.

Otro objetivo que se propuso fue generar un analizador sintáctico flexible y dinámico.

Flexible porque permitiría la modificación de las reglas sintácticas, de acuerdo a las

necesidades del usuario, y dinámico porque permitiría incrementar el número de

reglas sintácticas con el que cuenta el analizador.

Page 15: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

5

1.3. Justificación y beneficios

Justificación

Uno de los problemas que frecuentemente tienen los usuarios en el acceso a la

información de sistemas de cómputo, es la falta de conocimiento de un lenguaje

como SQL para formular consultas en un sistema y así mismo poder obtener

solamente aquella información que es útil. Una solución viable a esta problemática es

el desarrollo de una interfaz de lenguaje natural a bases de datos para que un

usuario pueda expresar en español y de la manera más sencilla una consulta a una

base de datos.

Actualmente en diferentes países se está trabajando en procesamiento de lenguaje

natural; sin embargo, ha surgido la necesidad de desarrollar un sistema para la

lengua española y en particular la utilizada en México, ya que los sistemas

desarrollados en otros idiomas no pueden ser adaptados al nuestro debido a que

existen ciertas características propias de cada lengua que facilitan o vuelven más

complejo el procesamiento del lenguaje. También consideramos que el español

hablado en México no es igual al que se utiliza en los demás países de habla

hispana, y es por ello que existe la inquietud del desarrollo de un analizador

sintáctico del español hablado en México.

Beneficio que ofrece la ILNBD

El principal beneficio que se pretende conseguir en el desarrollo de una interfaz de

lenguaje natural para consulta a bases de datos (ILNBD), es el de facilitar la

realización de consultas de los usuarios nuevos y generalmente inexpertos en el

manejo de datos a través de Internet, tratando de que un usuario pueda expresar en

español y de la manera más fácil una consulta a una base de datos.

Page 16: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

6

Beneficios del analizador sintáctico

1) Aportación de información sintáctica con el objetivo de facilitar al analizador

semántico el entendimiento de las oraciones expresadas en español.

2) Disminución del número de posibles variantes de estructura sintáctica para

una oración, permitiendo un ahorro de procesamiento y tiempo en la posible

interpretación que pueda tener una oración.

1.4. Alcances y limitaciones

Los principales alcances que se lograron con el desarrollo esta tesis son los

siguientes:

• Se pudo realizar el análisis sintáctico de oraciones expresadas en lenguaje

natural y determinar si la oración posee alguna de las posibles formas

gramaticales permitidas para la formación de oraciones en español,

considerando que este analizador sólo tiene la capacidad de trabajar con

oraciones simples (sujeto-verbo-predicado).

• El analizador utiliza una base de datos del conocimiento lingüístico para tratar

de rechazar aquellas oraciones que sintácticamente cumplan las reglas

gramaticales pero que semánticamente sean incorrectas. Este punto se refiere

a la eliminación de aquellas oraciones en las que, aunque contengan cada

uno de los elementos que conforman una oración, el uso de éstos sea

inadecuado; por ejemplo, el uso de las preposiciones es muy amplio en el

español, sin embargo, no todos los verbos pueden combinarse con las

mismas preposiciones, lo que implica que una oración pueda ser

sintácticamente correcta pero semánticamente incorrecta. Esto no quiere decir

que el analizador sintáctico realiza las labores de un analizador semántico.

Sólo se pretendió facilitar la tarea al analizador semántico.

Page 17: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

7

• Se implementó un analizador sintáctico flexible y dinámico para poder

incrementar o modificar las reglas gramaticales de producción.

En este trabajo lo que se realizó en cuanto a flexibilidad, fue el desarrollo de

un sistema con una arquitectura independiente de las reglas sintácticas,

permitiendo de esta manera al usuario del sistema poder modificar o introducir

nuevas reglas gramaticales sin necesidad de alterar el código fuente del

sistema.

Las limitaciones que se consideraron para el desarrollo de esta tesis son las

siguientes:

• El analizador sintáctico sólo tiene la capacidad de analizar oraciones simples.

• El analizador sintáctico trabaja sólo con una parte del español, debido a la

gran cantidad de palabras que lo conforman.

• Dentro de las pruebas realizadas, sólo se utilizaron las oraciones formadas

por las palabras definidas en el léxico y en la base de datos del conocimiento

lingüístico, debido a que el objetivo de esta tesis no era crear un léxico con el

mayor número posible de palabras del español, ni crear una base de datos del

conocimiento lingüístico que contenga todos los patrones de estructuras

sintácticas para la formación de oraciones.

• Este analizador no tiene la finalidad de funcionar como un corrector de

ortografía; por lo tanto, si el analizador llegara a recibir alguna palabra

incorrecta, se podrá generar un análisis no deseado o incorrecto.

• El analizador sintáctico sólo tiene la capacidad de trabajar con el español.

Page 18: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

8

• No se pretende eliminar por completo la ambigüedad sintáctica que pueda

tener una oración.

• No se consideró trabajar con todas las estructuras posibles para la

construcción de una oración, debido a que algunas estructuras no son muy

usuales.

• El análisis de las oraciones se realiza sin considerar los signos de puntuación,

debido a que las reglas gramaticales para el uso de los signos de puntuación

no son estrictas, permitiendo a las personas cierta libertad para su manejo.

Eso genera que el análisis de las oraciones se vuelva más complejo.

• Si el analizador léxico llegara a detectar una palabra no definida dentro del

lexicón, ésta será etiquetada como un sustantivo no definido.

1.5. Contenido de la tesis

Esta tesis está dividida en siete capítulos como se describe a continuación:

El capítulo 2 describe el fundamento teórico que se utilizó durante el desarrollo de

este trabajo, algunos conceptos básicos de PLN, la metodología de algunos

algoritmos para compiladores e intérpretes y presenta una breve descripción de otros

trabajos similares a éste realizados tanto en otros países como en México.

El capítulo 3 describe la arquitectura y los conceptos utilizados para el diseño del

lexicón y del analizador léxico que se utilizaron para poder implementar el analizador

sintáctico.

El capítulo 4 presenta el método de dependencias, incluyendo algunos ejemplos

generales para el manejo de valencias sintácticas, y el diseño utilizado para llevar a

cabo la implementación de una base de datos del conocimiento lingüístico.

Page 19: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 1. Introducción

9

En el capítulo 5 se describe el algoritmo utilizado para el diseño del analizador

sintáctico, las reglas gramaticales de producción que se consideró utilizar durante las

pruebas, el diagrama de casos de uso y el diagrama de clases diseñados para la

implementación del sistema.

El capítulo 6 presenta el compendio de oraciones utilizadas para llevar a cabo la

evaluación del sistema, describe el escenario de pruebas que se creó y presenta

algunos casos de prueba.

En el capítulo 7 se presentan las conclusiones a las que se llegó después de haber

desarrollado esta tesis, y se sugieren algunos trabajos futuros para dar continuidad a

esta línea de investigación.

Page 20: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

10

Capítulo 2

Marco teórico

En este capítulo se describen los fundamentos teóricos utilizados para el desarrollo

de esta tesis, algunas definiciones y conceptos importantes para su entendimiento.

También, se presenta una descripción breve de los trabajos similares a ésta. Para tal

efecto, primeramente se describen todos los trabajos encontrados en otros países

que abordan el tema de la problemática que existe para el procesamiento de

lenguaje natural, enfocados particularmente al análisis sintáctico del español, y

posteriormente se describen todos lo trabajos encontrados en México que también

tratan este tema.

2.1. Procesamiento de lenguaje natural

Marc Moens realizó un trabajo denominado Natural language analysis [2], en el que

analiza los diferentes problemas que surgen en la implementación del lenguaje

natural para el desarrollo de aplicaciones, involucrando dos requerimientos

contradictorios: la precisión (permite que el análisis de las oraciones genere una

interpretación adecuada) y la cobertura o alcance (determinación del conjunto de

Page 21: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

11

palabras que conforman el lenguaje).

Podemos decir que el procesamiento de lenguaje natural (PLN por sus siglas en

español), consiste en tomar una oración hablada o escrita y procesarla para obtener

su significado, por lo que el sistema obtiene la secuencia de palabras (oración) y el

resto del proceso para el entendimiento puede ser dividido en varias etapas: análisis

léxico, análisis morfológico, análisis sintáctico, análisis semántico y análisis

contextual. Cada una de estas etapas cumple con una tarea necesaria para llegar a

un entendimiento del lenguaje natural.

A continuación se explica con más detalle cada una de las etapas mencionadas

anteriormente:

Análisis léxico. “La información léxica está contenida en el lexicón, es decir, en el

conjunto de unidades léxicas pertenecientes a un sistema lingüístico. Dicha

información consta de la etiqueta relativa a la categoría gramatical de cada unidad

lingüística (sustantivo, verbo, pronombre…) y de una o varias etiquetas

correspondientes a cada uno de los rasgos de subcategorización que hacen posible

que cada unidad lingüística seleccione otra u otras a la hora de combinarse formando

las distintas oraciones posibles de una lengua” [3].

A partir de un texto a procesar, un analizador léxico se encarga de transformar las

secuencias de palabras en unidades léxicas o tokens y, a través de un conjunto de

reglas, resolver posibles ambigüedades léxicas. Estos analizadores se denominan

etiquetadores gramaticales.

Análisis morfológico. “La morfología trata las palabras tomadas de forma

independiente de su relación en la oración y estudia su forma. Por tanto, la

información morfológica que proporciona una palabra incluye datos sobre su flexión

(género, número, persona…), derivación (sufijo, prefijo…) y composición (palabras

Page 22: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

12

simples, palabras compuestas). Asimismo, es objeto del estudio morfológico la

categoría gramatical de las palabras (sustantivo, verbo, adverbio…)” [3].

La correcta identificación de unidades morfológicas es esencial para cualquier

proceso posterior. Si se combina el análisis morfológico con el léxico, se puede

obtener información morfológica más completa sobre las unidades léxicas.

Análisis sintáctico. “La sintaxis trata la combinación de las palabras en la frase. Los

problemas principales de los que se ocupa la sintaxis se refieren al orden de las

palabras, a los fenómenos de reacción (es decir, la manera en que ciertas palabras

imponen a otras variaciones de número, género…) y las funciones que las palabras

puedan cumplir en la oración” [3].

Podemos distinguir dos clases de analizadores sintácticos: el analizador parcial o

superficial y el analizador completo.

• En el analizador superficial se identifican constituyentes sintácticos aislados.

No se establecen relaciones sintácticas entre ellos, con lo que el costo

computacional es bajo, a costa de disminuir la profundidad de análisis dentro

de la oración.

• El analizador completo, por otra parte, rechaza cualquier oración que no sea

capaz de analizar de forma global. Sin embargo, proporciona información

mucho más valiosa, ya que establece enlaces funcionales entre los diferentes

elementos sintácticos que constituyen la oración.

Análisis semántico. “La semántica proporciona el significado de las palabras según

el contexto. Gran parte de la información semántica de una unidad léxica ya se

encuentra contenida en forma de rasgos semánticos en la descripción de dicha

unidad, es decir, la información semántica es responsable de la correcta combinación

de unidades léxicas en un discurso” [3].

Page 23: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

13

Análisis contextual. “Hay que tener en cuenta que la correcta interpretación del

lenguaje puede en ocasiones no depender de factores relacionados con el discurso

en el que se da, sino con el universo sociocultural previo. Es evidente, por tanto, que

la información pragmática (es decir, según la relativa al conocimiento general del

mundo, a la situación comunicativa concreta y a las presuposiciones e inferencias

que conlleva) es fundamental para el correcto desarrollo de tareas de PLN” [3].

2.2. Clasificación de los analizadores sintácticos

Por lo general la mayoría de los métodos utilizados para la creación de analizadores

sintácticos se clasifican como descendentes y ascendentes (Top-Down o Buttom-

Up). En ambos casos se examina la entrada al analizador sintáctico de izquierda a

derecha, y un símbolo a la vez [4]. En particular estos algoritmos han sido muy

utilizados para la creación de compiladores que trabajan con lenguajes

independientes del contexto. Algunas de las herramientas que utilizan estos

algoritmos para generar analizadores sintácticos son: Lex, Yacc, Bison, Berkeley

Yacc, Yet Another Yacc, Coco(R) y ANTLR, entre otros [5]. Sin embargo, cuando se

trata de trabajar con gramáticas dependientes de contexto, que por lo general son

muy ambiguas como es el caso de los lenguajes naturales, su eficiencia disminuye

de forma considerable. Es por ello que dentro de este trabajo se implementó el

algoritmo de Earley, denominado también chart o tabla, y del cual hablaremos con

más detalle en el capítulo 4.

2.2.1. Analizador descendente

El análisis descendente, también conocido como análisis dirigido por las hipótesis,

comienza tomando el símbolo inicial que representa una oración y busca dentro de

las reglas de producción cuáles son las que permiten construir una estructura que

represente la secuencia de palabras que constituyen la oración de entrada.

Page 24: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

14

Este proceso puede visualizarse como la creación de un árbol, en donde se van

construyendo estructuras parciales desde el símbolo inicial y continúa hacia abajo

hasta encontrar la estructura sintáctica que corresponda a la oración de entrada.

Entre los algoritmos más comunes para la creación de este tipo de analizadores

podemos encontrar el analizador descendente recursivo y el analizador predictivo no

recursivo. Considérese el siguiente conjunto de reglas para ilustrar el proceso que

realizan estos algoritmos:

1) O = S FV CD CI

2) S = Sus

3) FV = Ver

4) CD = Art Sus

5) CI = Pre Sus

Si quisiéramos analizar la oración: “Pedro escribió una carta a María”, es necesario

considerar que la oración ha sido etiquetada por el analizador léxico, entonces el

analizador sintáctico trabajaría con las categorías gramaticales de la oración

etiquetada “Sus Ver Art Sus Pre Sus”. En la figura 2.1 se muestra el árbol sintáctico

al que debemos llegar después de haber aplicado el método descendente. En este

ejemplo el método descendente comenzaría tomando el símbolo inicial O y

sustituyéndolo por las partes que lo conforman, generando el inicio del árbol

sintáctico como lo muestra la figura 2.2.

3Figura 2.1. Estado final.

4Figura 2.2 Estrategia descendente (estado

inicial).

O

S FV CD CI

Sus

O

S FV CD CI

Ver Art Sus Art Sus Pedro escribió una carta a María

Page 25: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

15

El algoritmo seguiría repitiendo este proceso pero siempre tomando el símbolo no

terminal que está en el lado izquierdo hasta llegar a los nodos hoja, después avanza

a la derecha para tomar el siguiente símbolo y tratar de descomponerlo, y así

sucesivamente hasta descomponer todos los símbolos no terminales, como lo

muestran las figuras 2.3, 2.4, 2.5 y 2.6.

5Figura 2.3. Estrategia descendente (estado intermedio).

6Figura 2.4. Estrategia descendente (estado intermedio).

7Figura 2.5. Estrategia descendente (estado intermedio).

8Figura 2.6. Estrategia descendente (estado final).

2.2.2. Analizador ascendente

El analizador ascendente, también conocido como analizador sintáctico dirigido por

los datos, comienza tomando cada una de las palabras que constituyen la oración de

entrada y etiquetándola como hoja final del árbol a construir. Este algoritmo conoce

la parte derecha de las reglas de producción y trata de sustituirla por la parte

izquierda que denota la regla que la produce. Entre los algoritmos más comunes de

este tipo, podemos encontrar el analizador por precedencia de operadores, el

analizador LR(n) y el analizador LALR.

O

S FV CD CI

Sus

Sus

O

S FV CD CI

Ver Art Sus Sus

O

S FV CD CI

Ver Art Sus Art Sus

O

S FV CD CI

Sus Ver

Pedro Pedro escribió

Pedro escribió una carta a María Pedro escribió una carta

Page 26: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

16

El procedimiento de estos algoritmos se puede visualizar como la construcción de un

árbol sintáctico en donde se comienza por las hojas finales, y se trata de llegar al

nodo raíz para encontrar la estructura sintáctica que corresponde a la oración en

cuestión.

Consideremos la oración etiquetada y el mismo conjunto de reglas utilizados en el

ejemplo anterior del método descendente: Sus, Ver, Art, Sus, Pre y Sus. Este

algoritmo comenzaría tomando la secuencia de palabras que constituyen la oración y

trataría de sustituirlas por las reglas que producen esta secuencia de palabras. Al

igual que el algoritmo anterior, éste también comienza por la parte izquierda como lo

muestra la figura 2.7.

9Figura 2.7. Estrategia ascendente (estado inicial).

El método ascendente sustituye el sustantivo (Sus) por el sujeto (S), el verbo (Ver)

por la frase verbal (FV), y al no encontrar una regla que permita producir el artículo

(Art), toma el siguiente elemento que es un sustantivo (Sus) y los sustituye a ambos

por la etiqueta de complemento directo (CD), y así sucesivamente hasta terminar.

Posteriormente sube un nivel dentro del árbol y trata de hacer lo mismo comenzando

siempre por el lado izquierdo. El algoritmo termina en el momento en que se llega al

símbolo inicial (O), el cual indica que sí existe una estructura sintáctica para la

oración que se está analizando, como lo muestra la figura 2.8.

10Figura 2.8. Estrategia ascendente (estado final).

Sus

S FV CD CI

Ver Art Sus Art Sus

Sus

O

S FV CD CI

Ver Art Sus Art Sus

Pedro escribió una carta a María

Pedro escribió una carta a María

Page 27: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

17

Los métodos de análisis sintáctico mostrados anteriormente (descendente y

ascendente), presentan problemas para trabajar con gramáticas ambiguas. Esto se

observa cuando se va a aplicar una regla y el sistema detecta que se tiene más de

un camino o regla a seguir. Cuando se presenta este caso generalmente el

analizador aplica la primera regla gramatical que se encuentra, y a partir de ese

punto se siguen aplicando más reglas, siguiendo la misma estrategia; es decir, tomar

la primera regla y sólo en caso de fallar se considera la posibilidad de aplicar otra

regla. El funcionamiento básico por parte de estos algoritmos, provoca que se realice

una búsqueda exhaustiva persiguiendo sólo una hipótesis a la vez.

Como estos algoritmos no fueron diseñados para trabajar con gramáticas tan

ambiguas como es el caso de los lenguajes naturales, no se tiene implementado un

mecanismo para guardar los resultados previos que se van obteniendo. Conforme

avanza el proceso de búsqueda se va construyendo el árbol sintáctico, y si en un

momento dado no es posible avanzar debido a que no existe una regla que se pueda

aplicar, se retrocede hasta algún punto en el que sea posible considerar otra regla.

Esto ocasiona la necesidad de modificar o inclusive, en algunos casos, destruir el

árbol construido sin importar los componentes encontrados, ocasionando algunas

veces la necesidad de volver a generar estos componentes; lo que implica una

pérdida de tiempo y duplicidad de trabajo. Por ejemplo, supóngase que se está

analizado la siguiente oración “Juan vio un gato con un telescopio”, en donde “con un

telescopio” es un complemento indirecto. Supóngase también que para la

construcción de la oración se tienen las siguientes reglas gramaticales:

1) O = S FV CD

2) O = S FV CD CI

Si se toma la primera regla, en un momento dado se llegará a un punto donde se

tendrá un árbol sintáctico como el que se ilustra en la figura 2.9.

Page 28: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

18

11Figura 2.9. Árbol sintáctico parcial.

Como se puede apreciar, en este árbol no se tiene la posibilidad de continuar con el

análisis sintáctico, debido a que todos los nodos están etiquetados con símbolos

terminales; sin embargo, en la cadena de entrada aún queda por analizar el

complemento indirecto “con un telescopio”, por lo que se trata de retroceder hasta el

punto en el que se aplicó la regla que dio pauta para elegir un camino (O), con la

finalidad de tomar la otra alternativa. En tales circunstancias, será necesario ir

borrando el árbol hasta llegar al punto en el que podemos aplicar la otra regla

gramatical. Como podemos observar, en este caso será necesario destruir todo el

árbol, sin importar que ya se había encontrado el sujeto (S), la frase verbal (FV) y el

complemento directo (CD), los cuales tendrán que ser reconstruidos nuevamente

como se muestra en la figura 2.10; dando como resultado una pérdida de tiempo y la

duplicidad de trabajo.

12Figura 2.10. Árbol sintáctico final.

Sus

O

S FV CD

Ver Art Sus

Juan vio un gato

Estructura sintáctica parcial duplicada.

Sus

O

S FV CD

Ver Art Sus

Juan vio un gato con un telecopio

CI

Art Sus Pre

Page 29: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

19

Otro problema similar se presenta cuando se desea encontrar todas las estructuras

sintácticas posibles para una oración. Esto significa volver a duplicar el trabajo, ya

que una vez encontrada una estructura es necesario realizar otro análisis para

buscar otra posible estructura para la oración, y así sucesivamente hasta encontrar

todas las posibles estructuras sintácticas que pueda tener la oración en cuestión, sin

considerar el hecho de que varios árboles sintácticos puedan tener subestructuras

comunes.

2.3. Método de dependencias

Los principales métodos para construir un analizador sintáctico de PLN, son dos:

utilizando los modelos de constituyentes o los modelos de dependencias. En

particular, los modelos de constituyentes han sido los más apropiados para el inglés,

principalmente por su orden de palabras más estricto. Debido al gran apoyo y a la

gran cantidad de investigadores que se han enfocado a este método, estos modelos

son utilizados por muchos otros lenguajes, aun cuando éstos no comparten la

mayoría de las características del inglés [6].

Los modelos de dependencias presentan mejores características para su

implementación con los lenguajes que tienen un orden de palabras más libre, como

es el caso del español. Estos modelos se han orientado más hacia un trabajo descriptivo, por lo que se han empleado muy restringidamente y en pocos lenguajes [6]. Dentro de los modelos de dependencias se encuentra la Meaning Text Theory (MTT por sus siglas en inglés).

En 1970, Mel’cuk y Zholkovskij proponen por primera vez una teoría que se ha

convertido en una de las más influyentes dentro de la lingüística contemporánea [7].

La Meaning-Text Theory es una teoría que se basa en el hecho de que cualquier

acto de comunicación lingüístico implica tres aspectos:

Page 30: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

20

1) Un significado.

2) Un signo oral o escrito.

3) Una proyección (un conjunto de correspondencias entre significados y textos).

Los significados y los textos son accesibles, pero no las correspondencias por lo que

una lengua natural sólo se puede describir como un método funcional; por la razón

de que un texto puede tener varios significados y un significado puede ser

representado por varios textos [7].

La aplicación de la MTT permite describir algunas características del español de una

manera más natural y adecuada, tales como el orden más libre de palabras

(comparado con el inglés) y el establecimiento de relaciones entre valencias

sintácticas y semánticas. Por lo tanto, podemos decir que el método de

dependencias consiste principalmente en describir las relaciones o dependencias

que se establecen entre pares de palabras (valencias), donde una es la principal o

rectora y la otra está subordinada a (o dependiente de) la primera. Si se considera

que cada palabra de una oración tiene una palabra propia rectora, la oración entera

se ve como una estructura jerárquica de diferentes niveles.

Una dependencia es la relación que existe entre dos palabras de acuerdo al sentido

de las palabras. Es por ello que en este método se debe utilizar una base de datos

de conocimiento lingüístico que contenga una descripción del lenguaje con el que se

expresan los “objetos” que pueden formar parte de una oración. De esta forma se

conoce de antemano cómo se relacionan los distintos grupos de palabras en una

oración. Por ejemplo, para el lexema “plática” deberá aparecer en la base de datos

que se utiliza la preposición “sobre” para introducir el tema.

Para dejar más clara la diferencia entre el método de constituyentes y el método de

dependencias, veamos un ejemplo: un árbol de constituyentes revela la estructura de

una expresión en términos de agrupamientos (bloques) de palabras, que consisten

de bloques más pequeños, los cuales a su vez consisten de bloques aun más

Page 31: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

21

pequeños, etc. En un árbol de constituyentes, la mayoría de los nodos representan

agrupamientos sintácticos o frases y no corresponden a las formas de las palabras

reales de la oración bajo análisis. Símbolos como S (sujeto), FV (frase verbal), Sus

(sustantivo), CC (complemento circunstancial), etc. aparecen en los árboles de

constituyentes como etiquetas en los nodos, y se supone que estas únicas etiquetas

determinan completamente las funciones sintácticas de los nodos correspondientes.

En las figuras 2.11 y 2.12 se muestra un ejemplo con la oración: “los niños pequeños

estudian pocas horas”, representada a través de los dos distintos métodos (método

de constituyentes y método de dependencias).

13Figura 2.11. Árbol de constituyentes.

Para generar el árbol de constituyentes, es necesario utilizar un analizador léxico, el

cual etiqueta de acuerdo a su género (artículo, sustantivo, verbo, adverbio, etc.) cada

una de las palabras que conforman la oración, con el objetivo de que el analizador

sintáctico pueda clasificarlas en grupos o bloques de palabras. En el ejemplo anterior

el analizador sintáctico maneja tres diferentes bloques o grupos de palabras para

generar el árbol correspondiente a la oración. Los símbolos no terminales que utiliza

el analizador sintáctico en la figura 2.11 son: O (oración), GN (grupo nominal) y FV

(frase verbal), los demás símbolos que se muestran en el árbol de constituyentes se

consideran símbolos terminales. Es necesario que tanto los símbolos no terminales

como los terminales estén definidos dentro del analizador sintáctico.

O

S

Art Sus Adj

FV GN

Adj S

Los niños pequeños

estudian pocas horas

Ver

Page 32: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

22

14Figura 2.12. Árbol de dependencias.

Para la generación de los árboles de dependencias también se utiliza un analizador

léxico, el cual etiqueta de acuerdo a su género (artículo, sustantivo, verbo, adverbio,

etc.) cada una de las palabras que conforman la oración, con el objetivo de que el

analizador sintáctico pueda clasificar cada palabra de la oración. Una vez que el

analizador sintáctico reciba la información del lexicón, es necesario utilizar una base

de datos del conocimiento lingüístico que le indique al analizador sintáctico las

relaciones o dependencias que existen entre los lexemas de una oración. Con el uso

de la información que tenga la base de datos del conocimiento lingüístico, el

analizador sintáctico será capaz de determinar los tipos de dependencia que se

generan dentro de una oración. Esto permitirá disminuir las posibles

representaciones sintácticas de una oración en base a la información contenida

dentro de la base de datos del conocimiento lingüístico.

En el ejemplo que se muestra en la figura 2.12, podemos observar que el sustantivo

niños es una palabra rectora, porque existe una dependencia del artículo los y el

adjetivo pequeños. Además, el sustantivo niños al igual que horas son palabras

rectoras, pero también son dependientes porque presentan una relación de

dependencia con la palabra rectora juegan. Esta palabra (el verbo) es considerada

como la palabra con mayor jerarquía dentro de la oración, y por lo tanto, es la única

que no depende de ninguna otra palabra.

Los

niños

pequeños

estudian

pocas

horas

nominativo circunstancial

determinativa modificadora cuantitativa

Page 33: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

23

2.4. Trabajos realizados a nivel mundial

Dentro de los trabajos que se han desarrollado actualmente en diversos países, sólo

nos enfocaremos a aquellos trabajos que tratan con el lenguaje español, debido a

que cada idioma tiene sus propias características que pueden simplificar su estudio o

complicarlo.

1) Proyecto análisis [8]. Este trabajo se desarrolló en la Universidad Politécnica de

Madrid (UPM), el cual consiste en el diseño de un analizador sintáctico del

español utilizando el formalismo de GCD (gramática de cláusulas definidas) de

Prolog. El analizador es capaz de realizar el análisis de oraciones simples y

compuestas e incorpora servicios como la posibilidad de ampliar el diccionario y

la descripción de errores en oraciones gramaticales.

2) Desarrollo de un entorno para el análisis sintáctico de una lengua natural [9]. Este trabajo también fue realizado en la Universidad Politécnica de Madrid, y

su objetivo fue diseñar un sistema que fuera capaz de entender una oración a

través de un dispositivo auditivo y escribirla en pantalla. El analizador sintáctico

que se diseñó en este trabajo utilizaba el método de constituyentes, basando todo

el conocimiento sintáctico del lenguaje castellano en un conjunto de reglas de

producción independientes del contexto.

3) Construcción de un sistema de recuperación de información multilingüe en la Web [10]. El Ministerio de Ciencia y Tecnología de España financió la

construcción de este proyecto, el cual se enfocaba a trabajar principalmente con

el inglés y el español. Su desarrollo comenzó en julio de 2002 y terminó en

diciembre de 2003. Las instituciones que participaron fueron la Universidad de

Alicante, la Universidad de Jaén y la Universidad de Sevilla. El objetivo principal

del proyecto fue el de construir un buscador de información en el que se integre

un conjunto de herramientas de procesamiento de lenguaje natural.

Page 34: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

24

4) Analizador de unificación de huecos para la resolución de la anáfora [11].

Éste es un sistema de procesamiento de lenguaje natural orientado a la

resolución de la anáfora que incluye etiquetador léxico, análisis sintáctico parcial y

sistema de resolución automática de la anáfora. Este sistema es de propósito

general; es decir, no está centrado en una aplicación específica como podría ser

la extracción de información, traducción automática o cualquier otra, aunque

actualmente se ha empleado en aplicaciones de respuesta de consultas y

traducción automática.

2.5. Trabajos realizados en México

El interés por realizar trabajos relacionados con el procesamiento de leguaje natural

surgió en la década de los años 70s, y sin embargo, actualmente en México son

pocas las instituciones interesadas en la investigación relacionada con el

procesamiento del lenguaje natural. A continuación se presentan los trabajos más

relevantes de México.

1) Análisis sintáctico conducido por un diccionario de patrones de manejo sintáctico para lenguaje español [6]. En esta tesis doctoral, desarrollada en el

Centro de Investigación en Computación (CIC), se propuso un modelo para

resolver el problema del análisis sintáctico que se genera dentro de los textos sin

restricciones. El modelo considera un algoritmo de desambiguación basado en

tres diferentes fuentes de conocimiento del lenguaje. La primera fuente de

conocimiento es lingüística y consiste en una colección de patrones de manejo

sintáctico que reúnen información de cómo las palabras del español especifican

léxicamente sus objetos. La segunda fuente consiste en una gramática extendida

independiente del contexto para el español. La tercera fuente se basa en

proximidad semántica entre palabras.

2) Modelado gramatical de un subconjunto del lenguaje español [12]. Esta tesis

de maestría fue desarrollada en el Centro Nacional de Investigación y Desarrollo

Page 35: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

25

Tecnológico (CENIDET). El objetivo general de dicha tesis fue la elaboración de

un sistema computacional que permitiera obtener la información necesaria para

hacer un modelo, lo más general posible, de las estructuras léxicas y sintácticas

del español de México. El analizador sintáctico que se diseñó en esta tesis es de

tipo superficial. En un analizador superficial se identifican constituyentes

sintácticos aislados. No se establecen relaciones sintácticas entre ellos, con lo

que el costo computacional es bajo, a costa de disminuir la profundidad de

análisis dentro de la oración.

3) Modelo de interpretación de expresiones gráficas y de lenguaje natural para una interfaz inteligente [13]. El objetivo de este trabajo desarrollado en el

CENIDET, fue la integración de un subconjunto del idioma inglés con un lenguaje

de representación gráfica. En esta tesis se diseñó un analizador sintáctico

utilizando el método de constituyentes.

4) Uso de gramáticas de rasgos para reconocimiento de oraciones en español [14]. Este trabajo fue desarrollado en el Laboratorio Nacional de Informática

Avanzada (LANIA), en el cual se implementó el manejo de rasgos gramaticales.

Un rasgo gramatical es una característica lingüística inherente a las palabras del

lenguaje. El conjunto de rasgos gramaticales asociados a cada palabra determina

su función en la oración y restringe la manera en que puede combinarse con otros

componentes de la oración. El modelo gramatical que se desarrolló en esa tesis

se denomina GRADO, el cual está orientado al análisis de oraciones en español.

La principal diferencia de los trabajos realizados en México y el trabajo que nosotros

realizamos, es el método empleado para afrontar los problemas que se presentan

dentro del análisis sintáctico de lenguaje natural, en este caso el español. Es

importante aclarar que el trabajo realizado en el CIC también implementa el método

de dependencias; sin embargo, la principal diferencia que podemos destacar son los

criterios utilizados para el diseño de la base de datos del conocimiento lingüístico.

Nosotros hemos considerado que un verbo puede tener los mismos patrones que

Page 36: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 2. Marco teórico

26

otro verbo y además hemos tomado en cuenta que un mismo verbo puede tener

diferentes patrones dependiendo del tiempo en el que se encuentre conjugado. En

contraste, en el trabajo del CIC se considera el manejo de los patrones para cada

verbo de forma independiente; es decir, cada verbo tiene sus patrones sin tomar en

cuenta que un patrón puede ser compartido por más de un verbo.

Page 37: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

27

Capítulo 3

Diseño del analizador léxico

En este capítulo explicaremos la arquitectura diseñada para la implementación del

lexicón y del analizador léxico, ya que el primer paso para comprender una oración

es el reconocimiento de las palabras que la conforman. Para tal efecto podemos

definir un análisis léxico como el proceso de convertir un flujo de caracteres en un

flujo de etiquetas. El objetivo del analizador léxico es etiquetar cada una de las

palabras que conforman la oración de entrada, con la finalidad de aportar información

para el análisis sintáctico y determinar si las palabras etiquetados pertenecen al

lenguaje. Sin embargo, cuando se trata de trabajar con lenguaje natural es casi

imposible crear un lexicón que contenga todas las palabras que forman parte del

lenguaje natural, debido a lo cual el analizador léxico que implementamos considera

que todos las palabras pertenecen al lenguaje. Si el analizador léxico llegara a

encontrar una palabra que no se encuentra dentro del lexicón, ésta será etiquetada

como si fuera un sustantivo no definido.

Page 38: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

28

3.1. Arquitectura del lexicón

En el CENIDET se recopiló un lexicón con 92,362 palabras que pertenecen al

español [15]. En dicho trabajo se realizó de forma semiautomática un análisis

morfológico que permitió etiquetar cada una de las palabras de acuerdo a sus

accidentes gramaticales (género, número, y en algunos casos las personas a las que

corresponde). Sin embargo, el diseño de este lexicón no satisfacía nuestras

necesidades, por lo que se decidió diseñar otro lexicón utilizando la información

léxica y morfológica del trabajo realizado.

El lexicón que diseñamos está formado por una base de datos implementada en

PostgreSQL 7.2.1. Esta base de datos está constituida por nueve tablas, cuyos

nombres hacen alusión a las tradicionalmente llamadas partes básicas de la oración:

sustantivo, artículo, adjetivo, pronombre, verbo, adverbio, preposición, conjunción e

interjección. La figura 3.1 muestra las tablas que forman parte del lexicón.

15Figura 3.1. Diseño del lexicón.

Page 39: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

29

Para el etiquetado de las diferentes palabras que se encuentran dentro del lexicón,

se manejan tanto etiquetas gramaticales como códigos. Debido a que en el lexicón

que se realizó en el CENIDET existían palabras repetidas, actualmente se tienen

capturadas 72,716 palabras del español con su información léxica y morfológica

correspondiente (en lugar de 92,362 palabras). Específicamente, el lexicón cuenta

con: 60 adjetivos, 101 adverbios, 6 conjunciones, 21 preposiciones, 20,308

sustantivos y 52,220 verbos.

3.1.1. Etiquetas gramaticales

Las etiquetas gramaticales permiten determinar la categoría gramatical (sustantivo,

artículo, adjetivo, etc.) a la que pertenece cada una de las palabras que se

encuentran en el lexicón, y los códigos nos permiten saber cuáles son los accidentes

gramaticales (género, número, modo del verbal, tiempo del verbo, etc.) de cada

etiqueta. La tabla 3.1 muestra las diferentes etiquetas gramaticales que fueron

previstas. . 1Tabla 3.1. Categorías gramaticales.

Etiqueta Significado Sus Sustantivo Art Artículo Adj Adjetivo

AdjC Adjetivo cardinal AdjO Adjetivo ordinal Pro Pronombre Ver Verbo Aux Verbo auxiliar Adv Adverbio Pre Preposición Con Conjunción Int Interjección

Page 40: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

30

3.1.2. Rasgos recurrentes de las etiquetas gramaticales

Cada una de las etiquetas gramaticales incluye una serie de rasgos recurrentes

(presentes en la mayoría de las etiquetas) y de rasgos particulares. La tabla 3.2

muestra los rasgos recurrentes de estas categorías.

. 2Tabla 3.2. Rasgos recurrentes de las categorías gramaticales.

Persona Número Género Etiqueta Significado Etiqueta Significado Etiqueta Significado

1 Primera persona S Singular M Masculino

2 Segunda persona P Plural F Femenino

3 Tercera persona 6 Pendiente de

especificar N Neutro

6 Pendiente de especificar 6 Pendiente de

especificar

Se considera que en una fase posterior del proceso de desambiguación, el código 6

debería convertirse en alguno de los otros valores del rasgo en cuestión.

3.1.3. Rasgos particulares de las etiquetas gramaticales

Se consideró utilizar el guión con la finalidad de mantener en la descripción de cada

etiqueta gramatical un mismo número de posiciones. Debido a que no todas las

palabras correspondientes a una misma categoría gramatical tienen los mismos

accidentes gramaticales, se utilizó el guión para completar aquellas posiciones que

quedan vacías, ya que es importante el orden de los códigos porque existen

codificaciones que comparten la misma letra.

A continuación se muestran los rasgos particulares previstos para cada etiqueta

gramatical:

Page 41: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

31

1) Verbos.

Rasgos recurrentes:

• Persona.

• Número.

Rasgos particulares:

. 3Tabla 3.3. Rasgos particulares del verbo.

Forma no personal Modo verbal Tiempo verbal Etiqueta Significado Etiqueta Significado Etiqueta Significado

I Infinitivo D Indicativo R Presente G Gerundio J Subjuntivo A Imperfecto C Participio R Imperativo P Indefinido

8 Pendiente de especificar (D/R) U Futuro

9 Pendiente de especificar (J/D) C Condicional

Ejemplos:

Mañana trabajarán sólo hasta las cuatro.

La etiqueta gramatical de la palabra trabajarán es Ver.

Los accidentes gramaticales de este verbo son: el modo verbal es indicativo, el

tiempo del verbo es futuro, la persona es segunda persona y el número es plural. Por

lo tanto, el código para este verbo es –DU2P.

¿Crees que puedes hacerlo? La etiqueta gramatical de la palabra crees es Ver.

Los accidentes gramaticales de este verbo son: el modo verbal es indicativo, el

tiempo del verbo es presente, la persona es segunda persona y el número es

singular. Por lo tanto, el código para este verbo es –DR2S.

Page 42: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

32

2) Sustantivos.

Rasgos recurrentes:

• Género.

• Número.

Rasgos particulares:

. 4Tabla 3.4. Rasgos particulares de los sustantivos.

Tipo de nombre Tipos de nombres propios Etiqueta Significado Etiqueta Significado

4 Nombre propio B Nombre de población 5 Nombre común C Apellido ? Desconocido G Accidente geográfico N Apodo O Nombre de comarca P Pronombre R Nombre registrado

Ejemplos:

Los niños juegan en la calle.

La etiqueta gramatical de la palabra niños es Sus.

Los accidentes gramaticales de este sustantivo son: el tipo de nombre es nombre

común, el género es masculino y el número es plural. Por lo tanto, el código para

este verbo es 5-MP.

Nuevos ataques de ETA.

La etiqueta gramatical de la palabra ETA es Sus.

Los accidentes gramaticales de este sustantivo son: el tipo de nombre es nombre

propio, el tipo de nombre propio es nombre registrado, el género es femenino y el

número es singular. Por lo tanto, el código para este verbo es 4RFS.

Page 43: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

33

3) Adjetivos.

Rasgos recurrentes:

• Género.

• Número.

• Persona (sólo para los adjetivos posesivos).

Rasgos particulares:

. 5Tabla 3.5. Rasgos particulares de los adjetivos

Tipos de adjetivos Poseedores en los adjetivos posesivos Etiqueta Significado Etiqueta Significado

C Cardinal 1 Un poseedor O Ordinal 2 Varios poseedores Q Calificativo 6 Pendiente de especificar N Indefinido P Posesivo V Verbo en participio D Demostrativo

Ejemplos:

¿Muéstrame las visitas canceladas? La etiqueta gramatical de la palabra canceladas es Adj.

Los accidentes gramaticales de este adjetivo son: el tipo de adjetivo es verbo en

participio, el género es femenino y el número es plural. Por lo tanto, el código para

este adjetivo es V--FP.

¿Quiénes son los cinco alumnos más estudiosos? La etiqueta gramatical de la palabra cinco es AdjC.

Los accidentes gramaticales de este adjetivo son: el tipo de adjetivo es cardinal, el

género es masculino y el número es singular. Por lo tanto, el código para este

adjetivo es C--MS.

Page 44: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

34

4) Pronombres.

Rasgos recurrentes:

• Persona.

• Género.

• Número.

Rasgos particulares:

. 6Tabla 3.6. Rasgos particulares de los pronombres.

Tipos de pronombres pronombres personales Caso en los pronombres

Etiqueta Significado Etiqueta Significado Etiqueta Significado D Demostrativo E Átonos C Acusativo E Personal O Tónicos D Dativo

F Cuantificador 6 Pendiente de especificar (C/D)

N Indefinido

P Impersonal pasivo

R Relativo T Interrogativo

6 Pendiente de especificar (E/P)

Ejemplos:

Me lo dirá mañana. La etiqueta gramatical de la palabra me es Pro.

Los accidentes gramaticales de este pronombre son: el tipo de pronombres es

personal, el pronombre personal es átono, el caso en el pronombre es dativo, la

persona es primera persona, el género es indefinido y el número es singular. Por lo

tanto, el código para este pronombre es EED16S.

Page 45: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

35

Tú puedes hacerlo. La etiqueta gramatical de la palabra tú es Pro.

Los accidentes gramaticales de este pronombre son: el tipo de pronombres es

personal, el pronombre personal es tónico, la persona es segunda persona, el género

es indefinido y el número es singular. Por lo tanto, el código para este pronombre es

EO-26S.

5) Artículos.

Rasgos recurrentes:

• Género.

• Número.

Para esta categoría gramatical no se encontraron rasgos particulares.

Ejemplos:

Los nuevos libros. La etiqueta gramatical de la palabra los es Art.

Los accidentes gramaticales de este artículo son: el género es masculino y el número

es plural. Por lo tanto, el código para este artículo es MP.

Las grandes empresas. La etiqueta gramatical de la palabra las es Art.

Los accidentes gramaticales de este artículo son: el género es femenino y el número

es plural. Por lo tanto, el código para este artículo es FP.

6) Locuciones.

Esta categoría gramatical carece de los rasgos recurrentes, sólo tiene rasgos

particulares:

Page 46: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

36

. 7Tabla 3.7. Rasgos particulares de las locuciones.

Tipos de locuciones Etiqueta Significado

C Conjuntiva D Adverbial P Prepositiva

Ejemplos:

Lo verá junto a la tienda.

La etiqueta gramatical de la expresión junto a la es Loc.

El único accidente gramatical de esta locución es el tipo de locución, la cual es

prepositiva para este caso. Por lo tanto, el código para esta locución es P.

Nos encontramos de vez en cuando.

La etiqueta gramatical de la expresión de vez en cuando es Loc.

El único accidente gramatical de esta locución es el tipo de locución, la cual es

adverbial para este caso. Por lo tanto, el código para esta locución es D.

7) Otras categorías.

Las categorías restantes no presentan ningún tipo de rasgo, las cuales se muestran

en la tabla 3.8.

. 8Tabla 3.8. Categorías gramaticales sin rasgos.

Categoría Etiqueta Significado

Con Conjunción Int Interjección Pre Preposición

Page 47: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

37

Ejemplos:

Es feo pero simpático. La etiqueta gramatical de la palabra pero es Con.

Pan con café. La etiqueta gramatical de la palabra con es Pre.

¡oh! La etiqueta gramatical de la palabra oh es Int.

3.2. Analizador léxico

El analizador léxico fue codificado en Java al igual que el resto del sistema. Las

principales características de este analizador son dos: cuenta con un módulo que

permite eliminar todos los caracteres de las oraciones considerados como no válidos

para el sistema, y cuenta con un módulo que permite generar las diversas formas de

etiquetar una oración en caso de existir ambigüedad léxica dentro de las palabras

que constituyen dicha oración.

3.2.1. Proceso de etiquetado

El español, al igual que otros idiomas, no presenta un orden estricto para el uso de

los signos de puntuación (coma, punto y coma, punto, comillas, puntos suspensivos,

paréntesis, etc), es por ello que, más que ayudar en el análisis sintáctico, lo hacen

más complejo debido a que los usuarios tiene cierta libertad para el uso de los signos

de puntuación.

Para hacer el análisis de las oraciones hemos considerado que las oraciones no

tendrán signos de puntuación, por lo que el analizador léxico eliminará cualquier

signo de puntuación que pueda detectar durante el análisis. Si el analizador léxico

Page 48: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 3. Diseño del analizador léxico

38

llegara a encontrar una palabra que no está definida dentro del lexicón, ésta será

etiquetada como un sustantivo no definido, y será trabajo del analizador sintáctico

determinar si su posición dentro de la oración es sintácticamente correcta.

Si el analizador léxico encuentra varios sustantivos de forma consecutiva dentro de la

oración, éstos serán etiquetados como un solo sustantivo. Esta característica del

analizador la hemos considerado porque un sujeto puede estar formado por el uso de

nombres propios y apellidos (varios sustantivos). La figura 3.2 muestra el proceso de

etiquetado de una oración.

16Figura 3.2. Proceso de etiquetado.

El analizador léxico tiene la capacidad de etiquetar y entregarle al analizador

sintáctico todas las formas posibles de etiquetar una oración; es decir, si el

analizador léxico llegara a encontrar una palabra con más de una categoría

gramatical (ambigüedad léxica), será necesario generar todas las posibles

combinaciones de etiquetado de la oración con base en las categorías gramaticales

de cada palabra, por lo que existe la posibilidad de etiquetar una oración de una, dos,

tres o hasta n formas distintas dependiendo de la ambigüedad que se presente

dentro de cada oración.

Filtrado de la oración

Oración de

entrada

Lexicón Marcado

morfológico

Etiquetado de la oración

1 cv bnzx 2- c bx vb 3- mc pqd : nbgn xvcb :- :- N

ANALIZADOR LÉXICO

Oración etiquetada

Page 49: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

39

Capítulo 4

Diseño de la base de datos del

conocimiento lingüístico

En este capítulo presentamos las características de la estructura de valencias

sintácticas para las oraciones con un énfasis particular en el español. Se diseñó e

implementó una base de datos para el manejo de patrones, en la cual se almacena

información sobre las valencias (complementos de la oración) que pueden utilizar los

verbos.

La base de datos del conocimiento lingüístico es en sí la herramienta para la

implementación del método de dependencias (MTT) en el análisis sintáctico de

oraciones. El objetivo de este capítulo es mostrar la necesidad que existe de usar no

sólo reglas gramaticales de producción para PLN, ya que éstas definen estructuras

sintácticas muy generales. Debido a que los verbos siguen patrones distintos en

base a diversas características del español, surge la necesidad de implementar de

alguna manera (a través del método de dependencias) esta información en los

sistemas de cómputo (analizadores sintácticos), para que su desempeño sea más

eficiente.

Page 50: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

40

4.1. Diversidad numérica de valencias sintácticas

En la mayoría de los libros de gramática española se define la construcción de una

oración de una forma muy general, lo cual para efectos de estudio desde un punto de

vista computacional no es suficiente, ya que los verbos tienen ciertas estructuras

internas que los condicionan funcionalmente (transitivos, intransitivos, copulativos y

unipersonales). Es por ello que existen clases funcionales de los verbos que

determinan la forma en la que se puede construir una oración. Ese funcionamiento

distinto hace que cada verbo tenga su modo particular de combinarse con otras

palabras dentro de la oración, y es por ello que los analizadores sintácticos que sólo

implementan el uso de reglas gramaticales de producción son muy ineficientes.

Debido a estas características para la construcción de oraciones en español, el

método de dependencias considera que existe una semejanza con la formación de

moléculas, a partir de átomos, en la química; es decir, al igual que los átomos, las

palabras también tienen valencias que permiten combinarse con un cierto número y

clase de palabras para formar piezas más grandes de material lingüístico.

Consideremos un ejemplo en donde podemos decir en correcto español que:

a) Oswald mató a John F. Kennedy en 1963.

Pero no es correcto decir:

b) La señora Kennedy madre nació a John F. en 1917.

Como podemos observar en el ejemplo anterior, el verbo nacer no permite la misma

construcción que el verbo matar. Por lo que las características que observamos

anteriormente de los verbos, nos permite saber cuántas valencias puede tener un

verbo. La tabla 4.1 muestra un ejemplo con verbos que utilizan distintas valencias.

Page 51: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

41

. 9Tabla 4.1. Diversas valencias sintácticas de verbos.

No. de valencias Ejemplo 0 Nieva 1 Pedro falleció 2 Juan trabajó con Pedro 3 Luis escribe una carta a María 4 Luis compra unas flores para María en 80 pesos 5 Luis renta un departamento para María por un año en 10,000

pesos

4.2. Ejemplo de patrones de manejo sintáctico para verbos

Los patrones de manejo sintáctico proporcionan información acerca de los tipos de

complementos que puede tener cada verbo, al mismo tiempo indican si las valencias

necesitan o no una preposición para su implementación, mostrando cuáles son las

preposiciones usadas para cada valencia si es que procede.

Dependiendo de la clase funcional del verbo que se esté utilizando en una oración,

éste puede trabajar con diferentes valencias; es decir, si un verbo utiliza cuatro

valencias dentro de una oración esto no significa que siempre será así, o viceversa,

si un verbo aparece con una valencia en una oración no significa que no pueda

utilizar más valencias dentro de otra oración. A continuación mostramos ejemplos de

oraciones que utilizan verbos con distintas valencias:

1) Verbos sin valencia.

Son aquellos verbos que sólo se conjugan en tercera persona del singular, conocidos

también como verbos unipersonales, por ejemplo: granizar, nevar, helar, amanecer,

anochecer, obscurecer, etc. Se trata de un pequeño repertorio de verbos referentes a

fenómenos meteorológicos o astronómicos y su principal característica sintáctica es

que carecen de sujeto.

Page 52: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

42

2) Verbos con una valencia.

Algunos verbos del español de tipo intransitivo tienen únicamente la valencia que

corresponde al sujeto, por ejemplo el verbo cojear.

a) ¿Quién cojea?

La valencia sintáctica es quién.

b) Juan cojea. La valencia sintáctica es Juan.

c) El perro cojea.

La valencia sintáctica es el perro.

Los verbos intransitivos no admiten el objeto directo ni pueden asumir la forma

pasiva. Pero al igual que algunos transitivos, pueden tener objeto indirecto y algunos

otros adjuntos [16] que permiten agregarle otras valencias, y es por ello que algunos

verbos intransitivos pueden tener más de una valencia.

3) Verbos con dos valencias.

Los verbos copulativos (sólo hay tres: ser, estar y parecer) son verbos que sirven de

cópula, o sea de unión entre un sujeto y un predicativo [16], por ejemplo:

a) Los chicos son trabajadores.

Las valencias sintácticas son los chicos y trabajadores.

b) La casa blanca parece una mansión.

Las valencias sintácticas son la casa blanca y una mansión.

4) Verbos con cuatro valencias.

A diferencia de los verbos intransitivos, los transitivos pueden tener un receptor

gramatical (otra valencia) denominado objeto directo. Estos verbos son los únicos

Page 53: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

43

que aceptan una construcción pasiva dentro de las oraciones. En muchas lenguas

europeas, el complemento directo se une al verbo directamente, sin el uso de

preposiciones [6]; sin embargo, en el español existen dos posibles formas de unir el

complemento directo. Por lo general los sustantivos inanimados se unen de forma

directa con el verbo, mientras que los sustantivos animados utilizan la preposición a

para unir el complemento directo con el verbo. Los siguientes ejemplos muestran

verbos que utilizan cuatro valencias.

a) Carlos ayer quebró la ventana con el martillo.

Las valencias sintácticas son Carlos, ayer, la ventana y con el martillo.

b) Juan escribe en su casa una carta para María.

Las valencias sintácticas son Juan, en su casa, una carta y para María.

5) Verbos con cinco valencias.

La mayoría de los verbos que utilizan cinco valencias son transitivos; sin embargo,

no es muy usual entre las personas la construcción de estas oraciones, por lo

general, la mayoría de las oraciones que las personas utilizan tiene entre una y tres

valencias. Ejemplo de verbos con cinco valencias:

a) Juan vendió su auto a su tío en 20,000 pesos el año pasado.

Las valencias sintácticas son Juan, su auto, a su tío, en 20,000 pesos y el año

pasado.

b) Pedro rentó un departamento para su hermana en Guadalajara durante un

año.

Las valencias sintácticas son Pedro, un departamento, para su hermana, en

Guadalajara y durante un año.

Page 54: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

44

4.3. Diseño general de la base de datos

Esta tesis está enfocada al análisis de aquellas oraciones que creemos que en algún

momento dado pueden tener una equivalencia con las oraciones de SQL tales como

las oraciones imperativas e interrogativas. (Actualmente en el CENIDET se está

desarrollando una tesis doctoral denominada “Traductor de lenguaje natural español

a SQL para un sistema de consultas a base de datos”.) La mayoría de los verbos que

se utilizan para la construcción de oraciones interrogativas e imperativas manejan

entre una y tres valencias; sin embargo, la base de datos del conocimiento lingüístico

fue diseñada de forma general, es decir, con la capacidad de almacenar los patrones

de cualquier verbo. Con el objetivo de que el sistema pueda analizar cualquier tipo de

oración simple aun cuando ésta no se encuentre dentro del subconjunto de oraciones

que nos interesan.

Algunas de las características importantes de los verbos que hemos tomado en

cuenta para la creación de la base de datos son: el tiempo del verbo, la clase

funcional del verbo, la ambigüedad semántica de algunos verbos y la existencia de

grupos de verbos que comparten los mismos patrones. A continuación exponemos

los motivos que muestran la importancia de los aspectos mencionados

anteriormente:

1) Hemos observado que en base al tiempo en el que se encuentre conjugado un

verbo el número de valencias puede cambiar. Por ejemplo, el verbo trabajar en

presente puede llevar dos valencias, pero cuando es conjugado en otro tiempo

como puede ser en pretérito, surge la necesidad de implementar una valencia

más (no es obligatorio su uso), correspondiente al tiempo y que a nivel sintáctico

es conocida como complemento circunstancial. Los siguientes ejemplos ilustran

este fenómeno sintáctico.

a) Juan trabaja en México.

b) Juan trabajó en México hace 3 años.

Page 55: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

45

2) Ya hemos visto en la sección anterior (en la sección 4.2.), que la clase funcional

es un aspecto importante para el manejo de patrones, en base a lo cual podemos

saber cuántas valencias puede llevar un verbo. Por ejemplo, los verbos

clasificados como unipersonales no tienen valencias, mientras que los verbos

clasificados como transitivos peden tener distintas valencias. Éste es otro aspecto

que se tomó en cuenta durante el diseño de la base de datos del conocimiento

lingüístico.

3) Otra característica importante del español es la polisemia que un verbo pueda

tener. Esto puede ocasionar que un verbo maneje distintos patrones dependiendo

del significado que tenga en una oración. Por ejemplo, el verbo enajenar tiene dos

significados distintos: vender y enloquecer dependiendo del contexto en que se

maneje. Si consideramos que enajenar es enloquecer, podemos escribir la

siguiente oración: Juan se enajenó, en la cual el verbo tiene una valencia; pero si

tomamos el significado de vender, podemos escribir: Juan enajenó libros en 30

pesos, en donde el verbo de esta oración posee tres valencias.

4) Otro punto importante que se tomó en cuenta, fue considerar que algunos verbos

tienen los mismos patrones que otros verbos o patrones similares. Esto con la

finalidad de optimizar el manejo de patrones dentro de la base de datos. Para ello

se analizó el comportamiento de las personas; es decir, si una persona

desconoce el significado de un verbo, lo más seguro es que no sabrá cuáles son

los patrones para ese verbo y como consecuencia no podrá construir una oración

con dicho verbo; sin embargo, al momento de saber el significado del verbo

consideramos que los seres humanos hacen un tipo de relación con aquellos

verbos que son sinónimos de éste, lo que implica que las personas puedan

construir una oración con el patrón adecuado para dicho verbo. Consideramos

que este aspecto que hemos tomado en cuenta dentro del diseño de la base de

datos, facilita el proceso del llenado automático de los patrones de cada verbo.

Page 56: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

46

La base de datos del conocimiento lingüístico para el manejo de patrones está

implementada en PostgreSQL 7.2.1 y consta de cuatro tablas como lo muestra la

figura 4.1. La tabla denominada verbos contiene tres columnas: una columna para la

clave primaria (denominada claveverbo), una columna para introducir los verbos en

infinitivo (denominada verbo) y una columna que permite clasificar los verbos como

impersonales, copulativos, transitivos e intransitivos (denominada clasefuncional).

Esta tabla está relacionada con la tabla combinaciones. La relación que existe entre

estas tablas es de uno a muchos (1-N).

17Figura 4.1. Diseño de la base de datos del conocimiento lingüístico.

La tabla denominada oraciones contiene dos columnas: la primera columna

(tipooracion) permite manejar una clave primaria, y la segunda (estructuraoracion)

permite definir si la oración está en forma activa, pasiva o imperativa. Al igual que la

tabla anterior, la información que proporciona esta tabla es necesaria para

determinar los patrones de cada verbo. El tipo de relación que existe entre esta tabla

y la tabla combinaciones es de uno a muchos (1-N).

Page 57: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 4. Diseño de la base de datos del conocimiento lingüístico

47

La tabla combinaciones, también conocida como tabla de trabajo, contiene columnas

para los diez tiempos que existen en el español y permite establecer las relaciones

de las tablas mencionadas anteriormente. Con la finalidad de determinar los patrones

para cada verbo, estos patrones se encuentran almacenados en la tabla denominada

patrones.

Los patrones proporcionan información acerca de las valencias que puede tener

cada verbo, al mismo tiempo indican si las valencias necesitan o no una preposición

para su implementación, mostrando cuáles son las preposiciones usadas para cada

valencia si es que procede. La relación que existe entre esta tabla y la tabla

combinaciones es de uno a muchos (1-N).

Dentro de la tabla de patrones se manejan distintos caracteres especiales (símbolos)

con la finalidad de facilitar la representación de los patrones de cada verbo. La tabla

4.2 muestra dichos caracteres.

. 10Tabla 4.2 Caracteres especiales de la tabla de patrones.

Símbolo Descripción Ejemplo [ ] Indican que un verbo puede o no llevar

la valencia que se encuentre dentro de los corchetes.

Ver CD [CC]

( ) Los paréntesis se utilizan cuando una valencia puede ser introducida a través de distintas preposiciones. Se utiliza la coma para separar cada preposición.

SMB1 S Ver CD CI(con,para,a) SMB2

# Este símbolo se utiliza para indicar que una valencia puede introducirse sin utilizar una preposición. Si la valencia nunca utiliza preposiciones no es necesario utilizar este símbolo.

SMB1 S Ver CD(a,#) SMB2

Page 58: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

48

Capítulo 5

Diseño del analizador sintáctico

El objetivo de este capítulo es presentar la arquitectura del analizador sintáctico, y el

proceso que se realiza durante el análisis sintáctico de una oración. Para tal efecto

se consideró el uso de dos fuentes distintas del conocimiento lingüístico, a las cuales

nos estaremos refiriendo durante el desarrollo de este capítulo. La principal fuente

del conocimiento lingüístico está relacionada con el método de dependencias; en el

capítulo 4 se presentó una amplia descripción de este método. Las reglas

gramaticales de producción son la segunda fuente del conocimiento lingüístico; en la

sección 5.3 se muestra el compendio de reglas de producción consideradas para

llevar a cabo las pruebas del sistema.

Como se mencionó anteriormente (en la sección 2.1), la sintaxis trata sobre la

correcta combinación de las palabras dentro de una oración. Es por ello que el

objetivo del analizador sintáctico es determinar si la relación que existe entre las

palabras de una oración es correcta, en base a la función que desempeña cada

palabra dentro de la oración. Dentro de este trabajo no se considera verificar la

Page 59: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

49

concordancia de género y número entre palabras; sin embargo, el sistema incluye

dicha información morfológica para que en un proyecto posterior se lleve a cabo esta

labor.

5.1. Algoritmo de Earley

Para la codificación del analizador sintáctico se utilizó el algoritmo de Earley. Como

resultado de su tesis doctoral, J. Earley [17] diseñó e implementó el primer algoritmo

de análisis gramatical basado en la idea de una tabla o chart activa. Esta tabla activa

no está rellena de símbolos sino de reglas activas parcialmente reconocidas y de

reglas completas. El algoritmo desarrollado por Earley podía reconocer cadenas de

símbolos pertenecientes a un lenguaje representable mediante una gramática

independiente de contexto sin restricciones de formato o eliminación de las cadenas

vacías [18]. Este algoritmo es más eficiente para PLN que los algoritmos descritos en

la sección 2.2.

La eficiencia de este algoritmo es proporcional al cubo de la longitud de cada oración

de entrada, y dependiendo de la ambigüedad que se tenga dentro de la gramática, el

tiempo medio puede ser reducido a cuadrático e incluso lineal [17].

El algoritmo de Earley está conformado básicamente por tres operaciones:

1) Predecir. Si tenemos un estado {A ... •B ..., i} entonces necesitaremos

desarrollar B, y por tanto, debemos recorrer la regla del tipo B ... para

predecir lo que buscamos.

2) Completar. Si hemos llegado a un estado completo {B ... •, i}, algún estado

previo debe haber predicho B y necesitará que le avancemos el puntero •

quedando {A ... B • ..., i}.

3) Avanzar. Una vez realizadas todas las posibles predicciones de símbolos

terminales, debemos comprobar que la cadena de entrada posee alguno de

ellos y avanzar el puntero correspondiente del elemento {A ... a • ..., i}.

Page 60: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

50

A continuación presentamos una descripción del algoritmo de Earley en su forma

básica [18]:

1) Inicializar algoritmo. Para cada regla con símbolo inicial O --> ...

Crear una nueva arista Nuevo = AñadirElemento({O --> ·...,0},Tabla[0]) Fin Para

2) Realizar iteraciones de predecir y completar.

Realizar Nuevo = 0 Si elemento {A --> ...·B...,0} de Tabla[0]

Para cada regla B --> ... Crear una nueva arista Nuevo = AñadirElemento({B --> ·...,0},Tabla[0])

Fin Para Fin Si Si elemento {A --> ... ·,0} de Tabla[0]

Para cada regla {B --> ...·A...,0} de Agenda[0] Crear una nueva arista Nuevo = AñadirElemento({B --> ...A·...,0},Tabla[0])

Fin Para Fin Si

Mientras Nuevo = 1

3) Realizar iteraciones de avanzar, completar y predecir. Para cada elemento añadido

Nuevo = 0 Para cada regla {A --> ...·a...,i} de Agenda[j-1]

Si a pertenece a Entrada[j] Crear una nueva arista Nuevo = AñadirElemento({A --> ...a·...,i}, Tabla[j])

Fin Si Fin Para Si Nuevo = 0

Devolver ERROR Fin Si

Realizar Nuevo = 0 Si elemento {A --> ...·B...,i} de Tabla[j]

Para cada regla B --> ... Crear una nueva arista Nuevo = AñadirElemento({B --> ·...,j},Tabla[j])

Fin Para Fin Si Si elemento {A --> ... ·,i} de Tabla[j]

Para cada regla {B --> ...·A...,k} de Agenda[i]

Page 61: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

51

Crear una nueva arista Nuevo = AñadirElemento({B --> ...A·...,k},Tabla[j])

Fin Para Fin Si

Mientras Nuevo = 1 Fin para Si existe algún elemento {O --> ... ·,0} en Tabla[N]

Devolver BIEN Si no existe

Devolver ERROR Fin Si

La representación gráfica del algoritmo de Earley se hace mediante un grafo dirigido.

Los vértices representan posiciones entre las palabras y están numerados desde 0

hasta n, en donde n es el número de palabras que constituyen la oración, mientras

que las aristas representan reglas gramaticales.

18Figura 5.1. Grafo cíclico permitido.

19Figura 5.2. Grafo cíclico no permitido.

20Figura 5.3. Grafo cíclico no permitido.

En la figura 5.1 se muestra un ciclo en el grafo. Este ciclo sí es permitido en el

algoritmo de Earley; sin embargo, los ciclos que se muestran en las figuras 5.2 y 5.3

no son permitidos.

Como se mencionó anteriormente las aristas representan las reglas gramaticales que

se están aplicando, y el punto que se introduce en el lado derecho de estas reglas

nos indica el grado en el que cada una de ellas ha sido confirmada, lo cual da lugar a

aristas activas y aristas inactivas. Las aristas activas son aquéllas que contienen una

Page 62: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

52

o más hipótesis por confirmar y esto se puede observar cuando el punto se

encuentra del lado izquierdo de algún símbolo terminal o no terminal; mientras que

las aristas inactivas contiene hipótesis confirmadas, y por lo tanto el punto se

encuentra al final de la regla gramatical.

Para ilustrar lo anterior consideremos el siguiente ejemplo: Supongamos que

deseamos analizar la siguiente oración “Juan vio un gato con un telescopio”, y para

ello contamos con las siguientes reglas gramaticales:

1) O S FV CD CI

2) O S FV CD

3) S Sus

4) FV Ver

5) CD Art Sus

6) CD Art Sus CE

7) CI Pre Art Sus

8) CE Pre Art Sus

Supongamos que la oración ya fue etiquetada por el analizador léxico, y por lo tanto

el algoritmo de Earley trabajará con las categorías gramaticales de la oración

etiquetada: “Sus Ver Art Sus Pre Art Sus”. Para comenzar a trabajar con este

algoritmo, es necesario que el grafo contenga tanto aristas activas como aristas

inactivas, por lo que el primer paso es predecir cuáles son los símbolos terminales y

aplicar todas las reglas de producción que contengan el símbolo inicial. En nuestro

caso el símbolo inicial es O, como lo muestra la figura 5.4.

En la figura 5.4 podemos observar cómo se inicializa el algoritmo de Earley. Como en

este caso se tienen dos reglas que permiten construir una estructura sintáctica para

la oración, el algoritmo debe generar dos aristas activas que salen del vértice cero y

llegan al mismo vértice, cada una con su respectiva regla de producción. El siguiente

Page 63: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

53

paso es aplicar la regla básica número uno que consiste en predecir. La figura 5.5

muestra la aplicación de esta regla.

21Figura 5.4. Grafo inicializado.

22Figura 5.5. Aplicación de las reglas básicas.

Como la hipótesis a verificar es S, es necesario crear tantas aristas como reglas de

producción existan para la formación del sujeto. Debido a que en este ejemplo sólo

tenemos una regla de producción para el sujeto y en ambas aristas activas la

hipótesis a verificar es el mismo símbolo no terminal, sólo será necesario crear una

nueva arista activa que saldrá del vértice cero y llegará al mismo vértice.

Los siguientes pasos involucran la aplicación de las reglas básicas dos y tres, las

cuales permitirán generar aristas inactivas y la comprobación de hipótesis. El

algoritmo debe buscar si existe una arista que contenga el símbolo terminal de la

hipótesis que se está analizando: S • @Sus. En este ejemplo sí existe una arista

con esa información la cual va del vértice cero al vértice uno. Esto permitirá avanzar

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

O •S FV CD CI

O •S FV CD

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

O •S FV CD CI

O •S FV CD

S •Sus

Page 64: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

54

el punto para indicar que la hipótesis ha sido verificada, lo cual provoca la creación

de una nueva arista que sale del vértice cero al vértice uno; sin embargo, como se ha

llegado a la comprobación de la regla, esta nueva arista se conoce como arista

inactiva. La figura 5.6 muestra cómo se comprueba la hipótesis generando una arista

inactiva y permitiendo que el algoritmo siga adelante.

Como se puede observar en la figura 5.6, al momento de comprobar una hipótesis se

crean nuevas aristas para continuar con el análisis sintáctico de la oración. Al

momento de comprobar la existencia de un sujeto en la oración (S), se crean nuevas

aristas las cuales remplazan a las aristas iniciales, ya que éstas contienen la

información de qué tanto se ha comprobado en la aplicación de las reglas y qué es lo

que falta.

23Figura 5.6. Aplicación de las reglas básicas.

Para una mayor claridad hemos considerado eliminar las aristas que ya no son

usadas por el algoritmo. Las siguientes figuras 5.7, 5.8, 5.9, 5.10 y 5.11 muestran

cómo se repite el proceso descrito anteriormente y presentan de forma resumida el

funcionamiento del algoritmo. El algoritmo se detiene en el momento en que se

comprueban todas las hipótesis de las aristas o hasta terminar de aplicar todas las

reglas posibles para la obtención de la estructura sintáctica de la oración.

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

O •S FV CD CI

O •S FV CD

S •Sus

S Sus•

O S •FV CD CI

O S •FV CD

Page 65: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

55

24Figura 5.7. Proceso intermedio del algoritmo de Earley.

25Figura 5.8. Proceso intermedio del algoritmo de Earley.

26Figura 5.9. Proceso intermedio del algoritmo de Earley.

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

FV •VerS Sus•

O S •FV CD CI

O S •FV CD

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

FV •Ver

S Sus•

O S FV •CD CI

FV Ver•

O S FV •CD

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

CD •Art Sus CE

S Sus•

O S FV •CD CI

FV Ver•

O S FV •CD

CD •Art Sus

Page 66: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

56

27Figura 5.10. Proceso intermedio del algoritmo de Earley.

En este ejemplo el algoritmo se detendrá hasta obtener un grafo similar al que se

muestra en la figura 5.11, en donde se puede apreciar que se obtienen dos

estructuras sintácticas para la construcción de esta oración (por simplicidad se han

omitido la mayoría de las aristas intermedias que fueron generadas durante la

aplicación del algoritmo).

28Figura 5.11. Grafo que representa una oración con dos estructuras sintácticas.

Las dos estructuras sintácticas obtenidas en este ejemplo, se encuentran

representadas por las dos aristas que van del nodo 0 al nodo 7. Después de haber

obtenido el grafo final es fácil la construcción de los árboles sintácticos de la oración.

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art

CD •Art Sus CE

S Sus•

O S FV •CD CI

FV Ver•

O S FV •CD

CD •Art Sus

CD Art •Sus

CD Art •Sus CE

CD Art Sus•

CD Art Sus •CE CE •Pre Art Sus

1 Sus 0 2 3 4 5 6 7 Ver Art Sus Sus Pre Art S Sus•

O S FV CD CI•

FV Ver•

O S FV CD•

CD Art Sus• CI Art Sus•

CD Art Sus CE•

Page 67: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

57

Es oportuno mencionar que J. M. Montero [9] realizó una tesis en la que hace un

análisis comparativo de éste y otros algoritmos para la creación de un analizador

sintáctico. Otro trabajo similar fue realizado por J. F. Quesada [19].

5.2. Diseño general del analizador sintáctico

En la figura 5.12 se muestra el diseño general de la arquitectura del analizador

sintáctico, en donde se puede observar el proceso que se realiza durante el análisis

de una oración. Primeramente, es necesario etiquetar cada una de las palabras que

conforman la oración (tokens), por lo que el analizador léxico tomará la oración de

entrada y realizará un filtrado con el objetivo de eliminar todo símbolo no válido para

el sistema, como es el caso de los signos de puntación. Una vez terminada esta fase,

la oración pasa por el proceso de etiquetado, en donde el sistema interactúa con el

lexicón para determinar la categoría gramatical de cada palabra. Si se llegara a

encontrar dentro de la oración una palabra que no esté en el lexicón, ésta será

etiquetada como un sustantivo indefinido para poder continuar con el análisis de la

oración. Dependiendo de qué tanta ambigüedad léxica se presente en esta etapa, la

oración podrá ser etiquetada de 1 o n formas distintas.

Una vez que el analizador léxico ha etiquetado la oración, el resultado es transferido

al analizador sintáctico para determinar, con base en las reglas de producción, si la

oración tiene o no una estructura sintáctica válida. Debido a la ambigüedad que

existe en los lenguajes naturales, es común que el sistema encuentre más de una

estructura sintáctica de acuerdo con las reglas de producción. En caso de no

encontrar ninguna estructura sintáctica válida, se terminará el análisis de la oración y

el sistema notificará al usuario de que la oración es incorrecta, creando un archivo

con la información utilizada durante el análisis, para que el usuario determine la

causa por la cual el sistema no pudo obtener una estructura válida para dicha

oración.

Page 68: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

58

29Figura 5.12. Arquitectura general del analizador sintáctico.

En caso de encontrar una o más estructuras sintácticas, el analizador sintáctico pasa

por la fase de filtrado de estructuras (método de dependencias), en donde el sistema

interactúa con la base de datos del conocimiento lingüístico para comparar los

patrones de la oración, con el objetivo de disminuir el número de estructuras

sintácticas previamente encontradas. El sistema da dos posibles resultados: un

mensaje de error en caso de que el sistema determine que ninguna estructura es

válida de acuerdo con los patrones, o un subconjunto de las estructuras encontradas

anteriormente.

Resultado>0

Filtrado de la oración

Oración de entrada

Reglas de producción

Conocimiento lingüístico

Filtrado de estructuras sintácticas

Lexicón

Marcado morfológico

Etiquetado de la oración

Constructor de estructuras sintácticas

1 cv bnzx 2- c bx vb 3- mc pqd : nbgn xvcb :- :- N

ANALIZADOR LÉXICO

ANALIZADOR SINTÁCTICO

Estructuras finales

Oración etiquetada

Estructuras sintácticas temporales

Error

No

Page 69: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

59

5.3. Compendio de reglas gramaticales de producción

Las reglas gramaticales constituyen el primer conocimiento que se tiene para que el

analizador sintáctico construya la estructura sintáctica de una oración. El método

basado en reglas gramaticales es uno de los más sencillos para su implementación;

sin embargo, no es muy eficiente cuando se trata de trabajar con lenguajes ambiguos

debido a que puede generar estructuras sintácticas incorrectas. Por lo que es

conveniente utilizar el método de dependencias para solventar este problema. La

finalidad de utilizar las reglas de producción o reglas gramaticales es obtener tanto

los patrones de la oración como las primeras estructuras sintácticas, las cuales serán

filtradas usando el método de dependencias.

En las tablas 5.1 y 5.2 se define la simbología utilizada para la construcción de las

reglas de producción, y en la tabla 5.3 se muestra el listado de las reglas de

producción utilizadas para llevar a cabo las pruebas del sistema. Se pretende que

con el tiempo esta lista de reglas se vaya incrementando.

11Tabla 5.1. Categoría gramatical de símbolos no terminales.

Símbolo Categoría gramatical

O Oración

S Sujeto

FV Frase verbal

CD Complemento directo

CINTD1 Primer complemento interno del complemento directo

CINTD2 Segundo complemento interno del complemento directo

CINTD3 Tercer complemento interno del complemento directo

CINTD4 Cuarto complemento interno del complemento directo

CINTD5 Quinto complemento interno del complemento directo

CI Complemento indirecto

CC Complemento circunstancial

Page 70: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

60

CINTC1 Primer complemento interno del complemento circunstancial

SUS1 Segundo sujeto u objeto de una oración (sustantivo)

CINTS1 Primer complemento interno de SUS1

12Tabla 5.2. Categoría gramatical de símbolos terminales.

Símbolo Categoría gramatical

Art Artículo

Sus Sustantivo

Adj Adjetivo

AdjO Adjetivo ordinal

Adj. Adjetivo cardinal

Pro Pronombre

Ver Verbo

Aux Verbo auxiliar

Adv Adverbio

Pre Preposición

Con Conjunción

Int Interjección

E Cadena vacía

SMB1 Símbolo de interrogación inicial

SMB2 Símbolo de interrogación final

13Tabla 5.3. Reglas gramaticales de producción.

No. Notación de las reglas gramaticales de producción

1 O = SMB1 S @FV CD SMB2

2 O = @FV CD CC

3 O = @FV CC CD

4 O = @FV CD

Page 71: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

61

5 O = SMB1 CC @FV CD SMB2

6 S = @Pro

7 FV = @Ver

8 FV = @Ver Adv

9 CD = Adj Art @Sus CINTD1

10 CD = Art @Sus Adj CINTD1

11 CD = Art @Sus CINTD1

12 CD = @Sus

13 CD = Art @Sus Adj

14 CD = @Sus CINTD1

15 CD = Adj @Sus CINTD1

16 CD = Art @Sus SUS1 CINTD1

17 CD = AdjC @Sus CINTD1

18 CD = Art Adj @Sus Adj

19 CINTD1 = Pre @Sus CINTD2

20 CINTD1 = Pre Art @Sus Adj

21 CINTD1 = Pre Art @Sus CINTD2

22 CINTD1 = Pre @Sus

23 CINTD1 = Pre Art @Sus Adj SUS1

24 CINTD1 = Pre Art @Sus Adj CINTD2

25 CINTD1 = Pre Art @Sus

26 CINTD1 = Pre Art Adj @Sus

27 CINTD1 = Pre Adj @Sus

28 CINTD1 = Pre @Sus SUS1

29 CINTD1 = Pre AdjC @Sus

30 CINTD1 = Pre @Sus SUS1 CINTD2

31 CINTD1 = Pre @Sus Adj CINTD2

32 CINTD2 = Pre Art @Sus

33 CINTD2 = Pre @Sus

34 CINTD2 = Pre AdjC Con AdjC @Sus

Page 72: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

62

35 CINTD2 = Pre Art @Sus CINTD3

36 CINTD2 = Pre @Sus Adj

37 CINTD2 = Pre Art @Sus Adj CINTD3

38 CINTD2 = Pre @Sus Adj CINTD3

39 CINTD2 = Pre AdjO @Sus SUS1

40 CINTD2 = Pre @Sus CINTD3

41 CINTD2 = Pre AdjO @Sus CINTD3

42 CINTD2 = Pre @Sus SUS1 CINTD3

43 CINTD2 = Pre Art AdjO @Sus

44 CINTD2 = Pre Art AdjO @Sus CINTD3

45 CINTD2 = Pre Art @Sus Adj

46 CINTD3 = Pre @Sus

47 CINTD3 = Pre AdjC @Sus

48 CINTD3 = Pre @Sus CINTD4

49 CINTD3 = Pre Art @Sus Adj

50 CINTD3 = Pre Art @Sus CINTD4

51 CINTD3 = Pre AdjC @Sus CINTD4

52 CINTD3 = Pre Adj @Sus

53 CINTD4 = Pre Art @Sus CINTD5

54 CINTD4 = Pre Art @Sus Adj

55 CINTD4 = Pre @Sus

56 CINTD5 = Pre @Sus

57 CC = Pre @Sus

58 CC = Pre @Sus Adj Adj

59 CC = Pre @Sus CINTC1

60 CC = @Adv

61 CC = Pre Art @Sus CINTC1

62 CINTC1 = Pre @Sus

63 CINTC1 = Pre Art @Sus AdjC

64 SUS1 = Con @Sus

Page 73: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

63

65 SUS1 = Con Adj @Sus

66 SUS1 = Con Art @Sus CINTS1

67 SUS1 = Con Pre @Sus

68 SUS1 = Con Art @Sus

69 CINTS1 = Pre Art @Sus

El símbolo arroba lo hemos introducido en las reglas de producción con la finalidad

de indicar al sistema cuál es el elemento gramatical rector en cada una de las reglas

de producción. Esto es necesario ya que, al aplicar las reglas de producción,

obtenemos árboles sintácticos de tipo constituyentes, por lo que el símbolo arroba

nos ayuda durante el proceso de conversión de estos árboles a árboles de

dependencias.

Considerando el sentido apropiado del idioma, es fácil observar que, si bien todas

estas reglas gramaticales de producción son posibles y correctas en el español, no

hemos incluido otras reglas que también son correctas en el español.

Afortunadamente el sistema le permite al usuario la posibilidad de ir agregando más

reglas de producción, para que el analizador sintáctico incremente sus conocimientos

y así poder ir abarcando cada vez más un mayor subconjunto del lenguaje español.

5.4. Diagrama de casos de uso

Para llevar a cabo el desarrollo del sistema se utilizó UML con la finalidad de hacer

un modelado del prototipo a implementar. La figura 5.13 muestra el diagrama de

casos de uso considerados en el sistema. El objetivo de este diagrama es presentar

la funcionalidad que ofrece el sistema en lo que se refiere a su interacción con el

usuario.

Page 74: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

64

30Figura 5.13. Diagrama de casos de uso.

1) Primer caso de uso. a) Nombre del caso de uso: Crear gramática.

b) Precondición: Que el usuario tenga los conocimientos necesarios para definir

reglas de producción.

c) Poscondición: Definir las reglas de producción.

d) Condición final de éxito: Una vez que el usuario ha definido las reglas de

producción, el sistema crea un archivo en donde se guarda esta información.

e) Condición final de fallo: Si el usuario no define correctamente las reglas de

producción o la ruta para guardar el archivo es incorrecta, el sistema

presentará al usuario un mensaje de error indicándole la causa del error.

Page 75: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

65

2) Segundo caso de uso. a) Nombre del caso de uso: Editar gramática.

b) Precondición: Que el usuario tenga los conocimientos necesarios para definir

reglas de producción.

c) Poscondición: Añadir, eliminar o modificar reglas de producción.

d) Condición final de éxito: Después de que el usuario realice las modificaciones

a las reglas de producción, éstas deben verse reflejadas en el archivo que

guarda dichas reglas de producción. En caso de que el usuario modifique las

reglas de producción que el sistema está usando actualmente, entonces el

analizador sintáctico deberá actualizar su información y esto se verá reflejado

en el funcionamiento del sistema.

e) Condición final de fallo: Si las modificaciones que realiza el usuario en las

reglas de producción son incorrectas (≠ contradictorias), el sistema informará

al usuario acerca del error que ha generado y le impedirá guardar las

modificaciones realizadas.

3) Tercer caso de uso. a) Nombre del caso de uso: Configurar sistema.

b) Precondición: Que el usuario tenga los conocimientos necesarios para

configurar el sistema.

c) Poscondición: Que el usuario defina la ruta del archivo que contiene las reglas

de producción e indique cuál será el símbolo inicial y la cadena vacía.

d) Condición final de éxito: Una vez que el usuario ha terminado de configurar el

sistema, las modificaciones se verán reflejadas en el funcionamiento del

analizador sintáctico, debido a que el sistema actualizará la información de las

reglas de producción a utilizar.

e) Condición final de fallo: Si la ruta del archivo de las reglas de producción es

incorrecta o el archivo no existe, el sistema notificará al usuario del error

generado y le impedirá llevar a cabo la modificación a la configuración del

sistema. Otro error que se puede presentar es cuando el usuario no define

correctamente el símbolo inicial y la cadena vacía, por lo que el sistema

Page 76: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

66

notificará al usuario el problema que se ha presentado y no le permitirá

guardar los cambios a la configuración hasta que corrija el problema.

4) Cuarto caso de uso. a) Nombre del caso de uso: Analizar oración.

b) Precondición: Que el usuario conozca el lenguaje español para que pueda

construir una oración.

c) Poscondición: Que el usuario introduzca una oración en el sistema.

d) Condición final de éxito: Cuando el sistema analiza una oración se espera

obtener como resultado la estructura sintáctica de la oración en cuestión.

e) Condición final de fallo: Si el analizador sintáctico no contara con las reglas de

producción necesarias para realizar el análisis de la oración, entonces el

sistema enviará un mensaje de error y creará un archivo con la información

necesaria para que el usuario determine la causa del error. Otra condición

final de fallo ocurriría cuando la base de datos del conocimiento lingüístico no

contara con los patrones para la oración que se está analizando, por lo que el

sistema enviaría un mensaje de error al usuario indicándole las causas por las

que el análisis de la oración ha fallado.

5.5. Diagrama de clases

El objetivo del diagrama de clases es mostrar el análisis y el diseño realizado para la

implementación del sistema. En la figura 5.14 se muestra el diagrama de clases para

el análisis de una oración y el tipo de relaciones estructurales de cada una de las

clases que fueron implementadas en el sistema.

La case VentanaMDI_Principal de la figura 5.14 pertenece al entorno gráfico del

usuario y es la que permite efectuar el análisis tanto léxico como sintáctico de una

oración. A continuación se describe de forma detallada cada una de las clases

diseñadas para el sistema.

Page 77: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

67

31Figura 5.14. Diagrama de clases del análisis de oraciones.

Sintactico. La función de esta clase es inicializar la ejecución del sistema invocando

la clase VentanaMDI_Principal a través del método main().

VentanaMDI_Pricipal. La labor de esta clase es ofrecerle al usuario una interfaz

gráfica a través del uso de los paquetes de entorno gráfico que ofrece Java. Otra

tarea de esta clase es comunicar las clases: LeeReglasGramaticales, AnalisisLexico

y AnalisisSintáctico a través del método actionPrformed().

LeeReglasGramaticales. La labor de esta clase es cargar en memoria las reglas de

producción que utiliza la clase AnalisisSintactico durante la obtención de la estructura

sintáctica de una oración. Los principales métodos de esta clase son:

VerConfiguración(), CargaReglas(), getSimboloInicial() y getSimboloVacio().

AnalisisLexico. La labor de esta clase es etiquetar cada una de las palabras que

constituyen la oración de entrada. Los principales métodos de esta clase son:

ConsutlaLexicon(), SeparaporToken(), Combinaciones(), getLongitud(),

Page 78: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 5. Diseño del analizador sintáctico

68

SeparaporTokenporTuplas(), CombnacionesTuplas(), getNoCombinciones() y

getResultado().

AnalisisSintáctico. La labor de esta clase es obtener los posibles árboles sintácticos

que pueda tener una oración. Los principales métodos de esta clase son:

AlgoritmoEraleyInicializa(), NoResultados(), getPatronX(), ImprimeenPantalla() e

ImprimeProcesoenArchivo().

Nodo. Esta clase es utilizada para la creación de cada uno de los nodos necesarios

en la generación de un árbol sintáctico. Los datos que almacena un ejemplar de la

clase nodo son: un símbolo terminal, un símbolo no terminal o una palabra de la

oración, los accidentes gramaticales si es que existen, un enlace hacia el nodo padre

en caso de no ser el nodo raíz del árbol y un enlace hacia los nodo hijos sí es que

existen. Los métodos principales de esta clase son: setIzq(), setCen(), setDer(),

setPadre(), CreaEnlacesDependencia() y RecorridoAmplitud().

Page 79: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

69

Capítulo 6

Pruebas del sistema

Para realizar la evaluación del analizador sintáctico, se recopiló un pequeño corpus

de oraciones en español. Estas oraciones fueron obtenidas de distintas personas, las

cuales tenían entre 20 y 40 años de edad y con diferentes niveles de estudio. En este

capítulo se muestra el corpus de oraciones utilizado en la fase de pruebas.

Sólo describiremos en este capítulo las pruebas realizadas con algunas oraciones

representativas de todas las pruebas realizadas (50 pruebas en total). Los casos de

prueba que hemos contemplado documentar son cuatro. Para tal efecto será

necesario primeramente presentar el escenario de pruebas utilizado para la

evaluación del sistema.

6.1. Compendio de oraciones

Durante la evaluación del analizador sintáctico, el sistema analizó cada una de las

oraciones que se presentan en esta sección, obteniéndose un resultado satisfactorio.

Page 80: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

70

1. ¿Cuál es el salario de los gobernadores de México?

2. Muéstrame todas las especialidades en ciencias de la computación en México.

3. ¿Cuál es el nombre del presidente actual?

4. Muéstrame las enfermedades más padecidas por la población mexicana en orden

alfabético descendente.

5. Muéstrame por índice de mortalidad las enfermedades del estado de Morelos.

6. Dame el expediente clínico de Juan Pérez.

7. Muéstrame la cantidad de mexicanos entre 25 y 30 años.

8. Dame los nombres de los alumnos del área de sistemas distribuidos.

9. ¿Quiénes son compañeros de Arturo?

10. ¿Cuándo nació Rosy?

11. ¿Quiénes son los amigos de Gabriel y Arturo?

12. ¿Cuál es la cotización del dólar?

13. Muéstrame los alumnos inscritos en el periodo agosto-diciembre del año 2004.

14. Muéstrame un listado de los alumnos regulares y sus promedios.

15. Muestra un listado de los alumnos dados de baja.

16. Haz un listado de los maestros por especialidad.

17. Muestra un listado de las materias por especialidad.

18. Obtén información del equipo de cómputo disponible por área.

19. Dame un reporte de los nombres completos de los alumnos mayores de 18 años.

20. Muéstrame la calificación del grupo de segundo “A” y los nombres de los

alumnos.

21. Busca el promedio general del grupo de segundo “A” del año pasado.

22. Dame los nombres de los empleados.

23. Muéstrame el registro del empleado Francisco.

24. Muéstrame la nómina de este periodo.

25. Muéstrame los departamentos de esta institución.

26. ¿Cuál es el número de personas con síndrome de Down?

27. ¿Quién descubrió América?

28. Muéstrame el nombre de las empresas extranjeras en México.

Page 81: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

71

29. Muéstrame la calificación de los alumnos de la especialidad de sistemas

distribuidos del departamento de computación.

30. ¿Cuáles son actualmente los alumnos con los mejores promedios?

31. Muéstrame los clientes mayores de 18 años.

32. Presenta un resumen de los resultados de las ventas de los empleados del año

pasado.

33. Dame el historial de los depósitos realizados en efectivo o en cheques con un

mes de antigüedad.

34. Muéstrame todos los retiros realizados en caja.

35. Dame el historial de ventas.

36. ¿Cuáles son mis transacciones de retiro y depósito del último mes?

37. Determina las ganancias de los automóviles vendidos en el primer trimestre de

este año.

38. Busca el origen y el destino de los vuelos de las aerolíneas mexicanas.

39. Dame el número telefónico de los empleados del departamento de ventas.

40. Modifica los datos del empleado José Luis Rodríguez Ortiz.

41. Elimina los registros de los empleados despedidos.

42. Muéstrame el salario del personal del departamento de ventas.

43. ¿Dónde viven los proveedores de INFOSYS?

44. ¿Cuál es el salario del gerente de la tienda de Gigante?

45. ¿Cuál es el nivel de productividad de las empresas mexicanas?

46. ¿Cuál es la estrategia de mercadotecnia de la empresa Bimbo en México?

47. ¿Cuál es el canal de distribución utilizado por la empresa Bimbo?

48. Dame una lista del inventario de los equipos de cómputo.

49. ¿Quién ganará las próximas elecciones presidenciales?

50. Muéstrame las ventas agrupadas por productos del mes de agosto.

6.2. Escenario de pruebas

El escenario de pruebas que se utilizó, está conformado por el compendio de

oraciones presentadas anteriormente (ver sección 6.1), el lexicón (ver sección 3.1), el

Page 82: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

72

cual permite etiquetar cada una de las palabras que constituyen una oración y la

base de datos del conocimiento lingüístico (ver sección 4.3). Las figuras 6.1, 6.2, 6.3,

6.4 y 6.5 muestran como ejemplo parte de la información léxica y morfológica que el

sistema utilizó para los casos de prueba.

32Figura 6.1. Información léxica y morfológica de verbos.

En la figura 6.1 se muestra parte de la información que se encuentra en la tabla de

verbos. En ella podemos observar en las columnas 1 y 2 algunos verbos y sus

etiquetas léxicas respectivas, y de la columna 3 a la 7 se tienen las claves

correspondientes a la información morfológica de cada verbo.

33Figura 6.2. Información léxica y morfológica de sustantivos.

Al igual que la tabla de verbos, en la tabla de sustantivos se tiene información léxica

y morfológica. Un problema que aún no se ha podido resolver es el poder tener en

nuestro lexicón todos los sustantivos, por lo tanto en la figura 6.2 sólo presentamos

Page 83: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

73

algunos de los sustantivos utilizados en los casos de prueba. Sin embargo, para

afrontar esta problemática el sistema supone que cualquier palabra desconocida por

el lexicón será tratada como un sustantivo indefinido y será tarea del analizador

semántico determinar si es correcta la función que desempeñan las palabras

desconocidas por el lexicón. (Nota: en esta tesis no se implementa el analizador

semántico.)

34Figura 6.3. Información léxica y morfológica de adjetivos.

La figura 6.3 muestra la información de los adjetivos que el sistema utilizó durante los

casos de prueba.

35Figura 6.4. Información léxica y morfológica de artículos.

La figura 6.4 muestra la información de los artículos que el sistema utilizó durante los

casos de prueba. La mayoría de las tablas que conforman el lexicón cuentan con

información léxica y morfológica; sin embargo, existen algunas categorías

Page 84: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

74

gramaticales que carecen de información morfológica como es el caso de las

preposiciones, las cuales se muestran en la figura 6.5.

36Figura 6.5. Información léxica de preposiciones

En las figuras 6.6, 6.7, 6.8 y 6.9 se muestra un ejemplo de la información que utiliza

el sistema de la base de datos del conocimiento lingüístico, para realizar el filtrado de

las posibles estructuras sintácticas de una oración.

37Figura 6.6. Tabla de verbos en infinitivo.

La información que proporciona la tabla de verbos es una clave primaria para cada

verbo y el tipo de clase funcional del verbo. La figura 6.7 muestra la tabla de

oraciones. La información que proporciona esta tabla es para clasificar la estructura

que pueda tener una oración con base en el tipo de verbo que se esté utilizando.

Page 85: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

75

38Figura 6.7 Tabla de oraciones.

En la figura 6.8 se muestra una tabla de trabajo denominada combinaciones, la cual

permite relacionar la tabla verbos con la tabla oraciones y la tabla patrones. Como se

puede observar en esta tabla se encuentran columnas para los diez tiempos distintos

que se manejan en español.

39Figura 6.8. Tabla de combinaciones.

Por último, presentamos en la figura 6.9 un ejemplo de la información de los patrones

que la base de datos del conocimiento lingüístico ofrece al sistema para realizar el

filtrado de estructuras sintácticas.

Page 86: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

76

40Figura 6.9 Tabla de patrones.

6.3. Caso de prueba 1. Análisis léxico y sintáctico de una oración ambigua

Cuando se realiza el análisis léxico y sintáctico de una oración, se pueden obtener

distintos resultados: un menaje de error indicando que la oración es incorrecta, una

ventana con un árbol de análisis sintáctico o varias ventanas dependiendo de la

ambigüedad léxica y sintáctica que se pueda tener dentro de la oración en cuestión.

Considerando el modo del verbo, la oración que utilizaremos en este caso de prueba

es de tipo imperativo:

“Dame el expediente clínico de Juan Pérez.”

Los resultados que esperamos obtener para el análisis de esta oración son los

siguientes:

1. Un etiquetado léxico de la oración con las siguientes categorías gramaticales:

Ver Art Sus Adj Pre Sus.

2. Una única estructura sintáctica de la oración conformada por un verbo y un

complemento directo.

Al introducir la oración en el sistema, el analizador léxico etiquetó la oración en base

a los resultados previstos como lo muestra la figura 6.10. Primeramente el analizador

Page 87: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

77

léxico etiqueta cada palabra por separado y posteriormente busca si varias palabras

pueden ser etiquetadas como un solo token, en este caso el sistema etiquetó Juan

como un sustantivo y Pérez como otro sustantivo, sin embargo en una fase posterior

el sistema determinará que Juan Pérez es un solo sustantivo.

41Figura 6.10. Caso de prueba 1: Etiquetado léxico de una oración.

Una vez terminada la labor del analizador léxico, el analizador sintáctico toma la

oración etiquetada para aplicarle las reglas de producción. En base a este

conocimiento lingüístico, el sistema determina que existen dos estructuras sintácticas

posibles para la oración. Posteriormente estas estructuras son comparadas con los

patrones de la base de datos del conocimiento lingüístico, en donde el sistema

determina que una estructura es incorrecta enviando un mensaje de error al usuario

e indicándole que se encontraron dos estructuras sintácticas pero que la primera es

incorrecta como lo muestra la figura 6.11.

42Figura 6.11. Caso de prueba 1: Mensaje de error del analizador sintáctico.

Page 88: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

78

La estructura sintáctica de la oración que el sistema considera como correcta, es la

misma que habíamos considerado en los resultados esperados. El resultado es

presentado en formato de texto como lo muestra la figura 6.12; sin embargo, el

usuario tiene la opción de ver este resultado de forma gráfica.

43Figura 6.12 Caso de prueba 1: Resultado del analizador sintáctico en formato de texto.

Podemos observar en la parte superior izquierda de la ventana interna de la figura

6.12 que el analizador léxico etiquetó la oración de forma correcta. La información

que el usuario puede observar del análisis sintáctico en esta ventana es: identificador

de nodo, contenido del nodo, identificador del nodo del que desciende, identificador

del nodo rector, identificadores de los nodos hijos y accidentes gramaticales de las

palabras que constituyen la oración. La información que se presenta en esta ventana

se obtiene del árbol sintáctico de dependencias y el árbol sintáctico de

constituyentes.

Page 89: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

79

En la parte inferior derecha de la ventana interna, se encuentra un botón con la

leyenda “graficar”, como lo muestra la figura 6.12, el cual le permite al usuario ver de

forma gráfica el árbol sintáctico de la oración. Las figuras 6.13 y 6.14 muestran de

forma gráfica el árbol sintáctico de dependencias y el árbol sintáctico de

constituyentes respectivamente.

44Figura 6.13. Caso de prueba 1: Árbol sintáctico de dependencias.

45Figura 6.14. Caso de prueba 1: Árbol sintáctico de constituyentes.

En este caso de prueba los resultados obtenidos fueron iguales a los resultados

esperados.

Page 90: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

80

6.4. Caso de prueba 2. Configuración y uso de una nueva gramática

Si el usuario del sistema en un momento dado desea definir su propia gramática, el

sistema le permite realizar esta labor sin mucha complejidad (ver manual de usuario

en anexo A). Supongamos que el usuario quiere utilizar nuevas reglas de producción

pero no desea modificar las reglas del sistema, entonces deberá utilizar la opción

Nueva gramática del menú Herramientas o el icono de acceso rápido. La figura 6.15

muestra la ventana en donde el usuario puede definir sus propias reglas de

producción.

46Figura 6.15. Caso de prueba 2: Definición de nuevas reglas de producción.

Como el objetivo de este caso de prueba es demostrar que el sistema es flexible y

dinámico, crearemos un pequeño archivo con pocas reglas de producción para

realizar el análisis de una oración. Las reglas que hemos definido para este ejemplo

son las siguientes:

Page 91: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

81

1) Oración = @FV CD

2) FV = @Ver

3) CD = Art @Sus Cmp1

4) Cmp 1 = Pre Art @Sus Cmp 2

5) Cmp 2 = Pre Art @Sus Cmp 3

6) Cmp 3 = Pre Art @Sus Cmp 4

7) Cmp 4 = Pre Art @Sus Adj

8) Cmp 4 = @Cadena_Vacía

Una vez que se han definido las reglas de producción, es necesario configurar el

sistema para indicarle en dónde se encuentran las reglas de producción que debe

utilizar durante el análisis sintáctico de una oración e indicarle cuál será el símbolo

inicial y la cadena vacía de estas nuevas reglas de producción. Para modificar la

configuración del sistema, se utiliza la opción Configurar sistema… del menú Archivo

o el icono de acceso directo. La figura 6.16 muestra la ventana en donde el usuario

realiza la configuración.

47Figura 6.16. Caso de prueba 2: Ventana para configurar el sistema.

Como se puede observar en la figura 6.16, el usuario puede volver a utilizar la

configuración predefinida del sistema y retomar las reglas de producción originales

cuando lo desee. Por el modo del verbo, la oración que utilizaremos en este caso de

prueba es de tipo imperativo:

“Presenta un resumen de los resultados de las ventas de los empleados del año

pasado.”

Page 92: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

82

Los resultados que esperamos obtener para el análisis de esta oración son los

siguientes:

1. Debido a que en este caso de prueba utilizamos muy pocas reglas de

producción, no se presentará ningún tipo de ambigüedad sintáctica.

2. El analizador léxico deberá etiquetar la oración de la siguiente forma: Ver Art

Sus Pre Art Sus Pre Art Sus Pre Art Sus Pre Art Sus Adj.

3. El analizador sintáctico deberá obtener una única estructura para esta oración.

Al introducir la oración en el sistema, el analizador léxico etiquetó la oración en base

a los resultados previstos como lo muestra la figura 6.17. Como la palabra del está

compuesta por una preposición y un artículo, el sistema primeramente descompone

esta palabra en sus elementos básicos para etiquetarlas posteriormente.

48Figura 6.17. Caso de prueba 2: Etiquetado léxico de una oración.

Page 93: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

83

Una vez que el analizador léxico termina su labor, el analizador sintáctico aplica las

reglas de producción para analizar la estructura sintáctica de la oración y así poder

compararla con los patrones de la base de datos del conocimiento lingüístico. El

resultado obtenido fue el mismo que el resultado esperado como lo muestran las

figuras 6.18 y 6.19, las cuales corresponden al árbol sintáctico de dependencias y de

constituyentes respectivamente de la oración. En este caso de prueba hemos omitido

por simplicidad la vista en formato de texto.

49Figura 6.18. Caso de prueba 2: Árbol sintáctico de dependencias.

50Figura 6.19. Caso de prueba 2: Árbol sintáctico de constituyentes.

Page 94: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

84

En este caso de prueba los resultados obtenidos fueron iguales a los resultados

esperados.

6.5. Caso de prueba 3. Análisis léxico y sintáctico de una oración

Considerando el modo del verbo, la oración que utilizaremos en este caso de prueba

es de tipo imperativo:

“Obtén un listado de los maestros por especialidad.”

Los resultados que esperamos obtener para el análisis de esta oración son los

siguientes:

1. Dos etiquetados léxicos de la oración con las siguientes categorías

gramaticales: Ver AdjC Sus Pre Art Sus Pre Sus y Ver Art Sus Pre Art Sus Pre

Sus.

2. Dos estructuras sintácticas de la oración conformadas por un verbo y un

complemento directo.

Al introducir la oración en el sistema, el analizador léxico etiquetó la oración en base

a los resultados previstos como lo muestra la figura 6.20. Como se presentó una

ambigüedad léxica con la palabra un, existe la posibilidad de obtener más de una

estructura sintáctica.

Como se puede observar en la figura 6.20, el analizador léxico etiquetó la palabra un

como un articulo y como un adjetivo de tipo cardinal, y será trabajo del analizador

sintáctico determinar cuál de las dos etiquetas es correcta.

Page 95: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

85

51Figura 6.20. Caso de prueba 3: Etiquetado léxico de una oración.

Una vez que el analizador léxico ha terminado su labor, el analizador sintáctico toma

la primera forma de etiquetar la oración y determina con base en las reglas de

producción que existen dos estructuras sintácticas para la oración, las cuales son

comparadas con la base de datos del conocimiento lingüístico de donde el sistema

determina que la primera estructura sintáctica que encontró es incorrecta, mientras

que la segunda sí es correcta. Posteriormente el analizador sintáctico toma la

segunda forma de etiquetar la oración y encuentra que, de acuerdo a los patrones de

producción, existen dos posibles estructuras sintácticas para la oración, las cuales se

compraran con los patrones de la base de datos del conocimiento lingüístico para

determinar si ambas son válidas; también en este caso el sistema vuelve a indicar

que la primera estructura sintáctica es incorrecta presentando al usuario un total de

dos estructuras sintácticas para la oración en lugar de mostrar cuatro posibles

estructuras sintácticas. La figura 6.21 muestra en formato de texto las dos

estructuras sintácticas para la oración, mientras que en las figuras 6.22 y 6.23 se

muestra el árbol de dependencias de cada una de las estructuras sintácticas

obtenidas.

Como se puede ver en la figura 6.22 y 6.23, los árboles de dependencias obtenidos

son iguales. Esto se debe a que la única diferencia que existe entre ellos es la forma

en que está funcionando la palabra un. En la primera estructura sintáctica un

Page 96: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

86

funciona como un adjetivo que denota cantidad (ejemplo: un listado, dos listados,

etc.), y en la segunda estructura sintáctica la palabra un funciona como un artículo

indeterminado masculino, por lo que será tarea del analizador semántico

desambiguar esta oración determinando cuál es la interpretación correcta de la

palabra un para este caso.

En este caso de prueba los resultados obtenidos fueron iguales a los resultados

esperados.

52Figura 6.21 Caso de prueba 3: Resultado del analizador sintáctico en formato de texto.

Page 97: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

87

53Figura 6.22. Caso de prueba 3: Primer árbol sintáctico de dependencias.

54Figura 6.23. Caso de prueba 3: Segundo árbol sintáctico de dependencias.

6.6. Caso de prueba 4. Edición de reglas gramaticales de producción

Para este caso de prueba utilizaremos la misma oración que se utilizó en el caso de

prueba 3, pero modificando el orden de palabras, es decir, en lugar de escribir en el

sistema obtén un listado de los maestros por especialidad escribiremos:

“Obtén por especialidad un listado de los maestros.”

Page 98: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

88

Muchas personas podrían considerar que no existe ninguna diferencia entre estas

dos oraciones y en un momento dado podrían afirmar que es la misma oración; sin

embargo, para el sistema estas dos oraciones son diferentes. Es por ello que en el

lenguaje natural existe una relación de n a n, es decir, un texto puede tener varios

significados y un significado puede estar escrito de distintas formas.

Los resultados que esperamos obtener para el análisis de esta oración son los

siguientes:

1. Un mensaje de error, porque el sistema no tiene todas la reglas de producción

necesarias para analizar esta oración aun cuando el sistema sí haya podido

analizar la oración en el caso de prueba 3.

Al igual que en el caso de prueba anterior, el analizador léxico etiquetó la oración de

dos formas distintas debido a la ambigüedad léxica que existe con la palabra un. Al

tomar el analizador sintáctico el resultado del análisis léxico se encontró, en base a

las reglas de producción, una posible estructura sintáctica para cada una de las

formas de etiquetar la oración; sin embargo, el sistema presentó un mensaje de error

debido a que la estructura sintáctica encontrada no coincidió con los patrones de la

base de datos del conocimiento lingüístico, como lo muestra la figura 6.24.

55Figura 6.24. Caso de prueba 4: Mensaje de error del analizador sintáctico.

Como el analizador sintáctico toma dos resultados del analizador léxico, el mensaje

de error de la figura 6.24 aparece dos veces ante el usuario. Podemos agregar las

reglas de producción que le hacen falta al sistema para que pueda analizar este tipo

de oraciones, las reglas que debemos introducir son las siguientes:

Page 99: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

89

1) CD = Pre @Sus CINTD1

2) CINTD1 = Art @Sus CINTD2

3) CINTD1 = AdjC @Sus CINTD2

La opción Editar gramática del menú Herramientas nos permite agregar esta reglas

al sistema o a través del icono de acceso rápido (ver manual de usuario en anexo A).

Una vez agregadas estas reglas de producción en el sistema, el analizador sintáctico

muestra dos estructuras consideradas como correctas como lo muestran las figuras

6.25 y 6.26, en donde podemos ver los árboles de constituyentes correspondientes a

la oración analizada.

En este caso de prueba, al igual que en el caso de prueba 3, se encontraron dos

estructuras similares en donde el árbol de dependencias es el mismo; sin embargo,

la diferencia la podemos observar en el árbol de constituyentes, en donde podemos

ver que la palabra un puede tener dos funciones distintas: como adjetivo o artículo.

56Figura 6.25. Caso de prueba 4: Primer árbol sintáctico de constituyentes.

Page 100: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 6. Casos de prueba

90

57Figura 6.26. Caso de prueba 4: Segundo árbol sintáctico de constituyentes.

Page 101: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

91

Capítulo 7

Conclusiones y trabajos futuros

En este capítulo presentamos las conclusiones obtenidas después de haber

realizado un análisis, diseño e implementación de un analizador sintáctico para

oraciones en español usando el método de dependencias.

También deseamos mencionar en este capítulo algunos de los tantos trabajos que

faltan por realizar dentro de esta área de procesamiento de lenguaje natural,

haciendo énfasis en el idioma español, debido a que la mayoría de los trabajos que

se han realizado se encuentran enfocados para el tratamiento del inglés.

Page 102: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 7. Conclusiones y trabajos futuros

92

7.1. Conclusiones

En este trabajo se desarrolló e implementó un analizador sintáctico para las

oraciones en español usando el método de dependencias que era el principal

objetivo de esta tesis.

De manera particular se obtuvieron los siguientes resultados:

a) Se implementó un analizador sintáctico flexible y dinámico, permitiendo que

con el tiempo el sistema pueda ir incrementando sus conocimientos

lingüísticos con el objetivo de poder poco a poco abarcando un subconjunto

mayor del español.

b) Gracias a que el sistema es flexible y dinámico, cualquier usuario experto en

PLN puede agregarle o modificarle al sistema la información sintáctica con la

que actualmente cuenta, sin la necesidad de tener que trabajar con el código

fuente (Java), ni compilar nuevamente el sistema.

c) Observamos en las pruebas realizadas que, aun cuando no pudimos eliminar

la ambigüedad sintáctica que puede tener una oración, la implementación del

método de dependencias mejora notablemente la eficiencia del analizador

sintáctico.

d) Una aportación importante de esta tesis, es la mejora realizada al diseño de la

base de datos del conocimiento lingüístico, lo cual permite que un verbo

pueda tener los mismos patrones que otro verbo y además permite que los

patrones de un mismo verbo sean diferentes, dependiendo del tiempo en el

que se encuentre conjugado. Otro aspecto que contempla el diseño de la base

de datos es la existencia de verbos con polisemia, los cuales pueden manejar

patrones distintos dependiendo del contexto en el que se usen.

Page 103: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 7. Conclusiones y trabajos futuros

93

7.2. Trabajos futuros

En la actualidad existe todavía mucho qué realizar en esta área de investigación, y

aún estamos lejos de poder crear un sistema que sea capaz de entender a la

perfección a un ser humano. Algunos trabajos futuros que se pueden realizar para

complementar este trabajo son los siguientes:

1) Diseñar un sistema para la extracción automática de patrones con el objetivo

de llenar la base de datos del conocimiento lingüístico de forma automática o

semiautomática. Dicho trabajo evitará el extremadamente tedioso trabajo de

llenar de forma manual una base de datos del conocimiento lingüístico.

2) Realizar un trabajo enfocado al español que aborde toda la problemática que

existe en el tratamiento del lenguaje por computadora. El español, al igual que

otros lenguajes naturales, presenta excepciones que los sistemas de cómputo

deben poder tratar. Es por ello que surge la necesidad de realizar una tesis de

este tipo.

3) Otro trabajo futuro que se puede realizar es sobre la optimización en el

funcionamiento del algoritmo de Early. Este algoritmo es muy eficiente pero no

se consideró en su diseño que una oración pueda ser etiquetada de distintas

formas. Esto provoca una pérdida de tiempo y esfuerzo debido a que por lo

general sólo una o dos palabras pueden tener ambigüedad léxica, permitiendo

así aprovechar aquellas partes de la oración que son iguales.

4) Otro problema que existe actualmente es que las reglas gramaticales del

español no se encuentran expresadas de tal forma que sean fáciles de

implementar en un sistema de cómputo, por lo que surge la necesidad de

realizar un trabajo en donde se compile un conjunto lo más grande posible de

reglas de producción.

Page 104: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

Capítulo 7. Conclusiones y trabajos futuros

94

5) Por último, sería conveniente crear una gramática especial que permita

expresar varias reglas de producción sin la necesidad de repetir reglas

similares; es decir, en el español existe la libertad para escribir una oración

empezando con el sujeto, el verbo o el predicado, entonces en lugar de

escribir tres veces la misma regla pero en orden diferente, se debería realizar

un trabajo para definir una gramática que exprese lo mismo pero con menos

reglas.

Page 105: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

95

Referencias bibliográficas

[1] J. A. Zárate, R. A. Pazos, A. Gelbukh, “Las Ontologías como un Medio de Hacer

Portable una Interfaz en Lenguaje Natural a Base de Datos”, Ingeniería de

Software en la Década del 2000, Cartagena de Indias, Colombia, Agosto 2003,

pp. 242-244.

[2] M. Moens, “Natural Language Analysis”, University of Edinburgh, 1998, http://

ieeexplore.ieee.org/ search/basicsearch.jsp.

[3] M. Saiz, “Procesamiento del Lenguaje Natural: Presente y Perspectivas

Futuras”, Ingeniería de Software en la Década del 2000, Cartagena de Indias,

Colombia, Agosto 2003, pp. 196-198.

[4] A. V. Aho, R. Seit, J. D. Ullman, Compiladores Principios, Técnicas y

Herramientas, Addison Wesley Longman, 1998, pp. 164-264.

[5] S. V. Cavadini, “Herramientas para la Construcción de Compiladores”, 2004,

http://www.ucse.edu.ar/fma/compiladores/tools.html.

[6] S. N. Galicia, Análisis Sintáctico Conducido por un Diccionario de Patrones de

Manejo Sintáctico para Lenguaje Español, tesis doctoral, Centro de

Investigación en Computación del IPN, México, D.F., Agosto 2000.

http://www.gelbukh.com/Tesis/Sofia/tesisfinal.htm

[7] M. García Q., “Estructura Definicional Terminográfica en el Subdominio de la

Oncología Clínica”, EliEs Estudios de Lingüística Española, vol. 14, 2001,

http://elies.rediris.es/elies14/index.html#indice.

Page 106: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

96

[8] Laboratorio de Inteligencia Artificial, “Proyecto Análisis”, Universidad Politécnica

de Madrid, 2004, http://delicias.dia.fi.upm.es/areas/procesamiento_del_lenguaj_

Esp_frames.html.

[9] J. M. Montero M., “Desarrollo de un Entorno para el Análisis Sintáctico de una

Lengua Natural”, Universidad Politécnica de Madrid, España, 2004, http://

lorien.die.upm.es/~juancho/pfcs/JMMM/pfc_jmmm.pdf.

[10] A. Fernández R., “Construcción de un Sistema de Recuperación de Información

Multilingüe en la Web”, Universidad de Alicante, España, 2003, http://

www.dlsi.ua.es/projectes/srim/informacion.html.

[11] A. Ferrández, “Slot Unification Parser for Anaphora Resoultion”, 2004, http://

citeseer.ist.psu.edu/462369.html.

[12] R. A. García, Modelado Gramatical de un Subconjunto del Lenguaje Español,

tesis de maestría, Centro Nacional de Investigación y Desarrollo Tecnológico,

Cuernavaca, Mor., Mayo 2003.

[13] M. Y. Hernández P., Modelo de Interpretación de Expresiones Gráficas y de

Lenguaje Natural para una Interfaz Inteligente, Tesis de maestría, Centro

Nacional de Investigación y Desarrollo Tecnológico, Cuernavaca, Mor, Mayo

1997.

[14] N. Parada, Uso de Gramáticas de Rasgos para Reconocimiento de Oraciones

en Español, tesis de maestría, Laboratorio Nacional de Informática Avanzada

A.C., Xalapa, Ver., Diciembre 1997.

[15] J. I. Padrón, Analizador Morfológico-Sintáctico de Oraciones en Lenguaje

Español, propuesta de tesis de maestría, Centro Nacional de Investigación y

Desarrollo Tecnológico, Cuernavaca, Mor., Agosto 2001.

Page 107: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

97

[16] La Redacción OCÉANO, Gramática Práctica, editorial OCÉANO, Barcelona

España, 1999.

[17] J. Earley, “An Efficient Context-Free Parsing Algorithm”, tesis Doctoral,

University of California, Berkeley, California, Febrero 1970, pp. 94-102,

http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/cmt-55/lti/Courses/711/Class-no

tes/p94-earley.pdf.

[18] J. C. Pasamontes, “Estrategias de Incorporación de Conocimiento Sintáctico y

Semántico en Sistemas de Comprensión de Habla Continua en Español”,

Escuela Técnica Superior de Ingenieros de Telecomunicaciones, Madrid,

España, 2004, http://elies.rediris.es/elies12/cap632.htm.

[19] F. Quesada, “A General, Sound and Efficient Natural Language Parsing

Algorithm Based on Syntactic Constraints Propagation”, Centro de Información

Científica de Andalucía, Sevilla, España, 1998, http://arxiv.org/ PS_cache/cmp-

lg/pdf/9801/9801005.pdf.

Page 108: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

98

Anexo A

Manual de usuario

Page 109: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

99

Descripción del sistema

En esta sección presentamos una descripción del sistema diseñado durante el

desarrollo de esta tesis. La figura A.1 ilustra el ambiente gráfico desarrollado.

58Figura A.1. Entorno gráfico del sistema.

Como se puede observar en la figura A.1, el sistema cuenta con una barra de menú y

una barra de iconos, los cuales le permiten al usuario realizar diversas actividades.

Menú Archivo. Este menú está formado por dos opciones: Configurar sistema… y

Salir.

Page 110: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

100

Configurar sistema… Esta opción le permite al usuario indicarle al sistema

en dónde se encuentra el archivo que contiene las reglas gramaticales de

producción, así como determinar qué carácter será considerado como símbolo inicial

y cuál será considerado como cadena vacía. La figura A.2 muestra la ventana que le

permite al usuario configurar el sistema.

59Figura A.2. Ventana para configurar sistema.

Salir. Esta opción le permite al usuario terminar la ejecución del entorno del

analizador sintáctico.

Menú Ver. Este menú está constituido por tres opciones que le permiten al usuario

organizar las ventanas de distintas formas. Si el usuario desea tener el análisis

sintáctico de varias oraciones, entonces tendrá una ventana por cada resultado

obtenido durante el análisis sintáctico de las oraciones, por lo cual, el menú Ver

cuenta con las opciones Maximizar, Mosaico y Cascada.

Maximizar. Esta opción le permite al usuario maximizar la ventana que

contiene el resultado del análisis sintáctico. Si el usuario tiene más de una ventana

con resultados, sólo podrá ver una ventana a la vez.

Page 111: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

101

Mosaico. Si se tiene más de una ventana con un resultado de análisis

sintáctico, esta opción permite acomodar las ventanas de tal forma que el usuario

pueda observar todos los resultados al mismo tiempo. Entre más ventanas se tengan

el tamaño de éstas irá disminuyendo.

Cascada. Como su nombre lo indica, esta opción le permite al usuario

acomodar todas las ventanas que contengan los resultados del análisis sintáctico en

forma de cascada.

Menú Herramientas. Este menú contiene las opciones Nueva gramática y Editar

gramática, las cuales permiten respectivamente crear o modificar reglas gramaticales

de producción para que el sistema trabaje con ellas si así lo desea.

Nueva gramática. Esta opción le permite al usuario crear un archivo, el cual

contendrá un conjunto de símbolos no terminales, un conjunto de símbolos

terminales y un conjunto de reglas gramaticales. La correcta definición de las reglas

gramaticales de producción es responsabilidad del usuario y no del sistema. La figura

A.3 muestra la venta que se le presenta al usuario para realizar esta actividad.

La ventana diseñada para la definición de nuevas reglas gramaticales de producción,

está dividida en tres partes importantes. La primera parte le permite al usuario definir

los símbolos no terminales que se van a utilizar, con la finalidad de tener un mejor

control de cuáles símbolos no terminales están siendo utilizados particularmente en

este archivo; además si lo desea, el usuario puede agregar algún comentario a cada

símbolo que defina, para lo cual deberá utilizar el carácter apóstrofe y en seguida se

puede teclear la descripción del símbolo. En la segunda parte de esta ventana se

encuentran definidos por defecto todos los símbolos terminales con los que puede

trabajar este sistema, a excepción del símbolo que representa cadena vacía, el cual

Page 112: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

102

deberá ser definido por el usuario. Al igual que en la parte anterior, en esta sección

también se pueden agregar comentarios. Por último, la tercera sección está

reservada para la definición de las reglas gramaticales de producción, en donde el

usuario es el único responsable de la definición correcta de las reglas gramaticales, y

el comportamiento del sistema dependerá de la definición que el usuario realice. En

la sección de definición de reglas gramaticales de producción, sólo se podrán utilizar

los símbolos terminales y no terminales que fueron definidos previamente.

60Figura A.3. Ventana para definir nuevas reglas gramaticales.

La única limitante para la creación de las reglas gramaticales de producción, es evitar

definir reglas que tengan recursividad por la derecha. Por defecto el sistema trabaja

con un conjunto de reglas gramaticales de producción previamente definidas; sin

Page 113: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

103

embargo, si el usuario desea crear sus propias reglas gramaticales de producción,

con esta opción lo puede hacer.

Editar gramática. Esta opción le permite al usuario modificar el archivo de

reglas gramaticales de producción en caso de que lo desee. La figura A.4 muestra la

ventana en la que el usuario puede llevar a cabo esta tarea.

61Figura A.4. Ventana para editar reglas gramaticales.

Menú Ayuda. Este menú está constituido por las opciones Temas de ayuda y Acerca

de…

Page 114: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

104

Temas de ayuda. Esta opción le presenta al usuario un manual de ayuda, con

el objetivo de que éste conozca a fondo todas y cada una de las actividades que

puede realizar con el analizador sintáctico. La figura A.5 muestra la ventana que

contiene los temas de ayuda.

62Figura A.5. Ventana de ayuda del analizador sintáctico.

Acerca de… Esta opción presenta al usuario una ventana informativa, con el objetivo

de dar a conocer el lugar de origen de esta tesis, así como los nombres de las

personas que colaboraron en su desarrollo.

Page 115: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

105

Anexo B

Diagramas de secuencia

Page 116: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

106

En este anexo se presentan los diagramas de secuencia correspondientes al

diagrama de casos de uso de la figura 5.13 de la sección 5.4.

Page 117: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

107

63Figura B.1. Secuencia para crear un archivo con reglas de producción.

Page 118: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

108

Page 119: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

109

64Figura B.2. Secuencia para editar un archivo de reglas de producción.

Page 120: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

110

65Figura B.3. Secuencia para configurar el sistema.

Page 121: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

111

Page 122: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

112

Page 123: ANALIZADOR SINTÁCTICO DE ORACIONES EN ESPAÑOL … Jose... · En este trabajo describimos cómo abordamos algunos de los problemas que existen para el procesamiento de lenguaje natural;

113

66Figura B.4. Secuencia para analizar una oración.