Está en la página 1de 139

UNIVERSIDADE DE VIGO ESCOLA SUPERIOR DE ENXEERA INFORMTICA

Memoria do Proxecto Fin de Carreira que presenta

D. Vanesa Vidal Castro


para a obtencin do Ttulo de Enxeeiro en Informtica

Construccin de un analizador morfosintctico robusto.

Abril, 2009 Proxecto Fin de Carreira N: ENI-268 Director/a: Manuel Vilares Ferro Codirector/a: Juan Otero Pombo rea de coecemento: Ciencias da Computacin e Intelixencia Artificial Departamento: Informtica

Vive como si fueras a morir ma ana. Aprende como si fueras a vivir para n siempre. Mahatma Gandhi

A mi familia

Agradecimientos
Este es el momento para mostrar mi ms profundo agradecimiento a todas a aquellas personas que me han ayudado y facilitado la realizacin de este proyecto, o sea de la forma que sea. En primer lugar, a mis dos directores, Manuel y Juan, ambos han desempe ado n una excelente labor como gu y consejeros desde el principio hasta el nal del as proyecto. A Manuel, le quiero agradecer especialmente la oportunidad brindada y la conanza depositada en mi. Y a Juan, por su gran implicacin y comprensin o o prestada a lo largo de todo el proyecto, especialmente en los inicios; sin su ayuda este trabajo no habr sido posible. a A los compa eros del laboratorio: Adrin, Nieves, Fran, Mila, Mario y V n a ctor. Por ofrecerme su ayuda prestada siempre que la he necesitado y por esos buenos momentos pasados que hacen ms agradable el trabajo diario. a A mi familia, por estar siempre ah especialmente a mis padres, por el sacricio , que han realizado durante todos estos a os, por buscar siempre la mejor formacin n o para m Y a mi hermano Roberto, que siempre me ayudar en lo que est en su . a e mano. Finalmente, a todas aquellas personas que han compartido conmigo buena parte de mi vida: Bea, Estela, Leti, Mar Olalla, Pili, Patri, Rosana, ... y a las que quizs a, a no agradezco demasiado a menudo su apoyo y cari o. A mis compa eras de piso: n n Diana, Lidia y Luz por su grata compa y a todos aquellos que se alegran por m na . A todos vosotros, G R A C I A S.

Indice general
I Memoria
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11
13 13 14 14 14 15 15 16 16 25 26 30 36 36 38 38 41 41 41 42 42 43 43 43 44 44 44 44

1. Introduccin o 1.1. Identicacin del proyecto . . . . . . . . . o 1.2. Organizacin de la documentacin . . . . . o o 1.2.1. Memoria . . . . . . . . . . . . . . . 1.2.2. Manual tcnico . . . . . . . . . . . e 1.2.3. Manual de usuario . . . . . . . . . 1.3. Motivacin . . . . . . . . . . . . . . . . . . o 1.4. Contexto del proyecto . . . . . . . . . . . 1.4.1. Etiquetacin de palabras . . . . . . o 1.4.2. Preprocesador morfolgico . . . . . o 1.4.3. Modelizacin del diccionario . . . . o 1.4.4. Corrector ortogrco . . . . . . . . a 1.5. Objetivos del proyecto . . . . . . . . . . . 1.5.1. Integracin de varias herramientas . o 1.5.2. Recodicacin del corrector . . . . o 1.5.3. Correccin a errores multi-palabras o 2. Tecnolog y herramientas empleadas as 2.1. Tecnolog empleadas . . . . . . . . . as 2.1.1. C . . . . . . . . . . . . . . . . . 2.1.2. XML . . . . . . . . . . . . . . . 2.1.3. SAX . . . . . . . . . . . . . . . 2.1.4. LaTeX . . . . . . . . . . . . . . 2.2. Herramientas utilizadas . . . . . . . . . 2.2.1. NetBeans . . . . . . . . . . . . 2.2.2. Visual Paradigm . . . . . . . . 2.2.3. Kile . . . . . . . . . . . . . . . 2.2.4. Planner . . . . . . . . . . . . . 2.2.5. Kubuntu . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . .

8 3. Planicacin y presupuesto o 3.1. Planicacin del proyecto . . . o 3.1.1. Planicacin inicial . . . o 3.1.2. Planicacin real . . . . o 3.2. Presupuesto del proyecto . . . . 3.2.1. Presupuesto del proyecto

INDICE GENERAL 47 47 47 49 50 50

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

4. Conclusiones y posibles ampliaciones 53 4.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2. Posibles ampliaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

II

Manual Tcnico e
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55
57 57 58 60 60 65 68 71 75 79 82 84 85 85 86 87 96 96 97 97 98 98 99 99 100 100

5. Anlisis a 5.1. Sistema implementado . . . . . . . . . . . . . . . . . . 5.2. Estructuras de datos utilizadas por el preprocesador . 5.3. Diagrama de casos de uso global . . . . . . . . . . . . . 5.4. Caso de uso: Aplicar corrector . . . . . . . . . . . . . . 5.4.1. Aplicar correccin: Buscar correccin global . . o o 5.4.2. Aplicar correccin: Buscar correccin regional . o o 5.4.3. Aplicar correccin: Enlazar correcciones . . . . . o 5.4.4. Aplicar correccin: Revisar nuevas contracciones o 5.4.5. Aplicar correccin: Revisar nuevas expresiones . o 5.5. Caso de uso: Congurar corrector . . . . . . . . . . . . 5.6. Diagrama de clases . . . . . . . . . . . . . . . . . . . . 6. Diseo n 6.1. Diagrama de clases . . . . . . . . . 6.2. Diccionario de clases . . . . . . . . 6.2.1. Sistema corrector (s checker) 6.2.2. Parser corrector . . . . . . . 6.2.3. Preprocesador . . . . . . . . 6.2.4. Parser preprocesador . . . . 6.2.5. Corrector regional (Bureg) . 6.2.6. Corrector global (Savary) . 6.2.7. MrTagoo . . . . . . . . . . . 6.2.8. Contractions . . . . . . . . . 6.2.9. Expressions . . . . . . . . . 6.2.10. NADFA . . . . . . . . . . . 6.2.11. TOKEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

INDICE GENERAL 6.2.12. SENTENCE . . . . . . . . . . . . 6.2.13. E/S . . . . . . . . . . . . . . . . 6.3. Diagramas de secuencia para los casos de 6.3.1. Caso de uso: Aplicar Correccin . o 7. Implementacin y pruebas o 7.1. Implementacin . . . . . . . . . . . o 7.1.1. Diagrama de componentes . 7.1.2. Fichero de conguracin . . o 7.1.3. Detalles de implementacin o 7.2. Pruebas . . . . . . . . . . . . . . . 7.2.1. Pruebas de unidad . . . . . 7.2.2. Pruebas de integracin . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 100 100 102 102 109 109 109 109 111 112 112 113

III

Manual de Usuario
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

115
. . . . . . . . . . 117 117 117 117 118 118 119 120 120 122 127

8. Instalacin y ejecucin o o 8.1. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1. Requisitos hardware . . . . . . . . . . . . . . . . . 8.1.2. Requisitos software . . . . . . . . . . . . . . . . . . 8.2. Compilacin . . . . . . . . . . . . . . . . . . . . . . . . . . o 8.2.1. Compilacin de la librer del etiquetador MrTagoo o a 8.2.2. Instalacin del preprocesador . . . . . . . . . . . . o 8.3. Ejecucin del sistema . . . . . . . . . . . . . . . . . . . . . o 8.3.1. Directorio de conguracin . . . . . . . . . . . . . . o 8.3.2. Opciones de ejecucin . . . . . . . . . . . . . . . . o 8.3.3. Resultados obtenidos . . . . . . . . . . . . . . . . .

10

INDICE GENERAL

Parte I Memoria

11

Cap tulo 1 Introduccin o


1.1. Identicacin del proyecto o

Cdigo del PFC: ENI - 268 o T tulo del PFC: Construccin de un analizador morfosintctico robusto o a Alumno: Vanesa Vidal Castro Director del proyecto: Manuel Vilares Ferro Co-director del proyecto: Juan Otero Pombo Departamento: Informtica. a Area: Ciencias de la Computacin e Inteligencia Articial. o Titulacin: Ingenier Informtica. o a a

13

14

CAP ITULO 1. INTRODUCCION

1.2.

Organizacin de la documentacin o o

El cd-rom, con toda la informacin del proyecto, se organiza en dos carpetas. o Una con el software necesario para el funcionamiento de la aplicacin, salvo el cdigo o o del preprocesador, que por motivos de licencia no ha podido ser inclu do. En la otra carpeta, se incluye toda la documentacin generada a lo largo del ciclo o de vida del proyecto. Esta se organizar en las siguientes partes: memoria, manual a tcnico y manual de usuario. Para cada una de ellas detallaremos sus contenidos. e

1.2.1.

Memoria

La memoria est formada por los siguientes cap a tulos: Introduccin: Describe el origen del proyecto, el contexto en el que se sit a y o u tambin los objetivos a alcanzar. e Tecnolog y herramientas empleadas en el proyecto: Se describirn de forma as a breve las tecnolog y herramientas software que se han empleado para llevar as a cabo el proyecto. Planicacin y presupuesto: Incluye la planicacin temporal inicial y la real, o o as como la explicacin para los desajustes encontrados entre ambas. Adems, o a se detalla el presupuesto necesario para la realizacin del proyecto. Se tendrn o a en cuenta los recursos f sicos y los recursos humanos empleados. Conclusiones y posibles ampliaciones: Aqu se reexiona sobre el resultado , nal del proyecto, los problemas encontrados durante todo el desarrollo y, tambin, se incluyen una serie de reexiones a nivel personal. Adems, tambin e a e se expondrn posibles ampliaciones a acometer para mejorar el proyecto. a

1.2.2.

Manual tcnico e

El manual tcnico consta de los siguientes cap e tulos: Anlisis: Contiene la especicacin de los requisitos y se muestran los a o diagramas de secuencia, colaboracin y actividades correspondientes a dichas o especicaciones. Dise o: Se renan los diagramas inclu n dos en el anlisis para obtener un mayor a nivel de especicacin del sistema. o Implementacin o y pruebas: Aqu se incluyen algunos detalles de implementacin considerados o relevantes y las pruebas para validar el correcto funcionamiento del sistema.

1.3. MOTIVACION

15

1.2.3.

Manual de usuario

Este documento es una gu detallada de los pasos a seguir para realizar la a instalacin del sistema completo. Tambin se decriben las diferentes opciones de o e ejecucin del sistema y la interpretacin de los resultados obtenidos. o o

1.3.

Motivacin o

La era digital ha propiciado la existencia de grandes vol menes de informacin. u o A nales del 2008, se han contabilizado 186 millones de pginas web en Internet. a Esta informacin, se almacena generalmente con n determinado, por tanto deber o a ser procesada o gestionada mediante alg n tipo de herramienta. Para alcanzar estos u objetivos se emplean diferentes tcnicas y/o algoritmos centrados en las siguientes e caracter sticas: precisin y ecacia. o Existen diversos acercamientos posibles en orden a resolver este problema. En nuestro caso, hemos optado por un acercamiento basado en procesamiento del lenguaje natural (pln). El pln es una subrama de la Inteligencia Articial y de la Ling ustica Computacional que se ocupa de dise ar mecanismos ecaces computacionalmente n para la comunicacin entre personas y mquinas por medio de lenguajes de o a comunicacin humana. Esto es, se trata de crear herramientas que puedan analizar o y generar estructuras de comunicacin que los humanos utilizan habitualmente, de o manera que el usuario pueda llegar a interaccionar con el ordenador de la misma forma que lo har con un semejante. a El pln se puede aplicar a campos tan diversos como son la traduccin o automtica, la recuperacin y organizacin de la informacin, la extraccin de a o o o o informacin y res menes, la correccin ortogrca de textos, el anlisis sintctico de o u o a a a las oraciones y el reconocimiento de voz entre otros. El estudio de los lenguajes naturales se organiza, tradicionalmente, en cinco niveles de complejidad: fontica, morfolog sintaxis, semntica y pragmtica. Este e a, a a proyecto se centrar en los niveles morfolgico y sintctico del lenguaje: a o a Nivel Morfolgico: Trata de la composicin de cada palabra a partir de o o unidades de signicado ms peque as, denominadas morfemas. Dentro de ellos a n incluimos prejos, sujos, ra y exiones. ces Nivel Sintctico: Fija el papel que cada palabra juega dentro de una oracin a o en base a una estructura gramatical. Algunas de las tareas relacionadas con el pln y que abordaremos en este proyecto son la correccin ortogrca, la segmentacin y la etiquetacin de texto. o a o o

16

CAP ITULO 1. INTRODUCCION

La idea de este trabajo es combinar una serie de herramientas relacionadas con la etiquetacin del lenguaje natural, con varias tcnicas de correccin ortogrca o e o a para constru nalemente, un corrector ortogrco contextual. r, a

1.4.

Contexto del proyecto

En este cap tulo vamos a introducir el entorno en el que se va a desarrollar nuestro trabajo, antes de especicar los objetivos nales del proyecto.

1.4.1.

Etiquetacin de palabras o

El objetivo de la etiquetacin 1 del lenguaje natural es la asignacin a cada o o palabra de una marca (etiqueta 2 ) y que representa la informacin morfosintctica o a asociada al trmino. Por ejemplo, su categor (sustantivo, adjetivo, verbo, e a preposicin...) o, cuando corresponda, su gnero; n mero o la forma verbal en la o e u que se encuentra. As una etiqueta para el sustantivo mesa podr ser Scfs, que , a podr signicar sustantivo comn femenino singular. a u Para realizar la etiquetacin es necesario el uso de un diccionario que contenga o todas las unidades lxicas del lenguaje y sus posibles etiquetas 3 . Los lexicones suelen e alcanzar un tama o considerable, por lo que la estructura de datos utilizada para n su implementacin y los algoritmos de b squeda e insercin adquieren una gran o u o relevancia. Con este n, utilizaremos una estructura eciente y compacta basada en autmatas para modelar el diccionario y que fue propuesta por Daciuk [2] y Gra a o n [7]. Aunque a priori pudiese parecer una tarea sencilla, la etiquetacin es un proceso o sumamente complejo dado que los lenguajes naturales son inherentemente ambiguos. Es el caso, muy com n, de las palabras homgrafas, dnde un mismo trmino posee u o o e varias etiquetas candidatas en funcin del contexto de la frase y de su posible funcin o o en la misma. Un ejemplo de palabra homgrafa ser casa, para la que existir tres o a an potenciales etiquetas diferentes: 1. Sustantivo com n femenino singular. u 2. Tercera persona del singular del presente de indicativo del verbo casar. 3. Segunda persona del imperativo del verbo casar. Sin embargo, la base de la comunicacin humana es la eliminacin de o o ambig edades en funcin del contexto del discurso, por eso nuestro objetivo nal u o
2

Se conoce en ingls como parts of speech tagging e Denominada tag en ingls e 3 Tambin conocido como lexicn. e o

1.4. CONTEXTO DEL PROYECTO

17

es que cada palabra tenga una unica etiqueta que indique, de forma inequ voca, su funcin lxica en el texto. Existen dos posibles fuentes de informacin para ayudar o e o a tomar la decisin ms acertada en cada caso: o a El contexto en el que aparece cada palabra. Para etiquetar cada palabra se tiene en cuenta las etiquetas de las palabras contiguas. En caso de que stas sean, a su vez, ambiguas pueden considerarse otro tipo de tcnicas. Por e e ejemplo, podemos elegir las secuencias ms comunes para cada lengua. As a , en espa ol la secuencia art n culo-sustantivo-adjetivo es habitual, pero otras como art culo-preposicin-verbo no lo son. Sin embargo, tcnicas de este tipo, o e por s solas, no ofrecen los resultados esperados, dada la gran cantidad de combinaciones posibles. La consideracin de la frecuencia de aparicin de cada etiqueta para una o o palabra determinada. Aunque pueda parecer un mtodo simplista, se ha e demostrado que la eleccin de la etiqueta ms probable ha alcanzado un o a ndice de acierto del 90 % [1]. Actualmente, la mayor parte de los etiquetadores obtienen un modelo de desambiguacin a partir de un corpus 4 de entrenamiento. En consecuencia, el o rendimiento de los etiquetadores se ve afectado por toda una serie de factores de entre los que podemos considerar,por ejemplo: El tama o del corpus de entrenamiento disponible. En general, cunto mayor n a sea el texto, mejores resultados. El conjunto de etiquetas 5 . Cuantas ms etiquetas formen el conjunto, ms a a complicado ser el aprendizaje de patrones o secuencias de etiquetas. a El mbito del texto a etiquetar. El rendimiento ser mejor para aquellos textos a a cuyo mbito de conocimiento coincida con el del corpus de entrenamiento. a La presencia de palabras desconocidas. Si el texto a etiquetar pertenece al mismo mbito de conocimiento que quellos que se han utilizado en la fase a a de entrenamiento, es de esperar que el n mero de palabras sin etiqueta sea u menor. Podemos diferenciar, asimismo, varios tipos de etiquetadores en funcin de la o informacin que empleen para realizar la desambiguacin morfosintctica: o o a
Conjunto de textos cient cos o literarios, etc., que pueden servir de base para una investigacin. o 5 Se conoce como tagset en ingls. e
4

18

CAP ITULO 1. INTRODUCCION Etiquetadores contextuales: Utilizan el conocimiento ling ustico para la construccin de un modelo del lenguaje [8]. Se basan en el uso de reglas, o que generalmente se construyen manualmente. Etiquetadores estad sticos: Los modelos del lenguaje se generan automticamente mediante a el uso de inferencia estad stica, las probabilidades se calculan a partir de los datos [14]. Este tipo de etiquetador es independiente de la lengua utilizada.

Modelos de Markov Los etiquetadores estad sticos estn frecuentemente basados en Modelos de a Markov [10] y pueden considerar tcnicas adicionales, como el algoritmo de Viterbi e [16] para encontrar la secuencia de etiquetas ms probable. A continuacin, se a o describir de forma breve ambos ya que este es el modelo implementado por el a etiquetador MrTagoo [7],[6] y [5], con el que vamos a trabajar. Esta tcnica fue desarrollada por A. Markov en 1913 para modelizar secuencias e de palabras en ruso. En la actualidad, son ampliamente utilizados como herramientas estad sticas de propsito general. Formalizan la etiquetacin como un proceso o o doblemente aleatorio y parametrizable. Los parmetros se pueden establecer de a forma precisa durante el entrenamiento. El sistema se puede modelar como un conjunto nito de estados. Transcurrido un intervalo discreto de tiempo el sistema cambia de un estado a otro de acuerdo con unas probabilidades de transicin. Seg n la dependencia probab o u listica de un estado con respecto al anterior, consideramos dos propiedades para las cadenas de Markov: 1. Propiedad del horizonte limitado: La probabilidad de un estado (etiqueta) no depende de todos los precedentes, sino slo de un n mero nito de ellos. Se o u dice que una cadena de Markov es de orden n cuando utiliza n estados previos para predecir el siguiente estado. 2. Propiedad del tiempo estacionario: La probabilidad de transicin entre dos o estados i y j no depende del instante de tiempo en que nos encontremos, slo o depender de los propios estados. a Un proceso con las propiedades que acabamos de describir se denomina Modelo de Markov Observable, porque su salida es el conjunto de estados por los que pasa en cada instante de tiempo y cada estado se corresponde directamente con una observacin. o Ejemplo 1.1. Se puede utilizar un Modelo de Markov Observable para representar la evolucin de la meteorolog en una zona determinada. Para ello, asumimos que o a

1.4. CONTEXTO DEL PROYECTO

19

0,4 LLUVIOSO

0,6 0,2 NUBLADO 0,3 0,3 0,2

0,1 SOLEADO 0,8

0,1

Figura 1.1: Modelo de Markov que representa la evolucin del clima o se observa el clima una vez al d y que existen tres posibles observaciones: lluvioso, a nublado y soleado. Adems, supondremos que los tres estados tienen la misma a probabilidad de ser estado inicial. La probabilidad de observar una determinada secuencia de estados se obtiene multiplicando las probabilidades que guran en las aristas del grafo de la gura 1.1. Por ejemplo, si queremos saber la probabilidad de observar la secuencia nublado-soleado-nublado-lluvioso, tendr amos que multiplicar la probabilidad de que nublado fuese estado inicial por la probabilidad de ir transitando de un estado a otro. P (nub, sol, nub, llu) = P (nub)P (sol|nub)P (nub|sol)P (llu|nub) = 1 = ( ).(0, 2).(0, 1).(0, 2) = 0, 00133333 3

Sin embargo, estos modelos son demasiado restrictivos para la mayor de a problemas reales, ya que la salida de un estado no es aleatoria, sino que es siempre la misma. Por este motivo se hizo necesaria la extensin del concepto, para que o la observacin fuese una funcin probabil o o stica del estado. Al modelo resultante se le denomin Modelo de Markov Oculto (mmo), ste es un modelo doblemente o e estocstico ya que uno de los procesos no es directamente observable, sino que a

20

CAP ITULO 1. INTRODUCCION

est oculto. a A continuacin, se enumerarn los elementos que componen un mmo y se o a explicar la correspondencia de cada componente, aplicada al caso de la etiquetacin: a o Conjunto de estados del modelo (Q): se corresponde con el conjunto de las etiquetas. Conjunto de sucesos observables (V ): est formado por las palabras del lexicn. a o Distribucin de probabilidad del estado inicial (): la probabilidad de que una o etiqueta sea la primera en una frase. Distribucin de probabilidad de las transiciones entre estados (A): la o probabilidad de que despus de una etiqueta se transite a otra. e Distribucin de probabilidad de los sucesos observables para cada estado (B): o la probabilidad de que a partir de una determinada etiqueta se observe una palabra del lexicn. Por ejemplo, la probabilidad de que a partir de la etiqueta o preposicin se observe la palabra para. o Los tres ultimos parmetros representan probabilidades y por tanto deben ser a estimados a partir de los datos observados. La estimacin se puede realizar de forma o supervisada, utilizando un corpus de entrenamiento etiquetado o no supervisada cuando el corpus no est etiquetado. a Ejemplo 1.2. Para ilustrar el funcionamiento de un mmo se emplear un ejemplo a con urnas y bolas. El modelo consta de un nmero N de urnas colocadas en una u habitacin aislada. Cada urna contiene un nmero grande de bolas y cada bola es o u de un solo color. Existe una persona dentro de la habitacin encargada de sacar las o bolas de la urna. Inicialmente, la persona escoge una urna aleatoriamente, saca una bola, grita su color en voz alta y devuelve la bola a la urna. A continuacin, elige otra o urna de acuerdo a un proceso aleatorio asociado a la primera y extrae otra bola ... y as un nmero determinado de veces. La secuencia de colores constituye la salida u observable del modelo, quedando oculta para nosotros la secuencia de urnas que se ha seguido. El proceso se modeliza de forma que cada urna se corresponde con un estado del mmo, la eleccin de la urna se realiza de acuerdo a una matriz de probabilidades de o transicin entre estados asociada al modelo, y para cada estado existe una funcin o o de probabilidad de los colores. Este ejemplo puede identicarse con el problema de la etiquetacin de forma o intuitiva. Las bolas representar a las palabras y las urnas a las etiquetas que an representan las palabras. Una misma palabra puede encontrarse en urnas distintas y puede estar varias veces en la misma urna.

1.4. CONTEXTO DEL PROYECTO

21

Figura 1.2: Representacin de un MMO o El algoritmo de Viterbi Uno de los problemas asociados a los mmos es la eleccin de la secuencia de o estados (etiquetas) ms probable para las palabras de un texto. Para realizar esta a eleccin se utiliza el algoritmo de Viterbi [16]. El objetivo es encontrar la secuencia o de estados ptima que mejor explica la secuencia de observaciones. Formalmente, o dado un modelo de Markov = (Q, V, , A, B), se trata de encontrar la secuencia S = (q1 , q2 , . . . , qT ) ms probable a partir de una observacin O = (o1 , o2 , . . . , oT ). a o Consideremos la variable t (i), que se dene como t (i) =
q1 ,q2 ,...,qt1

max

P (q1 , q2 , . . . , qt1 , qt = i, o1 , o2 , . . . , ot |)

es decir, t (i) almacena la probabilidad del mejor camino que termina en el estado i, teniendo en cuenta las t primeras observaciones. Se demuestra fcilmente que a t+1 (j) = max t (i)aij bj (ot+1 )

1iN

Puesto que el objetivo es obtener la secuencia de estados ms probable, a la vez que a calculamos todos los t (i) para todos los estados y todos los instantes de tiempo, debemos almacenar una traza que nos permita recordar cual fue el argumento que maximiz la ecuacin. Para esto se utiliza la variable t (j). A continuacin se o o o describen los cuatro pasos del algoritmo de Viterbi [16]: 1. Inicializacin: o 1 (i) = i bi (o1 ), 2. Recurrencia: t+1 (j) = max t (i)aij bj (ot+1 ), t = 1, 2, . . . , T 1, 1jN 1iN

1iN

t+1 (j) = arg max t (i)aij ,


1iN

t = 1, 2, . . . , T 1,

1jN

22 3. Terminacin: o

CAP ITULO 1. INTRODUCCION

qT = arg max T (i) 1iN

4. Construccin hacia atrs de la secuencia de estados: o a


qt = t+1 (qt+1 ),

t = T 1, T 2, . . . , 1

En caso de producirse un empate durante el clculo del mejor camino que termina a en un estado ( max t (i)aij ), el algoritmo elige de forma aleatoria uno de entre los
1iN

caminos con mxima probabilidad. a Para la etiquetacin de palabras, los clculos se hacen sobre enrejados simples o a como el de la gura 1.3. Para cada observacin no se tendrn en cuenta todos o a los estados posibles (el conjunto de etiquetas completo), sino slo las etiquetas o candidatas que devuelve el lexicn para cada palabra. Por ejemplo, para la palabra o casa slo se van a considerar las etiquetas referentes a sus dos posibles or o genes, bien sea como sustantivo o como forma conjugada del verbo casar. En la gura 1.3, se representa un enrejado en l que para la palabra 1 se consideran e dos estados o etiquetas posibles: preposicin y sustantivo. Esto signica que la o palabra 1 es ambigua y aparece dos veces en el diccionario.
palabra 1 preposicin o palabra 2 adjetivo palabra 3 adjetivo palabra T numeral

sustantivo

preposicin o

adverbio

pronombre

sustantivo

verbo

sustantivo

verbo

Figura 1.3: Enrejado simplicado para la etiquetacin de una frase de T palabras o Sin embargo, la representacin de las frases mediante enrejados simples6 no o es suciente para reejar la complejidad ling ustica de un lenguaje. El principal problema se produce cuando un texto se puede segmentar de diferentes formas,
6

Tambin conocidos como diagramas de Trellis e

1.4. CONTEXTO DEL PROYECTO

23

lo que por ejemplo, resulta habitual con el uso de contracciones y formas verbales con pronombres encl ticos. En estos casos, una palabra est formada por a varios componentes ling usticos que deben ser separados en unidades ling usticas diferenciadas. Por otra parte, existen locuciones en las que varias palabras act an u como una unidad ling ustica compuesta. As por ejemplo, en gallego, la palabra polo , puede ser segmentada en tres formas distintas: Por (preposicin) + o (pronombre). o Pos (verbo) + o (pronombre). Polo (sustantivo). Las locuciones tambin son una fuente de ambig edades, ya que en ciertos casos e u van a dar lugar al menos a dos formas de segmentacin, la locucin en s y las o o palabras que la componen con sus etiquetas independientes. Por ejemplo, para la locucin sin embargo, tenemos que podemos segmentarla: o Sin (preposicin) y embargo (sustantivo); como en la frase Resolvi sus deudas o o sin embargo. Sin embargo (locucin); como en la frase Sin embargo, resolvi sus deudas o o con el banco. La deteccin de estas alternativas de segmentacin se debe realizar en una o o primera fase de preprocesado, y el algoritmo de Viterbi [16] ser el encargado de a realizar la desambiguacin seg n el contexto en el que estas aparezcan. Para llevar o u a cabo nuestro proyecto, contamos con un preprocesador morfolgico [4]. Dado que o este es el marco de desarrollo donde se integra el cdigo que se va a desarrollar, se o explicar su funcionamiento pormenorizadamente en la siguiente seccin. a o La versin inicial del algoritmo de Viterbi sobre enrejados clsicos representa o a para cada palabra sus posibles etiquetas, no obstante esta estructura no permite reejar correctamente las ambig edades de segmentacin. Los enrejados utilizan u o nodos que representan las unidades lxicas de la frase, por tanto al encontrarse un e caso de segmentacin los nodos del enrejado, tendr que cambiar. o an En la gura 1.4, se representa el enrejado correspondiente a la frase El sin embargo fue ..., podemos observar como se generan transiciones no vlidas a (representadas como l neas discontinuas), desde la etiqueta C (locucin) a la o etiqueta S (sustantivo), pues la etiqueta C se reere a la expresin completa. La o transicin vlida se representa con l o a neas punteadas. Para poder representar correctamente las ambig edades de segmentacin se u o necesita una nueva estructura de datos, los ret culos 7 . Ahora las etiquetas se
7

Conocidos como lattices en ingls e

24

CAP ITULO 1. INTRODUCCION

El Det Pro

sin embargo fue ... P C S V

El Det Pro

sin embargo fue ... P S C V

Figura 1.4: Los enrejados no permiten representar segmentaciones ambiguas

van a colocar en los arcos entre los estados, en lugar de formar los propios estados.Y los estados representan los huecos entre los componentes lxicos. Esta e nueva representacin resulta muy exible y permite reejar tanto alternativas de o etiquetacin como de segmentacin. o o La utilizacin de ret o culos implica modicar ligeramente el algoritmo de Viterbi, la nueva versin se conoce como algoritmo de Viterbi-L [6]. La principal diferencia o es la incorporacin de acumuladores para recoger las probabilidades de las palabras o encerradas entre el arco de una etiqueta. Esta versin presentaba una anomal o a porque las rutas del ret culo con menor longitud ten prioridad sobre las ms an a largas, a n cuando no eran la solucin ms adecuada. u o a

Pro 0 El Det

P a S

V 5 pesar 6 de S P S

Adv 7 nuevo Adj 8

Det la S Pro

S 9 fruta 10

1 sin 2 embargo 3 fue 4 P S V

Figura 1.5: Segmentaciones ambiguas representadas en un ret culo

Para solucionar esta anomal se normalizan las probabilidades acumuladas. a Gracias al uso de probabilidades logar tmicas los valores normalizados se obtienen dividiendo cada probabilidad entre el n mero de unidades lxicas, de esta forma u e los resultados obtenidos son directamente comparables. El algoritmo normalizado se denomina Viterbi-N [6].

1.4. CONTEXTO DEL PROYECTO

25

1.4.2.

Preprocesador morfolgico o

El etiquetador MrTagoo, al igual que la mayor de etiquetadores actuales, asume a que la informacin que recibe como entrada est separada en frases, y stas a su o a e vez en unidades de informacin de alto nivel de signicado. Sin embargo, esto no o es realista en absoluto ya que las lenguas presentan una serie de fenmenos que o se deben tratar antes de la etiquetacin. Para llevar a cabo esa labor usaremos el o preprocesador morfolgico [4] desarrollado para MrTagoo. o Durante el preprocesado, la primera tarea a realizar es la identicacin de las o frases y de las palabras. La fase de separacin de oraciones no es tan simple como o pudiese parecer, ya que los puntos no son indicadores exclusivamente del n de una frase, sino que tambin pueden representar el nal de una abreviatura o de un e acrnimo. Adems, el trmino ortogrco de una palabra no siempre coincide con o a e a el trmino ling e ustico, como ocurre en el caso de las contracciones y de las formas verbales con pronombres encl ticos, que encierran en una palabra informacin de dos o o ms componentes ling a usticos. Tambin nos encontramos el caso de las locuciones, e en el que varias palabras act an como una unidad lxica compuesta. u e El preprocesador utilizado en este proyecto opta por separar o unir las palabras en unidades lxicas de alto nivel8 . As separar un verbo de sus pronombres y e , a crear una unidad lxica para cada componente. Las palabras que componen las a e locuciones se representan mediante una unica unidad lxica. e Ejemplo 1.3. La palabra collullelo se descompone en tres unidades lxicas e e colleu, lles y lo, cada unidad se representa en una l nea diferente. collullelo-------------e colleu Vei30s coller Vei30s coller lles Rad3ap lle Rad3fp lle Rad3mp lle Rad3ap lle Rad3fp lle ... lo Raa3ms o Ddms o Scms lo La locucin preposicional a pesar de formada por tres palabras independientes o se representa por una unica unidad lxica. e a pesar de-------------a pesar de Lp0 a pesar de Adems de las locuciones, existen otras unidades ling a usticas compuestas como pueden ser los nombres propios, las fechas y los n meros (cardinales u ordinales) u que se deben tratar antes de ser enviados al etiquetador. Para ello el preprocesador est compuesto por una serie de mdulos que se ejecutan de forma secuencial y en a o
8

Com nmente en ingls se denominan tokens u e

26

CAP ITULO 1. INTRODUCCION

el que cada cual trata su propia problemtica. En la gura 1.6 se muestra un grco a a con el orden en el que se aplican los mdulos del preprocesador. o
Abreviaturas y Acrnimos o

ENTRADA

Segmentacin o

Numerales

Locuciones Seguras

Encl ticos

Contracciones

Locuciones Inseguras

Nombres Propios

Preetiquetador

Figura 1.6: Estructura del preprocesador morfolgico [4]. o Este esquema de preprocesamiento est orientado a la desambiguacin y a o etiquetacin robusta del gallego. No obstante, se puede aplicar a otros idiomas con o ligeras modicaciones, ya que la mayor parte de los mdulos estn abstra o a dos del idioma gracias al uso de los lexicones (que pueden ser contruidos para cada idioma). Los resultados obtenidos sern ms exactos cunta ms informacin ling a a a a o ustica est denida para un idioma. Esto signica que en los casos en qu se disponga de esta e e informacin se integrar en el sistema con el objetivo de obtener un comportamiento o a lo ms veraz posible. Actualmente, se dispone de la informacin ling a o ustica completa para la lengua gallega, es por ello que las mayor de pruebas y ejemplos expuestos a en el proyecto sern realizados en este idioma. a

1.4.3.

Modelizacin del diccionario o

Como se ha mencionado anteriormente, el entorno de etiquetacin utiliza una o serie de diccionarios o lexicones. Estos lexicones son listas de palabras de un lenguaje asociadas a una serie de informacin. Aunque se pudiese pensar en las bases de o datos relacionales como la herramienta ms adecuada para gestionar este tipo de a informacin, las caracter o sticas de los diccionarios que se enumeran a continuacin o ponen de maniesto que no son el sistema de almacenamiento ms adecuado[5]: a 1. Gran tama o: Un lexicn para el espa ol puede llegar a contener millones de n o n entradas. 2. Accesos rpidos: La recuperacin de informacin debe ser lo ms eciente a o o a posible en trminos de tiempo. e

1.4. CONTEXTO DEL PROYECTO

27

3. Inserciones poco frecuentes: Los lexicones apenas var por ello la ordenacin an, o se realiza una sola vez. Por su parte, el diccionario empleado por las herramientas de las que partimos almacena la siguiente informacin por palabra: o Forma: Es la propia palabra tal y como se escribe, esto es, su forma grca. a Etiqueta: Es la categor morfosintctica que corresponde a la palabra. a a Lema: Es la forma cannica de la palabra, que quiere decir que todas las o palabras derivadas de una misma, comparten un mismo lema. Los lemas suelen coincidir con las entradas de un diccionario convencional (en papel). Para los tiempos verbales, el lema es su innitivo y para sustantivos lo ser la forma a en masculino y singular. Probabilidad de emisin: Es la probabilidad de que la etiqueta de la palabra o aparezca asociada a ella. Esta probabilidad se calcula partir de un corpus de entrenamiento y se corresponde con la distribucin de probabilidad de los o sucesos observables para cada estado del mmo. En el caso de las palabras ambiguas, es decir, aquellas que tienen ms de una a etiqueta posible, aparecen repetidas tantas veces como etiquetas tengan. As por ejemplo, la palabra casa aparecer en el lexicn con al menos tres entradas distintas. a o A saber: casa casa casa Scfs V0m20s Vpi30s casa casar casar ... ... ...

El modelo que se utiliza para almacenar est informacin de forma compacta ha a o sido propuesto por Gra a [5] y est basado en la utilizacin de Autmatas Finitos n a o o Deterministas Ac clicos Numerados (afdan). Estos autmatas son m o nimos, para ello se aplica un algoritmo de minimizacin de autmatas descrito por Daciuk [2]. El o o tama o de los lexicones es crucial ya que pueden llegar a contener desde cientos de n miles de entradas hasta millones, por lo que el espacio utilizado en memoria es muy importante. Gracias a la minimizacin de los autmatas las palabras comparten o o tanto prejos como sujos, de esta forma el espacio ocupado en memoria se ve reducido en gran medida. En la gura 1.7 , se muestra un rbol de letras que a representa las palabras chispa, cohabitante , coherente y cooperarse, antes de aplicar la minimizacin y en la gura 1.8 el resultado que se obtiene una vez aplicado. o Adems, mediante la utilizacin de los afdan el tiempo de reconocimiento de a o una palabra es lineal con respecto a la longitud de la propia palabra, no depende

28 p q2 i q4 s q7 q11 a q15

CAP ITULO 1. INTRODUCCION

q0 c q1 o q3 h q5 a q8 b q12 i q16 t q19 a q22 n q25 t q28 e q29 o q6 e q9 r q13 e q17 n q20 t q23 e q26 q10 e q14 r q18 a q21 s q24 e q27

Figura 1.7: Antes de aplicar el algoritmo de minimizacin o


1 1 1 p 1 q2 i q4 s q7 q11

h
4 4

a
1 1 1 1 1 1

q0 c q1 o q3 h q5 a q8 b q12 i q15 t q17 a q19 n q20 t q21 e e 1 1 1 o e q6 q9 r q13 s 1 1 1 1 p q e q r q a q


10 14 16 18

qf

Figura 1.8: Despus de aplicar el algoritmo de minimizacin e o del tama o del diccionario, ni del tama o del autmata. Al tratarse de un autmata n n o o numerado se puede obtener para cada palabra un n mero que identique de forma u un voca cada palabra mediante el uso de la funcin palabra a ndice [5]. o 9 Esta resulta ser la mejor funcin asociativa que se podr utilizar para acceder o a de forma eciente a la informacin ya que no permite colisiones y dispersa los datos o en la tabla. Su funcionamiento es simple, se recorre la ruta de una palabra w, y se van sumando los pesos de los estados accesibles mediante letras lexicogrcamente a menores que wi . Y, adicionalmente, a la suma nal se a ade uno. n Ejemplo 1.4. A modo de ejemplo, se calcular el a ndice para la palabra coherente del ejemplo 1.8. La ruta o traza seguida por la palabra en el autmata es la siguiente: o
9

Resulta frecuente el uso del trmino en ingls funcin hash. e e o

1.4. CONTEXTO DEL PROYECTO


sobre

29

Palabra_a_Indice indices etiquetas lemas probabilidades tagset

325.611 325.614

Scms

Vysps0 0.113229 0.001263 0.011776

Indice_a_Palabra

sobrar

sobre

sobre

Figura 1.9: Modelizacin compacta de un diccionario [11]. o {q0 , q1 , q3 , q5 , q9 , q13 , q19 , q20 , q21 , qf }. Los unicos estados que a su vez tienen estados accesibles mediante letras menores que la de la letra correspondiente a la propia palabra son q1 y q5 . Para estos estados (q2 y q8 , respectivamente) sus pesos son 1, y sumando la unidad adicional obtenemos como resultado ndice de la palabra coherente el 3. Se puede comprobar fcilmente a que los ndices se asignan en orden alfabtico. e

En la gura 1.9 se representa el esquema de funcionamiento del diccionario. En primer lugar, se utiliza la funcin palabra a indice, mediante la que se obtiene o una posicin en la tabla de o ndices para una palabra dada. Esta posicin, a su o vez, contiene un n mero utilizado para indexar los tableros de etiquetas, lemas y u probabilidades, es decir la posicin absoluta que ocupa la palabra buscada dentro del o lexicn. Estas tres tablas tienen la misma longitud. o En el tablero de etiquetas, tampoco se van a almacenar directamente las etiquetas, sino n meros que indexan la tabla del conjunto de etiquetas 10 . u El tablero de lemas tambin almacena n meros. Dado que los lemas tambin e u e forman parte del diccionario se almacena el n mero que devolver la funcin u a o
10

Com nmente conocido como tagset. u

30

CAP ITULO 1. INTRODUCCION

o Palabra a Indice aplicada sobre el lema. Para recuperarlo se aplica la funcin inversa: Indice a Palabra. En el tablero de probabilidades se almacenan directamente las probabilidades, pues son datos numricos. e Como consecuencia, la estructura utilizada para almacenar el lexicn es lo ms o a compacta posible, adems permite una gran exibilidad a la hora de incorporar o a eliminar alg n tablero. u Puesto que el diccionario est ordenado alfabticamente, se garantiza que cuando a e una palabra tenga ms de una etiqueta posible aparecern contiguas. Para saber a a cuantas etiquetas tiene una palabra, basta con restar la posicin absoluta de la o palabra al valor de la siguiente casilla en el tablero de ndices. En el esquema se realiza el acceso para la palabra sobre cuya posicin absoluta o en el lexicn es la 325.611, se muestra como para cada posible etiqueta de la palabra o se incluye una nueva la. Para saber cuantas etiquetas posee la palabra restaremos al valor de la siguiente casilla (325.614) en la tabla de ndices, la posicin absoluta o de sobre (325.611), obteniendo tres etiquetas diferentes.

1.4.4.

Corrector ortogrco a

Hasta ahora no se ha mencionado la forma en la que debe actuar un etiquetador al encontrar una palabra desconocida, es decir, que no forme parte del lexicn. En o estos casos caben dos posibilidades: 1. Que se trate de palabras correctas que no formen parte del diccionario por ser extranjerismos, tecnicismos o palabras de creacin reciente. o 2. Que sean palabras incorrectas, que contengan errores ortogrcos . a El entorno de etiquetacin actual11 en estos casos deja la palabra tal y o como aparece y utiliza un mdulo de adivinacin 12 para deducir la etiqueta o o correspondiente a la palabra. Una alternativa al mdulo de adivinacin es la utilizacin de una tcnica de o o o e correccin ortogrca que obtenga alternativas de coste m o a nimo (cuya distancia de edicin con la palabra a elegir sea la menor posible), que s aparecen en el diccionario. o El principal objetivo de este proyecto es la integracin de una tcnica de correccin o e o ortogrca en el entorno de etiquetacin del que partimos. a o Para llevar a cabo la integracin partimos de dos propuestas que implementan el o diccionario como una estructura afdan. La primera se debe a Savary [12] y es una
Cuando se mencione el entorno de etiquetacin, nos estamos reriendo al preprocesador junto o al etiquetador morfolgico. o 12 Conocido como guesser en ingls e
11

1.4. CONTEXTO DEL PROYECTO

31

tcnica de correccin global, es decir, realiza una b squeda exhaustiva a lo largo de e o u todo el diccionario. Por este motivo, garantiza la localizacin de todas y cada una o de las correcciones posibles, pero su coste computacional va a ser alto. La otra tcnica fue propuesta por Vilares et al. [15] e implementa una estrategia e de correccin regional, que evita explorar todo el lexicn y suele ofrecer un menor o o n mero de alternativas de reparacin. u o Como resultado de aplicar una tcnica de correccin, bien sea global o regional, e o sobre una palabra desconocida es frecuente obtener varias opciones de correccin. o De esta forma se identica un nuevo tipo de ambigedad, denominada, lxica. u e Antes de explicar detalladamente los algoritmos debemos introducir algunos conceptos con respecto a la correccin: o Damerau [3] clasic en 1964 los errores ortogrcos generados por humanos o a en los siguientes: Insercin de una letra (Ejemplo: caasa en vez de casa). o Borrado de una letra (Ejemplo: cas en vez de cas). Sustitucin de una letra por otra (Ejemplo: cass en vez de casa). o Transposicin o inversin de dos letras contiguas (Ejemplo: caas en vez o o de casa). Wagner [17] dene el concepto de distancia de edicin m o nima como el n mero u m nimo de operaciones de edicin, descritas por Damerau, necesarias para o transformar una cadena de texto en otra. Algoritmo de Savary Savary [12] describe un mtodo global de correccin ortogrca sobre afs. Este e o a algoritmo se basa en la b squeda de los vecinos ms cercanos para una palabra u a desconocida, es decir, aquellas palabras vlidas cuya distancia de edicin con la a o palabra de entrada sea m nima. En el algoritmo se debe establecer un umbral que la distancia de edicin m o nima nunca debe superar. Para jarlo se debe llegar a un compromiso entre tres factores: La eciencia en tiempo de b squeda, que se corresponde con el tama o de la u n seccin del af que ha de ser explorarado. o El tama o de la lista de correcciones candidatas. n La probabilidad de que la palabra esperada est en la lista. e En el algoritmo 1 se muestra una implementacin recursiva del algoritmo de Savary, o donde:

32

CAP ITULO 1. INTRODUCCION

Algorithm 1 Algoritmo de Savary[12] 1: procedimiento Busqueda-Tolerante(w1..n, q, t) 2: (ed, S) (, ) 3: si n = 0 y Terminal(q) entonces retornar (0, {}) 4: si n > 0 y q / q.w1 = q entonces 5: (ed, S) Busqueda-Tolerante(w2:n , q, t) 6: t min(t, ed) 7: para cada suf S hacer suf w1 suf 8: n si 9: si t > 0 entonces 10: si n > 0 entonces //1. Error de insercin de una letra o 11: (ed, S) Busqueda-Tolerante(w2:n , q, t 1) 12: (ed, S) Anadir-o-Reemplazar((ed, S), (ed + 1, S)) 13: t min(t, ed) 14: n si o 15: //2. Error de inversin de una letra con la siguiente 16: si n > 1 y w1 = w2 y q / q.w2 .w1 = q entonces 17: (ed, S) Busqueda-Tolerante(w3:n , q, t 1) 18: para cada suf S suf w2 w1 suf 19: (ed, S) Anadir-o-Reemplazar((ed, S), (ed + 1, S)) 20: t min(t, ed) 21: n si 22: trans {(q, c)} / q.c = q 23: para cada (q, c) trans hacer 24: //3. Error de omisin de una letra o 25: (ed, S) Busqueda-Tolerante(w1..n, q, t 1) 26: para cada suf S suf c suf 27: (ed, S) Anadir-o-Reemplazar((ed, S), (ed + 1, S)) 28: t min(t, ed) 29: //4. Error de reeemplazo de una letra por otra 30: si n > 0 entonces 31: (ed, S) Busqueda-Tolerante(w2:n , q, t 1) 32: para cada suf S suf c suf 33: (ed, S) Anadir-o-Reemplazar((ed, S), (ed + 1, S)) 34: t min(t, ed) 35: n si 36: n para 37: n si 38: retornar (ed, S) 39: n procedimiento

1.4. CONTEXTO DEL PROYECTO w1..n es la palabra de entrada, q es el estado en que se encuentra actualmente el af y t es el umbral de error permitido.

33

La funcin Busqueda-Tolerante trata de reconocer el sujo w1..n partiendo o del estado q y admitiendo t operaciones elementales de edicin. La funcin devuelve o o un par (ed, S), donde S es el conjunto de sujos, y ed es la distancia de edicin o entre el sujo w1..n y cada uno de los sujos contenidos en S. Si no hay sujos en S, entonces ed = , por ser la condicin de inicializacin en la l o o nea 2. La primera llamada a la funcin se hace con la cadena completa de entrada, el o estado inicial del af y el umbral de distancia de edicin deseado. Inicialmente se o seguir el procedimiento estndar de reconocimiento que consiste en ir avanzando a a por los estados del af con cada carcter de la cadena de entrada, tal y como puede a verse entre las l neas 4 y 8. Si la palabra w pertenece al lexicn, entonces en alg n o u momento t se har igual a cero en la l a nea 6 de forma que al llegar a la l nea 9 se evitar la ejecucin del cdigo que introduce las hiptesis de error entre las l a o o o neas 9 y 37. Sin embargo, en el caso de que la palabra de entrada sea errnea, entonces o el procedimiento estndar de reconocimiento acabar fallando por uno de los dos a a motivos siguientes: la cadena de entrada se ha agotado y no hemos alcanzado un estado nal o bien se ha alcanzado un estado desde el que no es posible transitar con el carcter actual. En ambos casos alcanzar a amos la l nea 9 con t > 0, lo que nos revelar que existe un error en la posicin actual de la cadena de entrada y a o tratar amos de aplicar en este punto alguna de las cuatro hiptesis elementales de o error: 1. Insercin de la letra actual (l o neas 10 a 14), en cuyo caso omitir amos esa letra y tratar amos de reconocer el resto de la palabra de entrada (w2..n ) partiendo del estado actual. 2. Inversin de la letra actual y la siguiente (l o neas 15 a 20). Para que esto ocurra es necesario que nos resten al menos 2 caracteres por reconocer y deber existir a un estado q alcanzable desde el estado actual, utilizando para ello los dos caracteres siguientes invertidos (q / q.w2 .w1 = q). En ese caso, tratar amos de reconocer el sujo restante (w3..n ) partiendo del estado q. 3. Omisin de una letra en la posicin actual (l o o neas 25 a 28), en cuyo caso para cada transicin que nos lleve desde el estado actual q a otro estado q por o medio del carcter c (l a nea 23), trataremos de reconocer el sujo actual, pero no desde el estado actual q sino desde cada uno de los q, a adiendo luego n

34

CAP ITULO 1. INTRODUCCION a cada una de las soluciones encontradas el carcter c correspondiente (l a nea 26). 4. Reemplazamiento de la letra correcta por la letra actual (l neas 30 a 35), en cuyo caso para cada transicin que nos lleve desde el estado actual q a otro o estado q por medio del carcter c, tratar a amos de reconocer el resto de la palabra de entrada (w2..n ) partiendo de cada uno de los estados q y a adiendo n luego a cada una de las soluciones encontradas el carcter c correspondiente a (l nea 32).

Cada vez que se encuentran nuevas soluciones el valor de ed y el contenido de S se actualizan por medio de la funcin Anadir-O-Reemplazar. Esta funcin o o comprueba si las nuevas soluciones son ms cercanas a la palabra original que las a soluciones que ya se encuentran en S, en cuyo caso S es reemplazado por el conjunto de nuevas soluciones, y el valor de ed pasa a ser la distancia de edicin que existe o entre la cadena de entrada y cada una de las nuevas soluciones. En caso contrario, se realiza la unin de los dos conjuntos y ed no se modica. De este modo, slo o o se retienen en S las soluciones con la menor distancia de edicin respecto al sujo o original. Algoritmo de correccin regional o El algoritmo de correccin ortogrca regional [15] aplica heur o a sticas para reducir el coste computacional de los algoritmos globales, adems trata de mejorar la calidad a de la respuesta obtenida, reduciendo el n mero de correcciones posibles para una u palabra desconocida. Los algoritmos globales, como el de Savary [12], dedican el mismo esfuerzo computacional en todos los puntos de la cadena que tratan de reconocer. Esto signica que no tienen en cuenta el punto en el que se ha producido el error, es decir, la transicin exacta con la cual no se ha podido continuar el autmata. No o o obstante, parece lgico pensar que el error encontrado est originado cerca del lugar o e en el que se ha detectado y no varios caracteres antes. Cuando no sea posible transitar en el proceso de reconocimiento de una palabra en un af, se pueden diferenciar dos situaciones distintas de error: 1. Se ha producido un error en el punto de la cadena en el que nos encontramos. En este caso la palabra se corregir con una reparacin local, es decir, en ese a o punto exacto. 2. Se ha producido un error en un punto anterior, lo que ha provocado que continusemos por un camino errneo, en el que no se ha podido seguir. Este a o camino errneo tuvo que ser tomado en un punto del af en el que hab una o a bifurcacin. o

1.4. CONTEXTO DEL PROYECTO

35

Para establecer el punto al que se va a retroceder cada vez que se encuentre un error se introduce un nuevo concepto, las regiones, que son una forma de delimitar la zona de b squeda del error. El estado origen de una regin ser aquel para el u o a que exista ms de una transicin de salida (en el que haya una bifurcacin). Y el a o o estado destino es aquel en el que convergen todos los caminos que parten desde el estado origen. Para garantizar que todos los caminos convergen en un estado, se debe asegurar la existencia de un unico estado nal. En la gura 1.10 se muestra un af que representa las palabras descontar, despuntar, recontar y repuntar. Este af est formado por dos regiones, la primera a con estado origen q0 y la estado destino q4 , y la segunda empieza en q4 y converge en q7 . Para calcular los estados destino de las regiones en un af, se utiliza un algoritmo basado en tcnicas de programacin dinmica [11], con el n de evitar la repeticin e o a o de clculos comunes a regiones distintas. a

d q0 r

q1 e q3

sc q4

q5

o q7 n q8 t q9 a q10 r qf

q2

q6

Figura 1.10: Clculo de regiomes sobre un af a En el momento en el que no se pueda continuar el reconocimiento de una palabra sobre un autmata, se retroceder hasta el origen de la regin m o a o nima, es decir, el primer estado anterior a q en el que exista una bifurcacin de caminos en el af. o Una vez identicada la regin sobre la que se debe actuar, se aplican las o modicaciones necesarias para calcular el error, basndose en las operaciones de a edicin descritas por Damerau [3]. Al igual que Savary, se emplea como mtrica de o e error la distancia de edicin [17]. o En este algoritmo tambin se contempla la posibilidad de errores en cascada, e esto es, errores provocados por una reparacin previa errnea. Una vez aplicada o o una reparacin, si no podemos continuar por esa rama, se retroceder hasta la o a regin inmediatamente anterior a la regin actual. Esto va a asegurar una calidad o o comparable a las estrategias globales, pero con los costes computacionales de una local.

36

CAP ITULO 1. INTRODUCCION

1.5.

Objetivos del proyecto

En el apartado anterior se ha intentado dar una visin global del complejo entorno o donde se enmarca nuestro proyecto, para ahora explicar los objetivos generales a alcanzar en nuestro desarrollo.

1.5.1.

Integracin de varias herramientas o

La nalidad principal de este proyecto es la construccin de un analizador o morfosintctico robusto que sea capaz de resolver tres posibles tipos de a ambig edades: u Morfosintctica: Cuando una unidad lxica es susceptible de recibir ms de a e a una etiqueta. Por ejemplo, para puede ser una preposicin o un verbo. o De segmentacin: Cuando una frase pueda segmentarse de ms de una manera o a posible. Por ejemplo, la locucin sin embargo, se puede segmentar de dos o formas: Sin (preposicin) y embargo (sustantivo); como en la frase Resolvi sus o o deudas sin embargo. Sin embargo (locucin); como en la frase Sin embargo, resolvi sus o o deudas con el banco. Lxica: uando existe ms de una unidad lxica posible, este caso puede ocurrir e a e 13 cuando la palabra original fuese errnea . o Como se ha explicado, el algoritmo de Viterbi [16], implementado en MrTagoo [4], resuelve las ambig edades de segmentacin y tambin las morfosintcticas. Pero la u o e a herramienta existente no resuelve los casos en los que una palabra no forma parte del lexicn, simplemente trata de predecir o adivinar su etiqueta morfosintctica, o a esto es, si se trata de un verbo, un sustantivo, un adjetivo..., as como su gnero, e n mero o la forma verbal en la que se encuentra cuando corresponda. u Nuestro objetivo principal, se centrar en integrar las implementaciones de las a tcnicas de correccin ya existentes con el preprocesador morfolgico, de forma que e o o el algoritmo de Viterbi pueda resolver tambin las ambigedades lxicas generadas e u e una vez aplicadas las correcciones sobre las palabras errneas. Esto signica que la o aplicacin resultante funcionar como un corrector ortogrco contextual, es decir, o a a tendr en cuenta el contexto en el que aparece la palabra para elegir la alternativa a ms correcta. a
13

Entendemos como errnea una palabra que no forma parte del diccionario. o

1.5. OBJETIVOS DEL PROYECTO

37

Diccionarios

INPUT
Palabra

Corrector Ortografico

OUTPUT
Lista de alternativas

Figura 1.11: Funcionamiento general de las tcnicas de correccin e o

INPUT Texto plano o XML

Preprocesador Morfologico

Diccionarios

Etiquetador MrTagoo

OUTPUT
Segmentado y etiquetado

Figura 1.12: Entorno de etiquetacin actual o

La ambig edad lxica se produce al obtenerse como resultado de la correccin u e o una lista con las alternativas de coste m nimo para la palabra desconocida. En caso de que no hubiese correcciones posibles con el umbral establecido, se seguir a aplicando el mdulo de adivinacin. La gura 1.11 muestra una descripcin grca o o o a del funcionamiento del corrector. En la gura 1.12 se muestra de forma grca el funcionamiento del entorno de a etiquetacin del que se parte. o Se describe grcamente en la gura 1.13 la integracin de las herramientas a o descritas que se pretende obtener,

38

CAP ITULO 1. INTRODUCCION

INPUT Texto plano o XML

Corrector Ortografico

Preprocesador Morfologico

Diccionarios

Etiquetador MrTagoo

OUTPUT
Segmentado y etiquetado

Figura 1.13: Esquema general del funcionamiento del proyecto.

1.5.2.

Recodicacin del corrector o

Las dos implementaciones de tcnicas de correccin ortogrca de las que e o a disponemos son prototipos empleados para la realizacin de tests sobre listados o de palabras. Por tanto, se ha de adaptar el cdigo a las necesidades concretas de o nuestro proyecto.

1.5.3.

Correccin a errores multi-palabras o

El ultimo de los propsitos generales de nuestro proyecto es la ampliacin de o o los tipos de errores a considerar por el corrector. La aplicacin existente tiene en o cuenta los cuatro tipos de errores de edicin descritos por Damerau [3], que han sido o descritos en la seccin 1.4.4. o Se ampliar el corrector para que pueda resolver errores que afecten a varias a palabras, como la unin de dos palabras o la divisin de una palabra en varias. As o o , se tratara de solucionar errores como sinembargo o hier ba. El primer caso es la unin de dos palabras conocidas formando una palabra o desconocida, es decir, omitir el espacio en blanco entre ambas palabras. En caso de que existan ms alternativas a la solucin, todas sern devueltas y ser el etiquetador a o a a el encargado de seleccionar la ms adecuada en funcin del contexto en el que se a o

1.5. OBJETIVOS DEL PROYECTO

39

hallen. Otra posible funcionalidad a incorporar son los errores de divisin de o palabras, puesto que es una falta com n introducir un espacio en una posicin u o incorrecta cuando escribimos. Cuando nos topemos con una palabra incorrecta se deber comprobar si uniendla con su predecesora o con su sucesora se consigue a o formar alguna palabra que conste como entrada en nuestro diccionario o lexicn. o

40

CAP ITULO 1. INTRODUCCION

Cap tulo 2 Tecnolog y herramientas as empleadas


En el presente cap tulo se har una breve descripcin de las tecnolog y las a o as herramientas empleadas para llevar a cabo este proyecto, destacando caracter sticas representativas de las mismas, as como los motivos que han motivado su seleccin o frente a otras herramientas y tcnicas similares. e

2.1.
2.1.1.

Tecnolog empleadas as
C

El lenguaje de programacin c fue creado en 1972 por Dennis Ritchie y Ken o Thompson en los laboratorios bell. c es la evolucin de un lenguaje anterior o denominado b, que, a su vez, est basado en el lenguaje bcpl [13]. a c es un lenguaje de nivel medio porque combina elementos de lenguajes de alto nivel con la funcionalidad del lenguaje ensamblador. La utilizacin de este lenguaje o permite la manipulacin elementos de bajo nivel como los bits, bytes y direcciones, o de esta forma el cdigo generado es muy eciente. Adems, es portable a cualquier o a arquitectura. Estas caracter sticas convirtieron a c en el lenguaje idneo para el desarrollo de o las herramientas que emplearemos en este proyecto, en las que se manejan autmatas o con requerimientos espec cos de ecacia computacional. En consecuencia, nuestro sistema tambin utilizar dicho lenguaje. e a 41

42

CAP ITULO 2. TECNOLOG IAS Y HERRAMIENTAS EMPLEADAS

2.1.2.

XML

xml1 es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (w3c). Este lenguaje permite estructurar, describir e intercambiar informacin de forma able, segura y simple. Actualmente, el lenguaje xml goza de o una gran popularidad por ser un estndar abierto y libre. Adems, es ampliamente a a utilizado para escribir los cheros de conguracin de un programa o para permitir o la compatibilidad entre diferentes sistemas al servir de formato de intercambio de datos. A continuacin se destacan algunas de las principales caracter o sticas xml: Es extensible, es decir, despus de dise ado y puesto en produccin, es posible e n o extender xml con la adicin de nuevas etiquetas, de modo que se pueda o continuar utilizando sin complicacin alguna. o No es necesario crear un analizador espec co para cada versin del lenguaje o xml. Esto posibilita el empleo de cualquier analizador disponible. De esta manera se evitan errores y se acelera el desarrollo de aplicaciones. Si un tercero decide usar un documento creado en xml, es sencillo entender su estructura y procesarla. Mejora la compatibilidad entre aplicaciones. La codicacin del contenido en xml consigue que la estructura de la o informacin resulte ms accesible. Esto lo convierte en un formato ideal para o a guardar datos de conguracin de las aplicaciones. o Presenta elementos como las dtds o xmlschema que permiten vericar de forma sencilla si la estructura del documento se corresponde con la deseada. Existen abundantes herramientas para trabajar con informacin representada o en este formato. Estas herramientas facilitan el acceso, tratamiento y modicacin de los datos. En concreto, en este proyecto se emplear la o a tecnolog sax combinada con el lenguaje de programacin c. a o En este proyecto, se utilizan documentos xml en los cheros de conguracin y, o tambin, como formato para almacenar los resultados obtenidos. e

2.1.3.

SAX

sax son las siglas de simple api for xml (api simple para xml), se cre originalmente como un api para Java y es un estndar de facto. Se han realizado o a versiones de sax para muchos otro lenguajes de programacin, tales como Perl, o Pyhton, Pascal, C, C++ y Visual Basic.
1

http://www.w3.org/XML/.

2.2. HERRAMIENTAS UTILIZADAS

43

En nuestro proyecto, se emplea la interfaz de sax en libxml para el lenguaje c. Aunque existen otras alternativas para el manejo de documentos xml como dom (Document Object Model), utilizaremos sax porque la cantidad de memoria que necesita es inferior a la ocupada por dom, ya que no construye la representacin de o la estructura en memoria, sino que se limita a recorrer secuencialmente el documento para obtener la informacin deseada. o Dada la sencillez de los cheros de conguracin utilizados en nuestro proyecto o se emplear la tecnolog sax para cargar su contenido. a a

2.1.4.

LaTeX

LaTeX es un lenguaje compilado para el procesamiento de textos, formado por un gran conjunto de macros de TeX, escritas inicialmente por Leslie Lamport [9], con la intencin de facilitar el uso del lenguaje de composicin tipogrca creado o o a por Donald Knuth. Es muy utilizado para la composicin de art o culos acadmicos, e tesis y libros tcnicos, dado que la calidad tipogrca de los documentos realizados e a con LaTeX es comparable a la de una editorial cient ca de primera l nea. LaTeX es software libre bajo licencia Licencia Pblica del Proyecto LaTeX (lppl). Se ha u utilizado LaTeX para realizar esta documentacin. o

2.2.

Herramientas utilizadas

En esta seccin se describen brevemente las diferentes herramientas utilizadas o en la realizacin de las distintas tareas comprendidas en este proyecto. Para cada o una de ellas se explicar con qu n se ha empleado en este proyecto y porqu se ha a e e seleccionado frente a otras alternativas similares.

2.2.1.

NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio, as como un entorno integrado de desarrollo (ide). El ide de Netbeans es una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas. Se trata de un producto libre gratuito y sin restricciones de uso. Est escrito en Java pero contiene un plugin para a adir a n soporte a los lenguajes c y c++ entre otros. Se ha decidido emplear este ide frente a otros, como por ejemplo Eclipse, que tambin incluye soporte para c dada la familiaridad previa con el entorno Netbeans, e adems de la inclusin de un mayor n mero de funcionalidades. a o u

44

CAP ITULO 2. TECNOLOG IAS Y HERRAMIENTAS EMPLEADAS

2.2.2.

Visual Paradigm

Visual Paradigm es una herramienta case que utiliza uml como lenguaje de modelado (www.visual-paradigm.com). La herramienta est dise ada para una a n amplia gama de usuarios interesados en construir sistemas de software ables con el uso del paradigma orientado a objetos, incluyendo actividades como ingenier de a software, anlisis de sistemas y anlisis de negocios. Se ha utilizado esta herramienta a a para la elaboracin del anlisis y del dise o en este proyecto. Aunque el lenguaje o a n de programacin empleado no es orientado a objetos se ha intentado seguir una o adaptacin lo ms el posible en el momento de realizar la implementacin. o a o

2.2.3.

Kile

Kile es un editor de Tex/LaTeX. Funciona conjuntamente con kde en varios sistemas operativos. Las principales caracter sticas por las que se ha seleccionado Kile frente a otros editores son las siguientes: Autocompletado de comandos LaTeX. Coloreado de sintaxis. Kile automticamente marca los comandos LaTeX y a resalta los parentesis. Permite crear proyectos y trabajar con m ltiples cheros simultaneamente. u Proporciona plantillas y patrones para facilitar la creacin de documentos. o Plegado de cdigo. o Insercin fcil de citas y referencias cuando se usan proyectos. o a

2.2.4.

Planner

Planner es una herramienta para la gestin de proyectos que permite realizar o diagramas de Gantt, asignacin de recursos, etc. Forma parte del proyecto Gnome o y se puede utilizar sin problemas en kde.

2.2.5.

Kubuntu

Kubuntu 2 es una distribucin gnu/Linux que ofrece un sistema operativo o principalmente enfocado a computadores personales. Es una versin derivada de o Ubuntu que usa el entorno de escritorio kde ms congurable que Gnome, entorno a utilizado por Ubuntu Es una de las distribuciones de gnu/Linux ms extendidas a
2

http://www.kubuntu.org/

2.2. HERRAMIENTAS UTILIZADAS

45

actualmente. Se basa en Debian y concentra su objetivo en la facilidad y libertad de uso, la uida instalacin y los lanzamientos regulares (cada 6 meses: las versiones o .04 en abril y las .10 en octubre). El principal patrocinador es Canonical Ltd., una empresa privada fundada y nanciada por el empresario sudafricano Mark Shuttleworth. La versin utilizada en este proyecto es la 7.10, lanzada en octubre del o 2007.

46

CAP ITULO 2. TECNOLOG IAS Y HERRAMIENTAS EMPLEADAS

Cap tulo 3 Planicacin y presupuesto o


3.1.
3.1.1.

Planicacin del proyecto o


Planicacin inicial o

La planicacin inicial se divide en las siguientes fases: o Estudios previos.y Anlisis y dise o. a n Implementacin y pruebas. o Documentacin. o Como consecuencia de la existencia de las herramientas que se han descrito en la seccin 1.4 , la fase de estudios previos va a englobar la comprensin de dichas o o herramientas. Por este motivo, esta fase abarcara un per odo de tiempo signicativo en el desarrollo de nuestro proyecto. La tabla de tiempos y el diagrama de Gantt para la planicacin inicial se presentan en las guras 3.1 y 3.2. o

47

48

CAP ITULO 3. PLANIFICACION Y PRESUPUESTO

Figura 3.1: Fases del proyecto en la planicacin inicial. o

Figura 3.2: Diagrama de Gantt para la planicacin inicial. o

3.1. PLANIFICACION DEL PROYECTO

49

3.1.2.

Planicacin real o

La planicacin real del proyecto se presenta en las guras 3.3 y 3.4. Las fases de o desarrollo inicialmente previstas no han variado durante la realizacin del proyecto, o en cambio, s se han producido algunas desviaciones poco signicativas en las diferentes etapas que no han afectado a la duracin total. o La principal razn por la que se han producido las variaciones se debe a la mayor o duracin de las fases de estudio de las herramienta existentes y la documentacin o o de la investigacin llevada a cabo. El peque o retraso provocado por este aumento o n se vi luego compensado al reducirse el tiempo empleado en la documentacin del o o anlisis y del dise o a n

Figura 3.3: Fases del proyecto en la planicacin real. o

50

CAP ITULO 3. PLANIFICACION Y PRESUPUESTO

Figura 3.4: Diagrama de Gantt para la planicacin real. o

3.2.
3.2.1.

Presupuesto del proyecto


Presupuesto del proyecto

En esta seccin, se detalla el presupuesto necesario para desarrollar el proyecto. o Se diferencian los costes de los recursos f sicos, es decir, a nivel de hardware y software,y los referentes a los recursos humanos. Recursos f sicos Se debe tener en cuenta que como regla general en el desarrollo de aplicaciones, tanto los recursos software como los hardware estn amortizados a diez proyectos. a Recursos hardware Hardware Equipo de sobremesa con procesador Intel Core 2 Quad; 2,4 GHz; 2 Gb de RAM; HDD 500 Gb TOTAL (coste / 10) Coste 1000 e 100 e

3.2. PRESUPUESTO DEL PROYECTO

51

Recursos software Durante todo el desarrollo de este proyecto se ha utilizado exclusivamente software libre, por consiguiente el coste total de las herramientas enumeradas a continuacin ha sido cero. o Sistema operativo gnu/Linux. Distribucin Kubuntu 7.10. o Editor NetBeans versin 6.1 para Ubuntu. o Herramienta para el modelado: Visual Paradigm community edition para Ubuntu, versin libre disponible para alumnos de la Escuela Superior de o Ingenier Informtica (esei) de la Universidade de Vigo. a a
A Editor Kile para llevar a cabo la documentacin, en LTEX. o Gestor de proyectos Planner para la realizacin de los diagramas de Gantt o necesarios.

Recursos humanos Aunque nuestro sistema ha sido desarrollado por una unica persona, dentro de las fases del proyecto se distingue la labor del analista, la del dise ador y la del n programador que lleva a cabo las partes de implementacin y pruebas. o Recursos Humanos Analista (40 e/hora) Dise ador (35 e/hora) n Programador (30 e/hora) Duracin o 20 d x 8 horas/d as a 20 d x 8 horas/d as a 37 d x 8 horas/d as a Total Coste planicado 6400 e 5600 e 8880 e 20880 e

Coste total del proyecto El coste total del proyecto se calcula sumando los costes generados por los recursos humanos y por los recursos f sicos. Recursos Humanos Recursos F sicos Coste Total 20880 e 100 e 20980 e

52

CAP ITULO 3. PLANIFICACION Y PRESUPUESTO

Cap tulo 4 Conclusiones y posibles ampliaciones


En este cap tulo describiremos las conclusiones personales obtenidas una vez conclu la realizacin del proyecto y tambin las posibles ampliaciones que se da o e pueden aplicar sobre el sistema nal construido.

4.1.

Conclusiones

Una vez nalizado el proyecto se extraen una serie de conclusiones muy positivas. En primer lugar, debo destacar la satisfaccin por haber cumplido los objetivos o establecidos en un principio, se ha conseguido crear un corrector ortogrco a contextual partiendo de un etiquetador de palabras (MrTagoo), un preprocesador (mrtgp 1 ) para ese etiquetador y dos tcnicas de correccin ortogrca diferentes. e o a Adems, se han ampliado los tipos de errores corregidos a errores de unin de a o palabras diferentes y a errores de divisin de una palabra en varias. o El estudio de todas estas herramientas no ha sido fcil, ni, mucho menos, rpido a a dada la envergadura del cdigo del que se part Adems, la documentacin era o a. a o escasa y en extremos demasiado tcnica, dado que se trata de proyectos en fase e de desarrollo. Todas estas dicultades fueron superadas con paciencia y mucha dedicacin. o La utilizacin del lenguaje de programacin c, con el que apenas hab trabajado o o a anteriormente, me ha permitido comprobar su gran eciencia en tiempo de ejecucin o y tambin el ahorro en memoria, necesario para las aplicaciones en las que se tratan e una cantidad importante de datos. No obstante, su estudio fue duro, especialmente en lo que se reere al manejo de punteros, y como suele ocurrir en estos casos se aprende a base de cometer muchas veces los mismos errores.
1

Son las siglas para MrTagoo preprocessor.

53

54

CAP ITULO 4. CONCLUSIONES Y POSIBLES AMPLIACIONES

A Adems, la utilizacin del lenguaje de marcado LTEXpara la realizacin de esta a o o documentacin ha supuesto otro reto importante. Aunque conoc la existencia o a de esta herramienta en extremo util para la creacin de documentos tcnicos y o e cient cos, nunca lo hab empleado. El resultado nal ha sido muy positivo y los a conocimientos adquiridos me han permitido desenvolverme con suciencia en este mbito. a Durante el desarrollo se han encontrado numerosos problemas, sobre todo referentes a la codicacin de caracteres utilizada. Tambin nos han surgido o e problemas a ra de la incorporacin, en ocasiones, de un n mero elevado de z o u correcciones para una palabra desconocida, pues el etiquetador no estaba pensado para recibir esa cantidad de alternativas. A nivel personal, el camino recorrido durante la realizacin del proyecto ha sido o largo y en ocasiones tedioso, sobre todo debido la falta de experiencia previa en la utilizacin de las tecnolog empleadas, as como en el estudio del cdigo existente o as o del que se part Aunque en un principio se pueda pensar que el no tener que partir a. de cero facilita las cosas, en ciertos momentos las hace ms complicadas, pues las a decisiones que podamos tomar deben adaptarse a lo ya realizado. Sin embargo, una vez terminado el proyecto; la satisfaccin de ver cumplido lo planicado es mayor. o

4.2.

Posibles ampliaciones

Se pueden incorporar una serie de ampliaciones en nuestro proyecto con el n de obtener unos mejores resultados en la correccin: o Aumentar el diccionario empleado por el corrector para que incluya tambin e los verbos conjugados y combinados con todas los pronombres encl ticos que puedan acompa arlos. De este modo, se podr corregir un error ortogrco n a a en una forma verbal con un pronombre encl tico asociado. En el sistema actual no se solucionan los problemas de este tipo. Reimplementar el preprocesador para eliminar la restriccin que impide anidar o listas de alternativas en los ret culos, con el objetivo de reducir los costes en trminos de espacio y tiempo en el momento de ejecutar el algoritmo de Viterbi e sobre stos. e Ampliar los tipos de errores ortogrcos a tratar. El sistema actual obtiene a las correcciones de distancia m nima para una palabra de forma individual, unindola con su predecesora y con su sucesora. Podr e amos ampliar el sistema para que comprobase las correcciones para la unin de todas ellas, es decir, la o palabra precesora, la actual y la sucesora.

Parte II Manual Tcnico e

55

Cap tulo 5 Anlisis a


La fase de anlisis de un proyecto software es la ms importante en todo el a a proceso de desarrollo, en esta fase se capturan los requisitos del sistema y se modela el problema a resolver.

5.1.

Sistema implementado

Nuestro sistema va a ser a su vez un subsistema dentro del preprocesador morfolgico [4]. Constituir un nuevo mdulo dentro de ste y ser el ultimo en o a o e a ejecutarse antes de llevar a cabo la etiquetacin. Por tanto, no habr interaccin o a o directa entre el sistema desarrollado y el usuario. En lineas generales, el funcionamiento general del entorno de etiquetacin o existente es el siguiente: si las oraciones se pasan en un chero xml se utiliza un parser sax encargado de extraerlas una a una. Una vez obtenida la oracin o en texto plano, se construye en memoria una representacin de la oracin, que o o ser manipulada para realizar las operaciones de fusin y segmentacin necesarias. a o o El resultado nal de este proceso (en el que intervienen varios mdulos especializados o en contracciones, locuciones, etc.) es completado con las etiquetas y lemas de todas las palabras que no hayan sido etiquetadas por los mdulos. Si hay alguna o palabra desconocida, esto es, para la que no se conozcan sus posibles etiquetas y lemas, se le asignara como unica etiqueta y como unico lema posibles. Es aqu el momento justo donde se sit a nuestro sistema que se aplicar sobre u a aquellas palabras que tengan como etiqueta y lema un , con el n de obtener las alternativas de correccin para cada una de ellas, y siempre que sea posible se a aden o n las correcciones obtenidas a la estructura en memoria que representa la oracin. o Finalmente, se construye un nuevo chero xml, que contiene la misma informacin o que el chero original, pero al que se le a ade la informacin morfosintctica n o a desglosada dentro de cada oracin. o 57

58

CAP ITULO 5. ANALISIS

El lenguaje de implementacin ser C, dado que partimos de dos herramientas o a ya existentes y desarrolladas en este lenguaje. No obstante, C es la opcin ms o a adecuada para este tipo de proyectos al permitir el control absoluto de la gestin de o memoria y de la ejecucin al programador. o Se emplear la librer glib que adems de asegurar la portabilidad del cdigo, a a a o nos proporciona numerosas estructuras de datos. La librer libxml2 ser, tambin, a a e una herramienta fundamental en nuestra aplicacin para manejar los archivos xml o de conguracin del sistema y de entrada y salida de datos. o Para realizar el anlisis y dise o se seguir la notacin uml que si bien fue creada a n a o como complemento para la programacin orientada a objetos, al tratarse de un o objeto de modelado, es posible aplicarla al paradigma de programacin estructurada, o que es el seguido en este proyecto. La arquitectura sobre la que se realizar el desarrollo es gnu/Linux para a garantizar un entorno robusto y con una alta abilidad.

5.2.

Estructuras de preprocesador

datos

utilizadas

por

el

Para el desarrollo de nuestro proyecto vamos a utilizar una serie de estructuras importantes en el entorno de etiquetacin: o nadfa(Numbered-Acyclic-Deterministic-Finite-Automaton) Esta es la estructura utilizada para almacenar los diccionarios del lenguaje. Es una implementacin del modelo del diccionario compacto propuesto por o Gra a [5] basada en la utilizacin de los afdan y que se explic en la n o o seccin 1.4.3. o token Las unidades lxicas, generalmente una sola palabra aunque pueden ser ms, e a se representan en memoria mediante el tipo sentence token: struct sentence token { guint8 type; gchar *word; GSList *tag; GSList *lemma; GSList *next; GSList *prev; gboolean tagged; GSList *mate; };

5.2. ESTRUCTURAS DE DATOS UTILIZADAS POR EL PREPROCESADOR 59

El elemento type especica ante que tipo de token nos hayamos. Se diferencian cinco tipos de token: sentence initial token: Es el primer token de la oracin. o o sentence final token: El ultimo token de la oracin. sentence alternative init token: Anuncia el comienzo de varias ramas con distintas alternativas de segmentacin. o sentence alternative final token: Marca el n de las alternativas de segmentacin. o sentence normal token: Es el que se usa para representar cada una de las unidades lxicas que forman la oracin. e o Los cuatro primeros tipos pueden considerarse meramente estructurales, ya que no contienen informacin real de la oracin. En los tokens de los tipos o o estructurales las listas de etiquetas y lemas estn vac y el elemento word a as, contiene de nuevo el nombre del tipo de token. Cada token de tipo sentence normal token representa una unidad de etiquetacin. Como se puede ver, cada token contiene un elemento word en el o que se guarda la palabra etiquetada. Adems, incluye una lista de etiquetas a y lemas posibles. Cabe destacar que estas dos listas siempre tienen la misma longitud, ya que para cada etiqueta siempre hay un lema. Las etiquetas y lemas en las mismas posiciones de sus listas van emparejadas (la primera etiqueta con el primer lema, etc.). Adems, existe una lista que referencia a los siguientes tokens de la oracin y a o otra que referencia a los anteriores. Normalmente, estas listas contendrn un a slo elemento, salvo que el token sea un comienzo o nal de alternativa. El o elemento tagged es slo un indicador para saber que el token est etiquetado. o a Por ultimo, la lista mate, permite enlazar cada token con la oracin original. o Esto se hace mediante dos coordenadas (x,y) que continen las posiciones de comienzo y nal de la posicin de la oracin original a la que respresenta este o o token. sentence Una oracin se dene mediante el tipo struct sentence , que incluye la oracin o o original en texto plano y una referencia al primer token de la oracin, que es o tipo sentence initial token. struct sentence{ struct sentence token *first;

60

CAP ITULO 5. ANALISIS

Figura 5.1: Ejemplo de una representacin para una frase. o gchar *org sentence; }; Un ejemplo de representacin de una frase, a modo ilustrativo, utilizando la o estructura token ser el que se muestra en la gura 5.1. a El preprocesador impone como restriccin que no existan una lista de alternativas o en el interior de otra o lo que es lo mismo no permite anidamientos de alternativas.

5.3.

Diagrama de casos de uso global

En esta seccin se presentar el diagrama de casos de uso general del sistema o a y se irn detallando los casos de uso para especicar los objetivos y requisitos del a sistema. En el diagrama de casos de uso de la gura 5.2 se reeja el funcionamiento del sistema completo. La interaccin con el usuario se realiza a travs del preprocesador, o e y es ste el encargado de lanzar nuestro mdulo o subsistema. Aunque el caso de e o uso Analizar texto ya exista previamente, lo inclu mos aqu para ofrecer una visin o global del funcionamiento de nuestro sistema. En la gura 1.6 se mostraba una visin o global del funcionamiento del preprocesador, ahora nuestro mdulo a desarrollar se o aplicar en ultimo lugar. a

5.4.

Caso de uso: Aplicar corrector

Este caso de uso es el encargado de aplicar la correccin sobre una frase o previamente preprocesada. Es el principal caso de uso de nuestro sistema y por ello se ha considerado necesario dividirlo en otros ms sencillos para explicarlo a detalladamente, como se puede ver en el diagrama 5.3. Aplicar correccin(escenario principal) o Descripcin: Este escenario describe el proceso mediante el cual se aplica el o corrector ortogrco sobre una frase recibida desde el preprocesador. a

5.4. CASO DE USO: APLICAR CORRECTOR

61

Figura 5.2: Diagrama de casos de uso global. Precondiciones: La frase tiene que haber sido tratada previamente por el preprocesador Flujo principal: 1. El preprocesador se encarga de lanzar la correccin, enviando la frase a corregir. o 2. El sistema, para cada palabra que a n no tiene etiqueta aplica la b squeda de u u correcciones global ( se ejecuta aqu el caso de uso extendido Buscar coreccin o global)[Alternativa 1]. 3. Una vez que se ha obtenido una lista con las correcciones (de tipo global o regional), el sistema debe enlazar esas correcciones en la estructura de la frase original(se ejecuta aqu el caso de uso inclu Enlazar correcciones). do 4. El sistema comprueba si en las correcciones inclu das en la frase existe alguna posible contraccin (se ejecuta aqu el caso de uso inclu Revisar nuevas o do contracciones). 5. El sistema vuelve al paso 2 mientras existan palabras sin etiqueta. 6. El sistema comprueba la existencia de nuevas locuciones en la frase con las correcciones (se ejecuta aqu el caso de uso inclu do Revisar nuevas expresiones.)

62

CAP ITULO 5. ANALISIS

Figura 5.3: Diagrama de casos de uso para Aplicar corrector. Flujo alternativo: Alternativa 1: Si el mtodo de correccin a aplicar es el global entonces se e o ejecuta aqu el caso de uso extendido Buscar correccin regional. o Poscondiciones: Para cada palabra sin etiquetar y con posibles correcciones se han incorporado stas a la frase original. e

5.4. CASO DE USO: APLICAR CORRECTOR

63

Figura 5.4: Diagrama de secuencia del anlisis: Aplicar correccin a o

64

CAP ITULO 5. ANALISIS

Figura 5.5: Diagrama de colaboracin del anlisis: Aplicar correccin o a o

Figura 5.6: Diagrama de actividades del anlisis: Aplicar correccin a o

5.4. CASO DE USO: APLICAR CORRECTOR

65

5.4.1.

Aplicar correccin: Buscar correccin global o o

Descripcin: Este caso de uso obtiene las posibles correcciones para una palabra o desconocida, aplicando para ello la tcnica de correccin global desarrollada por e o Savary [12], que se describe en el algoritmo 1. Precondiciones: Este caso de uso extiende siempre del caso de uso Aplicar correccin. o El usuario ha congurado el corrector indicando como tipo de b squeda el u mtodo global de Savary . e La palabra no puede estar etiquetada. Flujo principal: 1. El sistema se encarga de aplicar el mtodo de b squeda global sobre la palabra e u desconocida. 2. Se incorporan los resultados obtenidos a la lista de correcciones para esa palabra, guardando la distancia de edicin m o nima para los resultados. 3. Se aplica el mtodo de b squeda global sobre la unin de la palabra previa y e u o la palabra desconocida. 4. Si la distancia de edicin es menor que la previa se sobrescribe la lista con los o nuevos resultados.[Alternativa 1]. 5. Se encarga aplica el mtodo de b squeda global sobre la unin de la palabra e u o desconocida y la palabra posterior. 6. Si la distancia de edicin es menor que la previa se sobrescribe la lista con los o nuevos resultados.[Alternativa 1]. 7. Se devuelven la lista con las posibles correcciones cuya distancia de edicin o respecto a la palabra desconocida es m nima. Flujo alternativo: Alternativa 1: Si la distancia de edicin es igual se a aden los nuevos resultados o n a los ya existentes. En caso contrario no se hace nada. Poscondiciones: Se devuelve una lista de correcciones candidatas para la palabra desconocida, que podr estar vac a a.

66

CAP ITULO 5. ANALISIS

Figura 5.7: Diagrama de secuencia del anlisis: Buscar correccin global a o

5.4. CASO DE USO: APLICAR CORRECTOR

67

Figura 5.8: Diagrama de colaboracin del anlisis: Buscar correccin global o a o

Figura 5.9: Diagrama de actividades del anlisis: Buscar correccin global a o

68

CAP ITULO 5. ANALISIS

5.4.2.

Aplicar correccin: Buscar correccin regional o o

Descripcin: Este caso de uso obtiene las posibles correcciones para una palabra o desconocida, aplicando para ello la tcnica de correccin regional [15]. e o Precondiciones: Este caso de uso extiende siempre del caso de uso Aplicar correccin. o El usuario ha congurado el corrector indicando como tipo de b squeda el u mtodo de correccin regional. e o La palabra no puede tener una etiqueta. Flujo principal: 1. Se aplica el mtodo de b squeda regional sobre la palabra desconocida. e u 2. Se incorpora los resultados obtenidos a la lista de correcciones para esa palabra, guardando la distancia de edicin m o nima para los resultados. 3. Se aplica el mtodo de b squeda regional sobre la unin de la palabra previa e u o y la palabra desconocida, buscando errores multipalabra. 4. Si la distancia de edicin es menor que la previa se sobrescribe la lista con los o nuevos resultados.[Alternativa 1]. 5. Se aplica el mtodo de b squeda regional sobre la unin de la palabra e u o desconocida y la palabra posterior. 6. Si la distancia de edicin es menor que la previa se sobrescribe la lista con los o nuevos resultados.[Alternativa 1 ]. 7. Se devuelven la lista con las posibles correcciones con distancia de edicin o m nima respecto a la palabra desconocida. Flujo alternativo: Alternativa 1: Si la distancia de edicin es igual se a aden los nuevos resultados o n a los ya existentes. Si la distancia es mayor no se hace nada. Poscondiciones: Se devuelve una lista de correcciones candidatas para la palabra desconocida, que podr estar vac a a.

5.4. CASO DE USO: APLICAR CORRECTOR

69

Figura 5.10: Diagrama de secuencia del anlisis: Buscar correccin regional a o

70

CAP ITULO 5. ANALISIS

Figura 5.11: Diagrama de colaboracin del anlisis: Buscar correccin regional o a o

Figura 5.12: Diagrama de actividades del anlisis: Buscar correccin regional a o

5.4. CASO DE USO: APLICAR CORRECTOR

71

5.4.3.

Aplicar correccin: Enlazar correcciones o

Descripcin: Este caso de uso se encarga de integrar una lista de correcciones para o una palabra desconocida en la estructura original recibida desde el preprocesador. Este caso de uso se ejecuta siempre desde el caso de uso Aplicar correccin. o Precondiciones: Se ejecuta cada vez que se examina una palabra no etiquetada. Flujo principal: 1. Si existen correcciones candidatas para la palabra, entonces se unirn a las posibles alternativas siguiendo la misma estructura que utiliza el preprocesador. 2. Se comprueba si en la lista de correcciones no existen correcciones multipalabra [Alternativa 1]. 3. Si la palabra desconocida no se incluye como posible candidata y solo existe una correccin en la lista, se realiza la sustitucin directamente en la frase o o original [Alternativa 2]. Flujo alternativo: Alternativa 1: Si existen correciones multipalabra con la palabra anterior a la desconocida se invoca el caso de uso extendido Enlazar correciones multipalabra previa. Si existen correcciones multipalabra con la palabra posterior, se aplica el caso de uso extendido Enlazar correcciones multipalabra posterior. Alternativa 2: Si hay ms de una correccin posible se debe crear una nueva a o alternativa dentro de la frase con todas las opciones. Poscondiciones: Se devuelve un apuntador al lugar en donde se ha realizado el cambio en la frase.

72

CAP ITULO 5. ANALISIS

Figura 5.13: Diagrama de secuencia del anlisis: Enlazar correcciones a

5.4. CASO DE USO: APLICAR CORRECTOR

73

Figura 5.14: Diagrama de colaboracin del anlisis: Enlazar correcciones o a

74

CAP ITULO 5. ANALISIS

Figura 5.15: Diagrama de actividades del anlisis: Enlazar correcciones a

5.4. CASO DE USO: APLICAR CORRECTOR

75

5.4.4.

Aplicar correccin: Revisar nuevas contracciones o

Descripcin: Este caso de uso examina si alguna de las correcciones realizadas o coincide con alguna de las contracciones del lenguaje. Precondiciones: Este caso de uso se aplica una vez que las correcciones a una palabra se han integrado en la frase. Flujo principal: 1. Si existen correciones a la palabra desconocida se examinan. 2. Se comprueba si la correccin que coincide con alguna contraccin se o o encontraba dentro de una lista de alternativa o bifuracin.[Alternativa 1] o 3. Se crea la estructura necesaria para a adir la contraccin como una nueva n o correccin. o 4. Se enlaza la nueva correccin a la lista de alternativas. o 5. Si hay ms alternativas en la lista se vuelve al paso 2. a Flujo alternativo: Alternativa 1: Si la correcin no forma parte de una alternativa signica que o hab una sola correccin posible y no se incluye la palabra desconocida como a o alternativa. En este caso, se aplica el mdulo de deteccin de contracciones o o existente en el preprocesador. Poscondiciones: Si exist alguna posible contraccin en las nuevas contracciones a o se ha incorporado como tal.

76

CAP ITULO 5. ANALISIS

Figura 5.16: Diagrama de secuencia del anlisis: Revisar nuevas contracciones a

5.4. CASO DE USO: APLICAR CORRECTOR

77

Figura 5.17: Diagrama de colaboracin del anlisis: Revisar nuevas contracciones o a

78

CAP ITULO 5. ANALISIS

Figura 5.18: Diagrama de actividades del anlisis: Revisar nuevas contracciones a

5.4. CASO DE USO: APLICAR CORRECTOR

79

5.4.5.

Aplicar correccin: Revisar nuevas expresiones o

Descripcin: Este caso de uso se encarga de revisar la existencia de posibles o locuciones como resultado de las nuevas correcciones. Precondiciones: Exist alguna palabra sin etiqueta en la frase, es decir, ha habido cambios en a la frase. Flujo principal: 1. Se aplica el mdulo de deteccin de locuciones seguras del preprocesador. o o 2. Se aplica el mdulo de deteccin de locuciones no seguras del preprocesador. o o Poscondiciones: Si las correcciones aplicadas coincid con alguna locucin, esta an o ha sido a adida a la lista de alternativas. n

80

CAP ITULO 5. ANALISIS

Figura 5.19: Diagrama de secuencia del anlisis: Revisar nuevas expresiones a

Figura 5.20: Diagrama de colaboracin del anlisis: Revisar nuevas expresiones o a

5.4. CASO DE USO: APLICAR CORRECTOR

81

Figura 5.21: Diagrama de actividades del anlisis: Revisar nuevas expresiones a

82

CAP ITULO 5. ANALISIS

5.5.

Caso de uso: Congurar corrector

Este caso de uso es el encargado de cargar los parmetros de conguracin del a o corrector ortogrco. Estos parmetros se encuentrn almacenados en un chero en a a a formato xml. El usuario es el encargado de introducir sus preferencias en el chero mencionado. Una vez que se ejecute el preprocesador, si se ha activado la opcin o para utilizar el corrector ortogrco, es decir, nuestro sistema, entonces se cargar la a a informacin procedente del chero. Se utilizar un parser sax para leer su contenido o a y almacenarlo en memoria. Descripcin: Este caso de uso tiene como objetivo establecer los parmetros de o a conguracin del corrector ortogrco. o a Precondiciones: Durante el lanzamiento del preprocesador la opcin para que se ejecute el o mdulo de correccin tiene que estar activada. o o La ruta donde se encuentra el archivo de conguracin ha de ser correcta. o Flujo principal: 1. El preprocesador llama a un analizador de cheros xml para cargar el contenido del archivo. 2. El analizador lee el contenido del archivo y lo almacena. 3. Mientras no se llegue al nal del archivo se vuelve al paso anterior. 4. El analizador devuelve al preprocesador la informacin contenida en el archivo. o Poscondiciones: El preprocesador ahora conoce los parmetros para congurar a la correccin. o

5.5. CASO DE USO: CONFIGURAR CORRECTOR

83

Figura 5.22: Diagrama de secuencia del anlisis: Congurar correccin a o

Figura 5.23: Diagrama de colaboracin del anlisis: Congurar correccin o a o

84

CAP ITULO 5. ANALISIS

5.6.

Diagrama de clases

Figura 5.24: Diagrama de clases del anlisis. a

Cap tulo 6 Diseo n


En esta fase del desarrollo, se detalla como se van a constru los requisitos r iniciales descritos durante la fase de anlisis. Para ello, se realizar el diagrama de a a clases; se describir con detalle cada una de esas clases, sus funciones y atributos; y a se realizarn los diagramas de secuencia propios de esta etapa. a Es importante aclarar que dado que nuestro proyecto no ha sido implementado con un lenguaje de programacin orientado a objetos, la correspondencia con las o clases no va a ser directa. Por este motivo, asociaremos las clases con entidades lgicas empleadas por nuestro sistema, generalmente, se van a corresponder con o mdulos o estructuras de datos. o

6.1.

Diagrama de clases

El diagrama de clases representa el funcionamiento global del sistema, es decir, la forma en que ste se relaciona con las unidades lgicas existentes previamente. e o Las clases desarrolladas en este proyecto son el Sistema Corrector y el Parser Corrector, sin embargo, para comprender el funcionamiento del sistema completo se hace necesario la representacin de todas las clases utilizadas. A continuacin, se o o har un breve resumen de las clases empleadas con sus mtodos ms destacados y se a e a explicar con detalle aquellas clases que debemos implementar en nuestro sistema. a En la gura 6.1, se muestra el diagrama de clases general del dise o. n 85

86

CAP ITULO 6. DISENO

Figura 6.1: Diagrama de clases del dise o. n

6.2.

Diccionario de clases

En esta seccin se detallar cada una de las clases que forman el diagrama de o a clases de la gura 6.1.

6.2. DICCIONARIO DE CLASES

87

6.2.1.

Sistema corrector (s checker)

El Sistema corrector es el n cleo de nuestro proyecto. Su objetivo es aplicar la u b squeda de correcciones sobre las palabras que despus de haber sido preprocesadas u e no se han podido etiquetar, esto es, son palabras desconocidas. Para ello recorre la frase a corregir. Si encuentra alguna palabra no etiquetada, aplicar sobre ella la a b squeda de correcciones, aplicando tcnicas de correccin de tipo regional o global. u e o El hecho de que una palabra no aparezca en el lexicn es condicin necesaria, o o pero no suciente, para determinar que estamos ante un error ortogrco. Con el a objetivo, de no descartar la posibilidad de que una palabra, a n no estando en u el lexicn sea correcta, se puede inclu junto a las alternativas devueltas por el o r corrector la palabra original. Este opcin es congurable por el usuario. o

Figura 6.2: Diagrama de clases parcial. Uno de los objetivos principales del proyecto, tal y como se describi en la seccin o o 1.5, es la ampliacin de tipos de errores a considerar por el corrector. Para corregir o los errores ortogrcos que resultan de unir dos palabra, por ejemplo, si escribimos a sinembargo en lugar de sin embargo; es necesario realizar modicaciones dentro de las propias clases Corrector global y Corrector regional, que explicaremos ms adelante. a No obstante, la correccin de errores ortogrcos que resultan de dividir una palabra o a en dos, por ejemplo, si se escribe desapa ricin en lugar de desaparicin, se llevar a o o a cabo desde esta clase. Para afrontar el manejo de los errores que resultan de dividir una palabra en dos, sabiendo que partimos de una estructura de tipo token no etiquetada (la palabra a

88

CAP ITULO 6. DISENO

la que representa no se encontraba en el lexicn), se tendrn en cuenta tres casos o a posibles: tipo 0: Se buscara correcciones para esa palabra de forma individual, a estas correcciones se le asignar de tipo 0. a tipo 1: Siempre que el token anterior al de la palabra desconocida represente a a una palabra, su tipo tiene que ser sentence normal token, se buscarn correcciones para la unin o concatenacin de la palabra anterior y la palabra o o desconocida a tratar. A las correcciones aqu obtenidas se le asignar el tipo a 1. tipo 2: Siempre que el token siguiente a la palabra desconocida represente a una palabra, su tipo tiene que ser sentence normal token, se buscarn a correcciones para la unin o concatenacin de la palabra desconocida y la o o palabra siguiente. Estas correcciones sern de tipo 2. a A partir de ahora, las b squedas en las que se apliquen estos tres casos se u denominarn bsqueda multitoken. a u En la seccin 5.2 se describi la estructura sentence que representa una frase en o o el preprocesador. Se explic tambin que esta estructura no admite anidamientos de o e alternativas. En consecuencia, no es viable aplicar de forma secuencial, sobre todas las palabras de una frase, los tres tipos de b squeda que se acaban de describir; u la existencia de varios errores consecutivos provocar solapamientos que se deben an evitar. La solucin propuesta en este proyecto se describe a continuacin. o o El Sistema Corrector recorre la frase recibida desde el preprocesador, en el momento que se encuentre un token no etiquetado (se establecer un contador a a cero), se aplicar la b squeda multitoken sobre esa palabra. Se seguir recorriendo a u a la frase y si el siguiente token no est etiquetado no se aplica la b squeda sobre l, a u e pues ya ha sido tratado junto al token anterior. Respecto al segundo token encontrado despus de haberse aplicado la bsqueda multitoken slo se trata si la palabra del e u o token siguiente a este es conocida y slo se aplica la b squeda de correcciones para o u ese token de forma individual. Para el tercer token a partir del ultimo sobre el que se haya aplicado la bsqueda u multitoken se vuelve a empezar (el contador se reinicia). En este punto, si el token no est etiquetado, se aplica sobre l la b squeda de correcciones de los tres tipos. a e u De esta forma, si el token anterior fuese incorrecto ser tratado aqu tal como se a , ilustra en la gura 6.5. Se ilustrar el funcionamiento que acabamos de explicar mediante tres situaciones a posibles. En las guras utilizadas un cuadrado representa un token y el asterisco representa que ese token no tiene etiquetas. Para la gura 6.3, se aplicar la bsqueda a u multitoken, representada por las tres echas punteadas, sobre el token 2 y sobre

6.2. DICCIONARIO DE CLASES

89

token 5. En la gura 6.4, se aplica la bsqueda multitoken sobre el token 2 y se u realiza la b squeda de correcciones individual sobre el token 4. u

Figura 6.3: Representacin de una frase con dos errores consecutivos. o

Figura 6.4: Representacin de una frase con dos errores con una palabra correcta o entre ellos.
TOKEN 1 TOKEN 2 TOKEN 3 TOKEN 4 TOKEN 5 TOKEN 6

*
cont=1

cont=0

cont=1

cont=2

cont=0

Figura 6.5: Representacin de una frase con tres errores separados por una palabra o correcta. En la gura 6.6 se representa una situacin ms compleja. Para el token 2 se o a aplica la bsqueda multitoken, sin embargo como el siguiente token no es de tipo u u o sentence normal token, no se aplica la b squeda sobre la concatenacin de la palabra del token 2 y la palabra del token 3. Adems, se puede comprobar a como var el funcionamiento del contador (cont en las guras), se reinicia cuando a encontremos una palabra sin etiqueta, siempre que el contador sea mayor de 2. Las correcciones que se obtienen para cada token se guardan en una lista y se deben enlazar en la estructura que representa la frase. Las correcciones tienen que

90

CAP ITULO 6. DISENO

Figura 6.6: Representacin de una frase con varios errores. o indicar el tipo (0, 1 2) de b squeda del que proceden, para poder realizar su o u integracin de forma correcta en la frase. o Cada correccin sigue el formato: o tipo palabra1 [palabra2] [/] [palabra3] [palabra4] Donde tipo indica el n mero que representa el tipo de la b squeda del que proviene u u esa correccin. La / separa las correcciones de un token original de la frase de las o correcciones de otro token, por tanto slo puede aparecer la / en las correcciones o de tipo 1 y 2. Si la correccin es de tipo 1 la palabra o palabras que preceden a la barra o se corresponden con correcciones para el token anterior al que se trata y la palabra o palabras que aparecen despus de la barra se corresponden con el e token actual. Si la correccin es de tipo 2 la palabra o palabras que preceden a la barra se o corresponden con correcciones para el token actual y la palabra o palabras que aparecen despus de la barra se corresponden con el token siguiente al que se e trata.

6.2. DICCIONARIO DE CLASES

91

Una correccin de tipo 1 en la que no aparezca la /indica que la palabra es o una correccin para la unin del token actual y el anterior a ste. o o e Una correccin de tipo 2 en la que no aparezca la /indica que la palabra es o una correccin para la unin del token actual y el siguiente a ste. o o e

Figura 6.7: Estructura recibida por el Sistema Corrector. Por ejemplo, para la frase: la desaapa ricin del ni o, en la gura 6.7 o n se representa la estructura recibida por el Sistema corrector, se obtendr dos an correcciones de distancia de edicin m o nima a partir de la palabra desaapa: 2 destapa 2 desaparicin o / racin o

La primera indica que destapa es una correccin para el token que representa o a la palabra desaapa y racin es una correccin para el token siguiente, que o o representa a ricin. La segunda correccin desaparicin, es una correccin o o o o formada por una sola palabra pero representa a dos tokens, el actual y el siguiente, esto lo sabemos por el cdigo 2 que indica que esta correccin se ha producido como o o resultado de unir la palabra del token actual y la del siguiente. Despus de enlazar las e correcciones en la estructura de la frase se debe obtener el resultado que se muestra en la gura 6.8.

Figura 6.8: Estructura despus de haber aplicado el Sistema Corrector. e Una vez que hemos integrado las correcciones obtenidas en la estructura de la frase, se vuelve a aplicar la deteccin de contracciones y de expresiones del o lenguaje. Las contracciones se detectarn justo despus de enlazar las correcciones a e

92

CAP ITULO 6. DISENO

para cada token en la estructura que representa a la frase. De este modo, slo se o aplicar el mdulo de deteccin de contracciones sobre los tokens afectados por las a o o correcciones. El mdulo de deteccin de contracciones existente en el preprocesador o o no estaba pensado para tratar listas de alternativas para una o varias palabras, pues se ejecutaba antes que estas pudiesen existir en la frase; por este motivo se ha modicado su funcionamiento para adaptarlo a nuestras necesidades. Para controlar la aparicin de nuevas locuciones, surgidas a ra de los cambios o z realizados con las correcciones, se aplican los mdulos de deteccin de locuciones o o (seguras o inseguras) del preprocesador sobre toda la frase. Esto signica que se aplican slo una vez sobre la frase corregida completa y unicamente si ha tenido o lugar alguna correccin. El motivo que nos ha llevado a realizar la deteccin sobre o o toda la frase, y no slo sobre la seccin modicada, se debe a que una correccin de o o o una palabra puede coincidir con la ultima o la primera de una locucin en las que o el resto de las palabras eran correctas. Por tanto, se ha considerado ms eciente a aplicar la deteccin para intentar encontrar nuevas locuciones solamente una vez o que se haya nalizado la correccin sobre toda la frase. La gura 6.9 muestra la o estructura de la frase para la secuencia original cabbo antes y despus de ser o e revisada por el mdulo de contracciones. o Un ejemplo representativo de la deteccin de nuevas contracciones y locuciones o ser sveces, como se muestra en la gura 6.10. En ella se muestra la evolucin a a o del token desde que se recibe en el Sistema Corrector, suponiendo que la lista de correcciones est formada por una unica correccin (0 s veces), hasta que se a o a devuelve al Sistema Preprocesador. Despus el preprocesador enviar esta informacin al etiquetador MrTagoo que e a o se encargar de desambiguar la frase en funcin del contexto, es decir, eligir la ruta a o a ms probable dentro de cada lista de alternativas. a A continuacin, se describirn los atributos y mtodos ms importantes dentro o a e a de la clase Sistema Corrector. Atributos: t s checker: Estructura que almacena los datos necesarios para congurar la correccin a aplicar. Est compuesta por los siguientes elementos: o a

global search word incorrect regions autom ext umbrales

Indica si la b squeda es global o no(regional). u Indica si la palabra desconocida se incluye como alternativa. Indica la ruta del chero donde se encuentran las regiones. Autmata extendido necesario para la b squeda regional. o u Distancia mxima permitida con la palabra desconocida. a

6.2. DICCIONARIO DE CLASES

93

Figura 6.9: Representacin de cabbo antes y despus de llamar al mdulo de o o e o deteccin de locuciones. o corrections: Lista que almacena para las correcciones obtenidas para cada token con el formato explicado anteriormente. Mtodos: e apply spell checker(): Recibe una frase desde el preprocesador y para cada palabra desconocida busca las posibles correcciones. busqueda global multitoken(): Aplica la b squeda de correcciones u individuales y multipalabra sobre la palabra desconocida, utilizando el mtodo e de correccin global. o busqueda regional multitoken(): Aplica la b squeda de correcciones sobre u la palabra desconocida utilizando el mtodo de correccin regional. e o

94

CAP ITULO 6. DISENO

Figura 6.10: Representacin de la evolucin de la estructura de la frase en el Sistema o o corrector. link corrections(): Se encarga de enlazar las correcciones obtenidas para la palabra desconocida en la estructura de datos original. revise contractions(): Comprueba si alguna de las correcciones coincide con alguna contraccin y, si es as la incluye como posible correccin. o , o revise expressions(): Comprueba si la frase sobre la que se han hecho las correcciones contiene alguna locucin y, si es as la incluye como posible o , correccin. o update prev corrections(): Actualiza la lista de correcciones con las obtenidas uniendo la palabra desconocida con la anterior. Para explicar el funcionamiento del mtodo se distinguen tres posibles casos: e 1. Si la distancia de edicin de las nuevas correcciones es menor a la distancia o de las correcciones ya existentes en la lista (realizadas para la palabra desconocida individualmente), se reemplazan la lista de correcciones por las nuevas.

6.2. DICCIONARIO DE CLASES

95

2. Si la distancia de edicin de las nuevas correcciones es igual a la distancia o de las correcciones ya existentes en la lista (realizadas para la palabra desconocida individualmente), entonces se debe comprobar si la palabra anterior es desconocida o no. Si no lo es entonces se a aden las nuevas n correcciones a la lista de correcciones y se hacen las combinaciones de resultado necesarias. En caso contrario se reemplazan. 3. Si la distancia de edicin de las nuevas correcciones es mayor a la distancia o de las correcciones ya existentes en la lista (realizadas para la palabra desconocida individualmente) entonces, al igual que en el caso anterior, se debe comprobar si la palabra anterior es desconocida o no. Si es desconocida se debe buscar las correcciones para esa palabra y comparar la suma de la distancia de edicin de las correcciones de las dos palabras o individualmente frente a la distancia de edicin de las correcciones para o la unin de ambas. En funcin de los resultados obtenidos, se realizaran o o las combinaciones pertinentes en la lista de correcciones. update next corrections(): Actualiza la lista de correcciones con las obtenidas para la palabra desconocida unida a la siguiente. Es similar al mtodo anterior, pero var la forma en la que se hacen las modicaciones e a sobre la lista de correcciones. create token(): Crea un nuevo token que represente a una palabra, debe buscarlo en los diccionarios create complete token(): Crea un token a partir de una forma, etiqueta y lema. create alternative(): Crea una nueva estructura para reejar una lista de alternativas dentro de la frase. Aunque exist un mtodo similar en el a e preprocesador, no contemplaba la posibilidad de crear la alternativa con varios tokens dentro para una misma palabra. clone complete token(): Crea un token a partir de otro copiando su forma, etiqueta, lema y coordenadas que ocupa en la frase original. delete token(): Elimina un token dentro de una frase, es decir, une el token anterior y el posterior y luego elimina el token a borrar. merge alternative(): Crea una nueva alternativa y la une a una lista de alternativas ya existente. alternative exists(): Comprueba que una secuencia de tokens no forme parte ya de una lista de alternativas.

96

CAP ITULO 6. DISENO contraction check alternatives(): Revisa la existencia de palabras que coincidan con una contraccin en el interior de una lista de alternativas. o En caso de coincidencia, une la nueva o nuevas alternativas a la lista. La complejidad de este mtodo radica en la prohibicin de anidamiento de e o alternativas dentro de la estructura sentence, que signica que no pueden existir una lista de alternativas dentro de otra.

6.2.2.

Parser corrector

Esta clase representa el mdulo encargado de cargar en memoria el contenido o del chero xml de conguracin del Sistema corrector. o Atributos toptions sc: Esta es la estructura utilizada para cargar en memoria los datos procedentes del chero de conguracin. Est formada por los elementos de la o a siguiente tabla: field content is path config dir sc Se utiliza para leer el contenido del chero Indica si se est tratando una ruta o no. a Directorio en donde se encuentre el chero. Estructura de tipo t s checker donde se guarda la conguracin del corrector. o

Mtodos e parse config file sc(): Este mtodo carga en memoria la informacin e o procedente del chero de conguracin del corrector mediante la utilizacin o o de un parser sax.

6.2.3.

Preprocesador

Esta clase representa al preprocesador morfolgico. Se explicarn aqu aquellos o a atributos y mtodos modicados para poder integrar el sistema corrector en el propio e preprocesador. Atributos context: Esta es la estructura que contiene toda la informacin necesaria o para el funcionamiento del preprocesador. A los datos que ya contiene se le a adirn los elementos necesarios para integrar nuestro sistema corrector. n a

6.2. DICCIONARIO DE CLASES spell checker sc Indica si el sistema corrector se debe aplicar o no. Son los parmetros de conguracin del corrector, a o se corresponde con una estructura de tipo t s checker.

97

Mtodos e build context(): Inicializa todos los parmetros necesarios para el a preprocesador. Entre ellos, la estructura encargada de congurar el corrector. mrtgp build sentenceXML2memory(): Aplica los mdulos o de preprocesamiento de los datos. Desde aqu y en ultimo lugar, se invoca , el sistema corrector que se va a desarrollar.

6.2.4.

Parser preprocesador

Esta clase recibe los parmetros de entrada, es decir, aquellos que el usuario a establece para llamar al programa, y los carga en una estructura en memoria. Se emplea un parser sax para leer la informacin que se encuentra en el chero xml de o conguracin. El usuario debe indicarle al preprocesador la ruta del directorio en la o que se encuentra este chero. Adems, desde esta clase se llamar a la clase Parser a a corrector, que se encarga de leer el chero de conguracin del Sistema corrector. o Atributos toptions: Estructura en la que se almacena la informacin procedente del o chero de conguracin. Se a ade el elemento spell checker file, que o n guarda la ruta del chero de conguracin del Sistema corrector. o Mtodos e parse args(): Toma los datos de entrada del usuario, as como la informacin o procedente del chero de conguracin y los carga en la estructura toptions. o

6.2.5.

Corrector regional (Bureg)

Esta clase representa el mdulo encargado de realizar la bsqueda de correcciones o u ortogrcas de tipo regional. Se ampliar los tipos de error manejados (insercin, a a o intercambio, transposicin y borrado), de forma que se incluya tambin el error de o e unin de dos palabras en una sola. o

98 Atributos

CAP ITULO 6. DISENO

tbureg: Contiene todos los datos necesarios para realizar la b squeda. Adems, u a tambin guardar los resultados obtenidos. e a Mtodos e busqueda regional(): Busca todas las posibles correcciones de coste regional m nimo para una palabra recibida. obt items union(): Se a ade est mtodo al Corrector regional para obtener n e e correcciones para una palabra en las que se haya saltado un espacio en blanco entre dos palabras correctas. Por ejemplo, para la palabra casaverde se obtiene la correccin casa verde, en donde las palabras casa y verde o forman parte del diccionario. obt items error(): Se modica este mtodo para que a las correcciones e obtenidas para los errores de insercin, intercambio, transposicin y borrado o o se a adan los obtenidos por el mtodo obt items union(). n e

6.2.6.

Corrector global (Savary)

Esta clase representa el mdulo encargado de realizar la bsqueda de correcciones o u ortogrcas de tipo global . a Atributos palabras: Estructura en la que se almacenan el n mero de correcciones a u una palabra, las correcciones en s y la distancia de edicin con respecto a la o palabra desconocida. Mtodos e busqueda tolerante(): Obtiene todas las posibles correcciones para una palabra desconocida con distancia de edicin m o nima. Esta distancia debe ser menor o igual a un umbral pasado como parmetro. Se modica este mtodo a e para que tambin detecte errores de unin de dos palabras, en los que se escriba e o dos palabras seguidas sin un espacio en blanco entre ellas.

6.2.7.

MrTagoo

Esta clase representa al etiquetador que se encargar de eliminar las a ambig edades a nivel morfosintctico y ,adems, puede escoger entre ujos de tokens u a a

6.2. DICCIONARIO DE CLASES

99

con distinta longitud. Como salida se obtiene el texto segmentado y desambiguado. Para su implementacin se utilizan los Modelos de Markov junto a una extensin o o del algoritmo de Viterbi explicados en la subseccin 1.4.1. o Mtodos e lattice build lattice(): Como resultado de su aplicacin se obtiene una o unica etiqueta para cada token.

6.2.8.

Contractions

Esta clase representa el mdulo de contracciones que se encarga de dividir una o contraccin en sus diferentes partes, etiquetando cada una de ellas. Para ello, utiliza o un chero de texto en el que se guarda una lista donde se especica como se descomponen todas las contracciones del lenguaje. Por ejemplo, para el token do (del) su salida ser dos tokens distintos, uno de ellos con la preposicin de y en an o otro el art culo o. Atributos contraction token: guarda una contraccin y las formas en la que sta se o e puede descomponer. Mtodos e mrtgp contraction search contraction(): Comprueba si una palabra dada coincide con alguna contraccin y devuelve el atributo contraction token o correspondiente. mrtgp contraction check word(): Engloba a la funcin anterior y, adems, o a construye la estructura de tokens para representar una lista de alternativas dentro de la estructura sentence. Entre estas alternativas se encuentra las posibles descomposiciones de la contraccin y, si la palabra aparece en el o lexicn, tambin se a ade como alternativa. o e n

6.2.9.

Expressions

Esta clase se encarga de unir los tokens que componen una locucin y de o etiquetarlos como una unidad conjunta. Existen dos diccionarios de locuciones: 1. Locuciones seguras: Incluye aquellas locuciones que se sabe con seguridad (morfolgicamente) que lo van a ser. A priori es un ejemplo de locucin segura. o o

100

CAP ITULO 6. DISENO

2. Locuciones inseguras: Incluye aquellas locuciones que pueden ser locuciones o no. Sin embargo es una expresin de este tipo porque no se sabe con seguridad o si es una locucin o si es por un lado sin (preposicin) y por otro embargo o o (sustantivo o verbo). Mtodos e mrtgp expression build all certain expressions: Detecta si existe alguna locucin segura en una frase y construye la estructura correcta o para sta. e mrtgp expression build all uncertain expressions: Detecta si existe alguna locucin insegura en una frase y construye la estructura correcta para o sta. e

6.2.10.

NADFA

Esta clase representa el diccionario, es decir, a la estructura afdan (en ingls) e explicada en la seccin 1.4.3. Contiene los mtodos necesarios para cargar un o e diccionario en memoria, acceder al ndice asociado a una palabra dada y viveversa.

6.2.11.

TOKEN

Esta clase representa una unidad lxica, originalmente se crea un token por cada e palabra. Sin embargo, como se ha explicado anteriormente, un token puede contener ms de una palabra 1 o una palabra puede generar ms de un token 2 . a a Como se ha explicado en la seccin 5.2 se diferencian cinco tipos de tokens. o

6.2.12.

SENTENCE

Esta clase representa una estructura en memoria de una frase a analizar. Est compuesta por la unin de los tokens que representan cada palabra de la frase a o para marcar el inicio y n de cada frase se utiliza un tipo de token especial.

6.2.13.

E/S

Esta clase incluye los cheros de conguracin que intervienen en la ejecucin o o del sistema. Adems del chero de conguracin del preprocesador, necesitaremos a o un chero para congurar el sistema corrector.
1 2

Como es el caso de las locuciones. Este el caso de las contracciones o de los verbos con pronombres encl ticos

6.2. DICCIONARIO DE CLASES

101

Este ultimo permite indicar si se desea que una palabra incorrecta forme parte tambin de las alternativas de correccin. Esto signica que ser el etiquetador el e o a que decida c al es la opcin ms probable para una palabra: que se trate de un u o a error ortogrco, y escoja entre una de las posibles correcciones, o que la palabra a realmente sea correcta pero no forme parte del lexicn. o Por otra parte, es en este chero el lugar donde el usuario debe indicar el tipo de correccin ortogrca a aplicar. Si se desea que la correccin se realice mediante o a o una tcnica de tipo global, se indica mediante una g, o si lo que se quiere es que e se aplique una tcnica de tipo regional se indica mediante una r. e Finalmente, se indican los umbrales mximos de error permitidos para encontrar a correcciones para una palabra desconocida. Para la correccin global slo se tiene o o en cuenta un umbral, pero para la correccin regional se pueden indicar umbrales o de error diferentes, en funcin del tipo de error (borrado, insercin, reemplazo o o o transposicin) que se est tratando. As si establecemos como umbral 2, no se o e , considerarn correcciones cuya distancia de edicin con la palabra desconocida sea a o mayor que 2. Se ver un ejemplo de la estructura del chero de conguracin en la seccin de a o o implementacin (7.1). o

102

CAP ITULO 6. DISENO

6.3.

Diagramas de secuencia para los casos de uso

En esta seccin se describirn con mayor detalle los diagramas de secuencia o a de los casos de uso del anlisis. Para la realizacin de los diagramas de secuencia a o del dise o se utilizarn algunas llamadas a funciones del preprocesador (empezarn n a a o con la siguiente secuencia mrtgp ...) para representar la interaccin con el resto del sistema.

6.3.1.

Caso de uso: Aplicar Correccin o

Figura 6.11: Diagrama de secuencia del dise o: Aplicar correccin n o

6.3. DIAGRAMAS DE SECUENCIA PARA LOS CASOS DE USO Aplicar Correccion: Buscar correccion global

103

Figura 6.12: Diagrama de secuencia del dise o: Buscar correccin global n o

104 Aplicar Correccion: Buscar correccion regional

CAP ITULO 6. DISENO

Figura 6.13: Diagrama de secuencia del dise o: Buscar correccin regional n o

6.3. DIAGRAMAS DE SECUENCIA PARA LOS CASOS DE USO Aplicar Correccion: Enlazar correcciones

105

Figura 6.14: Diagrama de secuencia del dise o: Enlazar correcciones n

106 Aplicar Correccion: Revisar nuevas contracciones

CAP ITULO 6. DISENO

Figura 6.15: Diagrama de secuencia del dise o: Revisar nuevas contracciones n

6.3. DIAGRAMAS DE SECUENCIA PARA LOS CASOS DE USO Aplicar Correccion: Revisar nuevas expresiones

107

Figura 6.16: Diagrama de secuencia del dise o: Revisar nuevas expresiones n

108

CAP ITULO 6. DISENO

Cap tulo 7 Implementacin y pruebas o


7.1. Implementacin o

En esta fase del desarrollo se traduce el modelo que se obtiene en el dise o n en cdigo fuente. En esta seccin se rese arn aspectos importantes en la o o n a implementacin de nuestro sistema. o

7.1.1.

Diagrama de componentes

Mediante el diagrama de componentes se modela la estructura del software, adems muestra la forma en la que se agrupan los componentes dentro de paquetes a y la relacin existente entre ellos. Este diagrama se muestra en la gura 7.1. o

7.1.2.

Fichero de conguracin o

El chero de conguracin est formado por el elemento ra conguration que o a z se compone por los siguientes elementos: word incorrect: Indica si se incluye la palabra incorrecta como alternativa de correccin (yes) o no se incluye (no). o regions: Fichero donde se almacenan las regiones. Se encuentra dentro del directorio de conguracin que se pasa como parmetro para invocar al o a programa. Si la b squeda es de tipo global no es necesario indicarlo. u search type: Indica si la tcnica empleada para realizar la correccin ortogrca e o a es de tipo global (g) o de tipo regional (r). tresholds: Establecen los umbrales de error mximos permitidos para encontrar a correcciones, es decir, los caracteres que dieren de la palabra original. 109

110

CAP ITULO 7. IMPLEMENTACION Y PRUEBAS

Figura 7.1: Diagrama de componentes consecutives: N mero mximo de errores de edicin consecutivos u a o permitidos. global: N mero de errores de edicin mximo permitidos. u o a local: Este elemento est formado por los siguientes componentes: a deletion: N mero de errores de borrado mximo permitidos. u a insertion: N mero de errores de insercin permitidos u o transposition: N mero de errores de transposicin permitidos. u o replacement: N mero de errores de reeemplazo permitidos. u La gura 7.2 muestra el contenido de un ejemplo para el archivo de conguracin o xml aqu descrito.

7.1. IMPLEMENTACION

111

Figura 7.2: Ejemplo de utilizacin del chero de conguracin s checker.xml. o o

7.1.3.

Detalles de implementacin o

Un dato relevante para nuestro sistema es el juego de codicacin de caracteres o empleado, en este caso ha sido ISO-8859-1. ISO 8859-1 es una norma de la ISO que dene la codicacin del alfabeto latino, o incluyendo los diacr ticos (como letras acentuadas, n, c), y letras especiales (como , ), necesarios para la escritura de la mayor parte de las lenguas originarias de Europa occidental como por ejemplo: espa ol, gallego, cataln, vasco, alemn, francs, ingls, n a a e e italiano, portugus, etc. Tambin se conoce como Alfabeto Latino n.o 1 o ISO Lat e e n 1. Esta norma pertenece al grupo de juegos de caracteres de la iso conocidos como iso/iec 8859 que se caracterizan por poseer la codicacin ascii en su rango inicial o (128 caracteres) y otros 128 caracteres para cada codicacin, con lo que en total o utilizan 8 bits. Kubuntu usa UTF-8 como juego de caracteres predeterminado, as que debemos cambiar la conguracin para establecer por defecto la codicacin ISO-8859-1. o o Para la codicacin del sistema se ha utilizado de forma preferente los tipos de o datos de la librer GLib 1 . Tiene especial importancia el tipo GSList, empleado a para guardar la lista de correcciones en nuestro sistema.

http://library.gnome.org/devel/glib/2.20/

112

CAP ITULO 7. IMPLEMENTACION Y PRUEBAS

7.2.

Pruebas

En esta seccin se detallan las pruebas llevadas a cabo para validar el o correcto funcionamiento del software desarrollado. Estas pruebas han sido realizadas paralelamente con el proceso se implementacin del software. o Una prueba se puede denir como una ejecucin del programa con la intencin o o de encontrar errores previos a la entrega al usuario. Se trata de buscar defectos en nuestro software.

7.2.1.

Pruebas de unidad

Estas pruebas se centran en cada unidad de software o mdulo individualmente, o realizando pruebas de caja blanca y de caja negra. Se tiene que probar que la informacin que uye entre los mdulos del sistema se hace de forma adecuada o o hacia y desde la unidad de programa que est siendo probada. Es necesario, por lo a tanto, probar cada componente de forma individual. Pruebas de caja blanca Las pruebas de caja blanca se encargan de validar la lgica interna de un mdulo. o o Su realizacin debe garantizar que: o Se recorren por lo menos todos los caminos de ejecucin independientes de o cada mdulo. o Se ejecutan todas las decisiones lgicas en su parte verdadera y en su parte o falsa. Se recorren todos sus bucles. Todas estas pruebas fueron realizadas durante la implementacin del sistema, o comprobando que los mdulos implementados cumplen los requisitos que acabamos o de describir Pruebas de caja negra Las pruebas de caja negra se centran en probar que se verican los requisitos funcionales del software, es decir, que las funciones para las cuales se ha dise ado el n sistema se cumplen sin errores. Los errores que se pretenden detectar mediante las tcnicas de caja negra son: e Funciones incorrectas o ausentes. Errores de rendimiento.

7.2. PRUEBAS Errores de inicializacin o terminacin. o o

113

Las pruebas de caja negra realizadas se han centrado en comprobar la integridad de los datos de entrada para el sistema, se han vericado los siguientes aspectos: T tulo: Resultado: Evaluacin o T tulo: Resultado: Evaluacin o T tulo: Resultado: Evaluacin o T tulo: Resultado: Evaluacin o Introducir un parmetro de ejecucin incorrecto a o Se muestra un mensaje de error indicando el problema ocurrido. Correcto Introducir un archivo de conguracin que no est bien o a formado Se muestra un mensaje de error indicando que ha habido problemas en el anlisis del chero. a Correcto Introducir una ruta de un archivo incorrecta en el chero de conguracin o Se muestra un mensaje de error indicando que no ha sido posible acceder al archivo. Correcto Introducir un dato incorrecto en el chero de conguracin o Se asigna el contenido establecido por defecto para esa opcin. o Correcto

7.2.2.

Pruebas de integracin o

Las pruebas de integracin se llevan a cabo durante la construccin del sistema o o e involucran los diferentes mdulos empleados y su cometido nal es la vericacin o o del sistema como conjunto. Dado que uno de los objetivos de este proyecto es la integracin de varias o herramientas, se ha comprobado, de forma individual y paralela a la incorporacin o de cada mdulo, que el funcionamiento era satisfactorio. Finalmente, se han hecho o una serie de pruebas globales obteniendo los resultados esperados

114

CAP ITULO 7. IMPLEMENTACION Y PRUEBAS

Parte III Manual de Usuario

115

Cap tulo 8 Instalacin y ejecucin o o


Es este cap tulo se detalla la informacin referente a los requisitos, la instalacin o o y la puesta en funcionamiento del sistema. Adems, se detalla la gu de uso para a a el usuario.

8.1.

Requisitos

En esta seccin se describen los requisitos, tanto hardware como software, o necesarios para poner en marcha el sistema.

8.1.1.

Requisitos hardware

Los requisitos hardware m nimos para el funcionamiento del sistema son los siguientes: cpu: La familia del preprocesador utilizada es indiferente, pero la frecuencia de reloj debe ser igual o superior a 1 ghz. Memoria ram: 512 mb (recomendable 1 gb). Disco duro: 20 gb.

8.1.2.

Requisitos software

Los requisitos software m nimos para el correcto funcionamiento del sistema son los siguientes: Sistema operativo gnu/Linux ya que la mayor de herramientas empleadas a han sido dise adas para estos sistemas. Se recomienda el uso de una n distribucin basada en Debian, tal como Ubuntu o Kubuntu, que ha sido la o 117

118

CAP ITULO 8. INSTALACION Y EJECUCION usada durante el desarrollo de nuestro sistema. Es importante instalar la versin de la distribucin elegida para arquitecturas de 32 bits, ya que el o o sistema no funciona con un equipo que tenga instalado un sistema operativo con una versin de 64 bits. o Compilador de c, se recomienda el uso de gcc. Librer necesarias para que el sistema pueda funcionar: as Glib-2.0 (2.14.1) que nos proporciona una gran cantidad de estructuras de datos y adems mejora la portabilidad entre diferentes plataformas. a libxml2 (2.6.30) para el manejo de los archivos de conguracin xml. o pkg-cong (0.22) que se utiliza como herramienta de ayuda para indicar las rutas a las cabeceras y/o librer durante la fase de compilacin. as o ex (2.5.33) es un programa utilizado para el reconocimiento de patrones lxicos en un texto. e Automake/autoconf tools.

8.2.
8.2.1.

Compilacin o
Compilacin de la librer del etiquetador MrTagoo o a

Para compilar los cheros del etiquetador el usuario debe abrir un terminal, situarse en el directorio ra de la librer y ejecutar las siguientes ordenes: z a aclocal autoheader autoconf automake --add-missing A continuacin, se debe ejecutar el chero congure. Se puede especicar una ruta o de instalacin de la librer mediante el uso del parmetro prex: o a a ./configure [--prefix=<ruta instalacion>] Por ejemplo: ./configure --prefix=/home/vanesa/MrTagoo. Por defecto, si no se incluye el parmetro prex, la instalacin se realiza en el directorio /usr/local. a o Finalmente, se ejecuta el comando:

8.2. COMPILACION make install

119

Para poder utilizar esta librer se debe exportar la ruta del chero MrTagoo.pc a, que se encuentra en <ruta instalacion>/share/confdata/pkgdata. Existen dos opciones diferentes para realizar este paso: 1. Copiar el chero al directorio por defecto donde se encuentran los cheros .pc para pkg-cong, normalmente /usr/lib/pkgcong. 2. Modicar la variable de entorno pkg config path para que incluya el directorio donde se encuentra el chero MrTagoo.pc: export pkg config path=$pkg config path:<ruta instalacion> /share/confdata/pkgdata/

8.2.2.

Instalacin del preprocesador o

Dado que el sistema desarrollado en este proyecto se integra dentro del preprocesador, la instalacin se realiza de forma conjunta. Para llevar a cabo la o instalacin del programa se debe abrir un terminal o consola, situarse en el directorio o ra del preprocesador y ejecutar las siguientes ordenes: z aclocal autoheader autoconf automake --add-missing A continuacin, se debe ejecutar el chero congure. Se puede especicar una ruta o de instalacin de la librer mediante el uso del parmetro prex: o a a ./configure [--prefix=<ruta instalacion>] Por ejemplo: ./configure --prefix=/home/vanesa/preprocesador. Por defecto, si no se incluye el parmetro prex, la instalacin se realiza en el directorio a o /usr/local. Para terminar la instalacin se ejecuta el comando: o make install

120

CAP ITULO 8. INSTALACION Y EJECUCION

Figura 8.1: Ejemplo del formato de un chero xml a etiquetar.

8.3.

Ejecucin del sistema o

La ejecucin del sistema puede realizarse sobre un unico chero (bien sea en o texto plano o bien en formato xml), sobre un directorio en el que se etiquetarn a todos los cheros con extensin .xml o introduciendo una frase por teclado desde la o ventana del terminal. Si los cheros de entrada son de tipo xml deben estar bien formados, esto signica que deben cumplir las reglas sintcticas bsicas de dicho formato. El proceso de a a etiquetacin-correccin se aplicar al contenido de los elementos <oracin> que o o a o forman parte del chero de entrada. En la gura 8.1, se muestra un chero xml de ejemplo con cuatro oraciones a etiquetar y corregir. Para invocar el sistema se debe abrir un terminal y situarnos en el directorio <ruta instalacion>/bin y escribir la siguiente orden: integrator [opciones] <directorioConfiguracin> o

8.3.1.

Directorio de conguracin o

En la sentencia dnde se invoca el sistema, <directorioConfiguracin> es la o o ruta del directorio en la que se buscar el chero de conguracin cong.xml. a o En este archivo se indican las rutas donde se pueden encontrar los cheros que necesita la aplicacin. El usuario puede modicar la ubicacin de cualquiera de ellos o o escribiendo la ruta absoluta (empezara por un /) o la ruta relativa al directorio de conguracin. El contenido por defecto de este chero se lista a continuacin. o o

8.3. EJECUCION DEL SISTEMA


<configuration> <language>gal</language> <file_names> <tag_inference>tag_inference.txt</tag_inference> <info_numerals>info_numerals.txt</info_numerals> <enclitic_verb_rules>enclitic_verbs_rules.xml</enclitic_verb_rules> <enclitic_pronoun_rules>enclitic_pronouns_rules.xml</enclitic_pronoun_rules> <contractions>contraccions.txt</contractions> <main_lexicon>lexiconPrincipal.bin</main_lexicon>} <clitic_verb_lexicon>lexiconVerbosCliticos.bin</clitic_verb_lexicon> <clitic_lexicon>lexiconCliticos.bin</clitic_lexicon> <clitic_combination_lexicon>lexiconCombinacionsCliticos.bin</clitic_combination_lexicon> <uncertain_idiom_lexicon>lexiconLocucionsInseguras.bin</uncertain_idiom_lexicon> <certain_idiom_lexicon>lexiconLocucionsSeguras.bin</certain_idiom_lexicon> <proper_noun_lexicon>lexiconPropios.bin</proper_noun_lexicon> <trained_proper_noun_lexicon>lexiconPropiosEntrenados.bin</trained_proper_noun\_lexicon> <reversed_main_lexicon>lexiconPrincipalInvertido.bin</reversed_main_lexicon> <acronym_lexicon>lexiconSiglas.bin</acronym_lexicon>} <abbrev_lexicon>lexiconAbreviaturas.bin</abbrev_lexicon>} <hmm_model_name>training_corpus/corpus</hmm_model_name>} <file_names> </configuration>

121

A continuacin se explican cada uno de los elementos del chero de conguracin: o o - <language>: Lenguaje empleado para la etiquetacin/correccin. o o o - <tag inference>: Fichero que contiene informacin relativa a las etiquetas recibidas por un nombre propio. - <info numerals>: Fichero que contiene informacin relativa a las etiquetas o recibidas por un numeral. o - <enclitic verb rules>: Fichero de reglas de segmentacin de formas encl ticas. - <enclitic pronoun rules>: Fichero de reglas de ltrado de pronombres encl ticos. - <contractions>: Fichero de contracciones que contiene cada una de las contracciones junto con los elementos que la componen, con su etiqueta y lema individual. - <main lexicon>: Lexicn principal, que incluye para cada forma sus posibles o etiquetas y lemas. o - <clitic verb lexicon>: Lexicn de formas verbales con posibilidad de ir acompa adas de pronombres encl n ticos.

122

CAP ITULO 8. INSTALACION Y EJECUCION o ticos. Es una lista de los - <clitic lexicon>: Lexicn de pronombres encl distintos pronombres encl ticos que pueden aparecer. Algunos de los que aqu se encuentran son en realidad contracciones de dos (por ejemplo llo = lle+o). En estos casos, la etiqueta que lo acompa a es la del pronombre de la izquierda n 1 de la contraccin . o - <clitic combination lexicon>: Lexicn de combinaciones de pronombres o encl ticos vlidas. a o - <uncertain idiom lexicon>: Lexicn de loeuciones inseguras. Estas locuciones representan ambig edades segmentales, ya que puden fusionarse u o no, dependiendo del contexto. - <certain idiom lexicon>: Lexicn de locuciones seguras. Lista de aquellas o locuciones que siempre se fusionan en una unidad lxica. e o - <proper noun lexicon>: Lexicn de nombre propios. Una lista de nombres propios simples y compuestos (multipalabra) con sus correspondientes etiquetas y lemas. o - <trained proper noun lexicon: Lexicn de nombres propios entrenados, que incluye nombres propios compuestos de varias palabras, pero sin etiquetas ni lemas. Este lexicn se usa para detectar nombres propios dentro del texto. Una o vez detectado un nombre propio, se usa el lexicn de propios para etiquetarlo. o - <reversed main lexicon>: Lexicon principal invertido, que permite desde un lema y una etiqueta, obtener su forma/s asociada. o - <acronym lexicon>: Lexicn de siglas. - <abbrev lexicon>: Lexicn de abreviaturas. o - <hmm model name>: Es el nombre del mmo entrenado.

8.3.2.

Opciones de ejecucin o

En este apartado, se describirn las posibles opciones de ejecucin del sistema a o completo. Si se invoca a integrator, sin opciones, el programa esperar a que se le a introduzca una frase por teclado para procesarla. Para modicar el comportamiento por defecto del programa a las necesidades del usuario se pueden establecer las siguientes opciones:
1

Tambin aparecen algunos alomorfos en sus dos variantes (por ejemplo, -la y -a). e

8.3. EJECUCION DEL SISTEMA

123

-d <directorio>: Con sta se indica al programa que procese todos los e cheros con extensin .xml que encuentre en el directorio indicado. o -f <fichero>: Con sta se indica al programa que procese el chero que se e indica. -m <modelo>: Con sta se indica al programa la ruta de los cheros que e conforman el modelo mmo. Esta opcin prevalece sobre lo que se indique en o el chero xml de conguracin. o -i <format>:Con esta opcin se indica al programa el formato del chero o o cheros de entrada. Los formatos permitidos son plain o xml. Slo tiene o sentido acompa ada de la opcin -d o -f. Por defecto se toma el formato de n o entrada xml. -a : Si aparece esta opcin (slo tiene sentido cuando se etiqueta una o varios o o cheros xml), en el chero nal etiquetado se incluyen todas las opciones de etiquetacin, se alando cuales son las que ha seleccionado el etiquetador. En o n caso contrario, slo aparece el resultado nal del etiquetador. o -p: Si aparece esta opcin, slo se aplica el preprocesador. Se utiliza cuando o o la oracin a etiquetar se introduce directamente por la entrada estndar. o a Como resultado, produce la cadena con todas las opciones de segmentacin o y etiquetacin en la salida estndar. o a -b <archivo configuracion corrector>: Con sta se indica que adems de e a la etiquetacin se a ade al programa la funcionalidad de la correccin de palabras o n o desconocidas. Mediante el parmetro <archivo configuracion corrector> a se establece la ruta del archivo de conguracin del sistema de correccin. El o o usuario puede modicar la ubicacin de cualquiera de ellos escribiendo la ruta o absoluta (empezar por un /) o la ruta relativa al directorio de conguracin. a o

El contenido por defecto del archivo de conguracin del corrector es el siguiente: o

124

CAP ITULO 8. INSTALACION Y EJECUCION <configuration> <word_incorrect>no</word_incorrect> <regions>lexiconPrincipal.reg</regions> <search_type>g</search_type> <thresholds> <consecutives>2</consecutives> <global>2</global> <local> <deletion>2</deletion> <insertion>2</insertion> <transposition>2</transposition> <replacement>2</replacement> </local> </thresholds> </configuration>

A continuacin, se explicar el signicado de cada uno de los elementos de o a conguracin: o <word incorrect>: Indica si se incluye la palabra incorrecta como alternativa de correccin (yes) o no se incluye (no). o <regions>: Fichero donde se almacenan las regiones. Se encuentra dentro del directorio de conguracin que se pasa como parmetro para invocar al o a programa. Si la b squeda es de tipo global no es necesario indicarlo. u search type: Indica si la tcnica empleada para realizar la correccin e o ortogrca es de tipo global (g) o de tipo regional (r). a <tresholds>: Establecen los umbrales de error mximos permitidos para a encontrar correcciones, es decir, el n mero de caracteres que dieren de la u palabra original. <consecutives>: N mero mximo de errores de edicin consecutivos u a o permitidos. <global>: N mero de errores de edicin mximo permitidos. u o a <local>: Umbrales para la b squeda regional. u <deletion>: N mero de errores de borrado mximo permitidos. u a <insertion>: N mero de errores de insercin permitidos u o <transposition>: N mero de errores de transposicin permitidos. u o <replacement>: N mero de errores de reeemplazo permitidos. u

8.3. EJECUCION DEL SISTEMA Ejemplos de ejecucin: o

125

$./integrator ../share/confdata/galician/ Pide una oracin por teclado para etiquetarla y muestra el resultado por o pantalla. $./integrator -d /home/vanesa/pruebasXML/ ../share/confdata/galician/ Etiqueta todos los cheros .xml que estn e /home/vanesa/pruebasXML.

en

el

directorio

$./integrator -a -d /home/vanesa/pruebasXML/ ../share/confdata/galician/ Igual que el anterior pero incluyendo todas las opciones de etiquetacin. o $./integrator -f /home/vanesa/pruebasXML/prueba1.xml ../share/confdata/galician/ Etiqueta unicamente el chero /home/vanesa/pruebasXML/prueba1.xml. $./integrator -f /home/vanesa/pruebasXML/prueba2.txt ../share/confdata/galician/ Etiqueta unicamente el chero /home/vanesa/pruebasXML/prueba1.txt y est en formato texto plano. a En la gura 8.2 se muestra la captura de una ejecucin del programa en la o que se activa la correccin para las palabras desconocidas ($./integrator - b o spellchecker.xml ../share/confdata/galician/). Como no se han indicado ms opciones el programa est esperando a que se introduzca una frase por teclado a a para procesarla.

126

CAP ITULO 8. INSTALACION Y EJECUCION

Figura 8.2: Captura de ejecucin de un programa con el corrector activado. o

8.3. EJECUCION DEL SISTEMA

127

8.3.3.

Resultados obtenidos

En la gura 8.3 se introduce para corregir la frase A pesarde todo non volveeu aparecer y en la gura 8.4 se muestran los resultados para dicha frase. Como se puede comprobar en este caso las correcciones y etiquetaciones realizadas son las esperadas, A pesar de todo non volveu aparecer..

Figura 8.3: Captura de la ejecucin de la frase A pesarde todo non volveeu o aparecer.

Adems de mostrar por pantalla el resultado nal de la etiquetacin, si el archivo a o de entrada es de tipo xml los resultados se almacenan en otro archivo xml. A continuacin, se mostrarn dos ejemplos del formato utilizado por el archivo xml de o a salida. Estos archivos se guardarn en el mismo directorio que en el que se encuentre a el chero xml de origen, el nombre utilizado es el mismo que el del chero de entrada al que de le a adir la extensin .etq, por ejemplo para el archivo prueba1.xml el n a o chero de salida etiquetado se denominar prueba1.xml.etq. a

128

CAP ITULO 8. INSTALACION Y EJECUCION

Figura 8.4: Resultado de la ejecucin de la frase A pesarde todo non volveeu o aparecer.
<noticia> <oracin> o <expresin>A nena est cansad</expresin> o a o <anlise> a <anlise_unidade> a <unidade>A</unidade> <constitunte> <forma>a</forma> <etiqueta>Ddfs</etiqueta> <lema>o</lema> </constitunte> </anlise_unidade> a <anlise_unidade> a <unidade>nena</unidade> <constitunte> <forma>nena</forma> <etiqueta>Scfs</etiqueta> <lema>neno</lema> </constitunte> </anlise_unidade> a <anlise_unidade> a <unidade>est</unidade> a <constitunte> <forma>est</forma> a <etiqueta>Vpi30s</etiqueta> <lema>estar</lema> </constitunte> </anlise_unidade> a <anlise_unidade> a <unidade>cansad</unidade> <constitunte> <forma>cansan</forma> <etiqueta>Vpi30p</etiqueta> <lema>cansar</lema> </constitunte> </anlise_unidade> a </anlise> a </oracin> o ......... <\noticia>

8.3. EJECUCION DEL SISTEMA

129

Aunque pueda resultar intuitivo, se explicar el signicado de las etiquetas a empleadas para representar la salida . Las etiquetas <oracin> y </oracin> o o encierran el anlisis completo de una frase. Para cada frase se guarda su forma a original entre las etiquetas <expresin> y </expresin> y el anlisis realizado de o o a la frase entre las etiquetas <anlise> y </anlise>. Estas a su vez estn formadas a a a por elementos de tipo <analise unidade>, cada uno de ello contiene el anlisis para a una unidad lxica. e El anlisis de una frase, encerrado entre las etiquetas <anlise unidade> y a a </anlise unidade>, se compone por los elementos que se listan a continuacin: a o <unidade>: Es la palabra o conjunto de palabras (por ejemplo en el caso de una locucin) que se analiza, es decir, la forma en la que aparece en la frase o original. <constituinte>: Existe un elemento de este tipo por cada unidad en la que se pueda descomponer la palabra analizada. Por ejemplo, las contracciones se representan con un elemento <constituinte> para cada componente de la contraccin. A su vez, este elemento est formado por los siguientes: o a <forma>: Es la palabra tal y como se escribe. Si se la palabra original (encerrada entre las etiquetas <unidade> y </unidade>) era desconocida, la forma ser su correccin. a o <etiqueta>: Es la categor morfosintctica a la que pertenece la palabra. a a <lema>: Es la forma cannica de la palabra. Todas las palabras derivadas o de una misma comparten el mismo lema, normalmente coinciden con las entradas en un diccionario convencional. En caso de activar la opcin -a en la ejecucin del programa el archivo xml o o de salida mostrar todas las opciones de etiquetacin, as como las opciones de a o correccin, indicando en ambos casos c al ha sido la opcin escogida. Para ello, se o u o ampliar el formato arriba descrito de forma que cada elemento <analise unidade> a tenga la siguiente estructura:

130

CAP ITULO 8. INSTALACION Y EJECUCION


<anlise> a <anlise_unidade> a <unidade>reaciones</unidade> <alternativas> <alternativa vlido="si"> a <constitunte> <forma>reacciones</forma> <etq_lema vlido="si"> a <etiqueta>Vps20s</etiqueta> <lema>reaccionar</lema> </etq_lema> </constitunte> </alternativa> <alternativa> <constitunte> <forma>relaciones</forma> <etq_lema> <etiqueta>Vps20s</etiqueta> <lema>relacionar</lema> </etq_lema> </constitunte> <alternativa> <constitunte> <forma>raciones</forma> <etq_lema> <etiqueta>Vps20s</etiqueta> <lema>racionar</lema> </etq_lema> </constitunte> </alternativa> </alternativas> </anlise_unidade> a </anlise> a

Indice de guras
1.1. Modelo de Markov que representa la evolucin del clima . . . . . . . o 1.2. Representacin de un MMO . . . . . . . . . . . . . . . . . . . . . . . o 1.3. Enrejado simplicado para la etiquetacin de una frase de T palabras o 1.4. Los enrejados no permiten representar segmentaciones ambiguas . . . 1.5. Segmentaciones ambiguas representadas en un ret culo . . . . . . . . 1.6. Estructura del preprocesador morfolgico [4]. . . . . . . . . . . . . . . o 1.7. Antes de aplicar el algoritmo de minimizacin . . . . . . . . . . . . . o 1.8. Despus de aplicar el algoritmo de minimizacin . . . . . . . . . . . . e o 1.9. Modelizacin compacta de un diccionario [11]. . . . . . . . . . . . . . o 1.10. Clculo de regiomes sobre un af . . . . . . . . . . . . . . . . . . . . . a 1.11. Funcionamiento general de las tcnicas de correccin . . . . . . . . . e o 1.12. Entorno de etiquetacin actual . . . . . . . . . . . . . . . . . . . . . . o 1.13. Esquema general del funcionamiento del proyecto. . . . . . . . . . . . 3.1. 3.2. 3.3. 3.4. Fases del proyecto en la planicacin inicial. . . o Diagrama de Gantt para la planicacin inicial. o Fases del proyecto en la planicacin real. . . . o Diagrama de Gantt para la planicacin real. . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 21 22 24 24 26 28 28 29 35 37 37 38 48 48 49 50 60 61 62 63 64 64 66 67 67 69 70 70

5.1. Ejemplo de una representacin para una frase. . . . . . . . . . . . o 5.2. Diagrama de casos de uso global. . . . . . . . . . . . . . . . . . . 5.3. Diagrama de casos de uso para Aplicar corrector. . . . . . . . . . 5.4. Diagrama de secuencia del anlisis: Aplicar correccin . . . . . . . a o 5.5. Diagrama de colaboracin del anlisis: Aplicar correccin . . . . . o a o 5.6. Diagrama de actividades del anlisis: Aplicar correccin . . . . . . a o 5.7. Diagrama de secuencia del anlisis: Buscar correccin global . . . a o 5.8. Diagrama de colaboracin del anlisis: Buscar correccin global . o a o 5.9. Diagrama de actividades del anlisis: Buscar correccin global . . a o 5.10. Diagrama de secuencia del anlisis: Buscar correccin regional . . a o 5.11. Diagrama de colaboracin del anlisis: Buscar correccin regional o a o 5.12. Diagrama de actividades del anlisis: Buscar correccin regional . a o 131

132 5.13. Diagrama 5.14. Diagrama 5.15. Diagrama 5.16. Diagrama 5.17. Diagrama 5.18. Diagrama 5.19. Diagrama 5.20. Diagrama 5.21. Diagrama 5.22. Diagrama 5.23. Diagrama 5.24. Diagrama 6.1. 6.2. 6.3. 6.4. de de de de de de de de de de de de

INDICE DE FIGURAS secuencia del anlisis: Enlazar correcciones . . . . . . a colaboracin del anlisis: Enlazar correcciones . . . . . o a actividades del anlisis: Enlazar correcciones . . . . . a secuencia del anlisis: Revisar nuevas contracciones . . a colaboracin del anlisis: Revisar nuevas contracciones o a actividades del anlisis: Revisar nuevas contracciones . a secuencia del anlisis: Revisar nuevas expresiones . . . a colaboracin del anlisis: Revisar nuevas expresiones . o a actividades del anlisis: Revisar nuevas expresiones . . a secuencia del anlisis: Congurar correccin . . . . . . a o colaboracin del anlisis: Congurar correccin . . . . o a o clases del anlisis. . . . . . . . . . . . . . . . . . . . . a . . . . . . . . . . . . 72 73 74 76 77 78 80 80 81 83 83 84

Diagrama de clases del dise o. . . . . . . . . . . . . . . . . . . . . . n Diagrama de clases parcial. . . . . . . . . . . . . . . . . . . . . . . . Representacin de una frase con dos errores consecutivos. . . . . . . o Representacin de una frase con dos errores con una palabra correcta o entre ellos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5. Representacin de una frase con tres errores separados por una o palabra correcta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6. Representacin de una frase con varios errores. . . . . . . . . . . . . o 6.7. Estructura recibida por el Sistema Corrector. . . . . . . . . . . . . . 6.8. Estructura despus de haber aplicado el Sistema Corrector. . . . . . e 6.9. Representacin de cabbo antes y despus de llamar al mdulo de o o e o deteccin de locuciones. . . . . . . . . . . . . . . . . . . . . . . . . o 6.10. Representacin de la evolucin de la estructura de la frase en el o o Sistema corrector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.11. Diagrama de secuencia del dise o: Aplicar correccin . . . . . . . . n o 6.12. Diagrama de secuencia del dise o: Buscar correccin global . . . . . n o 6.13. Diagrama de secuencia del dise o: Buscar correccin regional . . . . n o 6.14. Diagrama de secuencia del dise o: Enlazar correcciones . . . . . . . n 6.15. Diagrama de secuencia del dise o: Revisar nuevas contracciones . . n 6.16. Diagrama de secuencia del dise o: Revisar nuevas expresiones . . . n

. 86 . 87 . 89 . 89 . . . . 89 90 91 91

. 93 . . . . . . . 94 102 103 104 105 106 107

7.1. Diagrama de componentes . . . . . . . . . . . . . . . . . . . . . . . . 110 7.2. Ejemplo de utilizacin del chero de conguracin s checker.xml. . . 111 o o 8.1. Ejemplo del formato de un chero xml a etiquetar. . . . . . . . . . . 120 8.2. Captura de ejecucin de un programa con el corrector activado. . . . 126 o 8.3. Captura de la ejecucin de la frase A pesarde todo non volveeu o aparecer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

INDICE DE FIGURAS

133

8.4. Resultado de la ejecucin de la frase A pesarde todo non volveeu o aparecer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

134

INDICE DE FIGURAS

Bibliograf a
[1] Eugene Charniak. Statistical parsing with a context-free grammar and word statistics. In Proceedings of the Fourteenth National Conference on Articial Intelligence, pages 598603, 1997. [2] Daciuk, Mihov, Watson, and Watson. Incremental construction of minimal acyclic nite-state automata. In Computational Linguistics, MIT Press for the Association for Computational Linguistics. 2000. [3] F. Damerau. A technique for computer detection and correction of spelling errors. Communications of the ACM, 7(3), March 1964. [4] J. Gra a Gil, F. M. Barcala Rodr n guez, and J. Vilares Ferro. Etiquetacin o robusta del lenguaje natural: preprocesamiento y segmentacin. Procesamiento o del Lenguaje Natural, 27:173180, 2001. [5] Jorge Gra a Gil. Tcnicas de Anlisis Sintctico Robusto para la Etiquetacin n e a a o del Lenguaje Natural. PhD thesis, Universidad de A Coru a, September 2000. n [6] Jorge Gra a Gil, Miguel Alonso Pardo, and Manuel Vilares Ferro. A Common n Solution for Tokenization and Part-of-Speech Tagging: One-Pass Viterbi Algorithm vs. Iterative Approaches. Lecture Notes in Articial Intelligence, 2448:310, 2002. [7] Jorge Gra a Gil, F. M. Barcala Rodr n guez, and M. A. Alonso Pardo. Compilation methods of minimal acyclic nite-state automata for large dictionaries. Lecture Notes of Computer Science, 2494:135148, 2001. [8] S. Klein and R.F. Simmons. A computational approach to grammatical coding of English words. Journal of the Association for Computing Machinery, 10:334 347, 1963. [9] Leslie Lamport. LaTeX: A Document Preparation System. 1986. 135

136

BIBLIOGRAF IA

[10] A. A. Markov. An example of statistical investigation in text of Eugene Onyegin illustrating coupling of tests in chains. In Proceedings of the Academy of Sciences, volume 7, pages 153162, St. Petersburg, 1913. [11] Juan Otero Pombo. Anlisis Lxico Robusto. PhD thesis, Universidade de Vigo. a e [12] A. Savary. Typographical nearest-neighbor search in a nite-state lexicon and its application to spelling correction. In CIAA: International Conference on Implementation and Application of Automata, LNCS, 2001. [13] Herbert Schildt. Turbo C/C++. Manual de Referencia. 1991. [14] W.S. Stolz, P.H. Tannenbaum, and Carstensen. A stochastic approach to the grammatical coding of English. Communications of the ACM, 8(6):399405, 1965. [15] Manuel Vilares Ferro, Juan Otero Pombo, and Jorge Graa Gil. Regional niten state error repair. Lecture Notes in Computer Science (LNCS), pages 269280, 2004. [16] A. J. Viterbi. Error bounds for convolutional codes and an asymptotically optimal decoding algorithm. IEEE Trans. Information Theory, IT-13:260269, April 1967. [17] Robert A. Wagner. Order-n correction for regular languages. Communications of the ACM, 17(5):265268, 1974.

Indice alfabtico e
afdan, 27, 30, 58, 100 corpus, 17, 27 distancia de edicin, 31, 33 o enrejado, 22, 23 etiquetacin, 16 o lema, 27 lexicn, 16, 20 o mmo, 19, 21, 27 pln, 15 ret culo, 23 Savary, 30, 31, 35 savary, 65, 98 sax, 42, 82 uml, 44, 58 Viterbi, 18, 21, 24, 36, 54 xml, 42, 120

137

También podría gustarte