Índice de contenidos - Adimen...
-
Upload
duongkhanh -
Category
Documents
-
view
219 -
download
0
Transcript of Índice de contenidos - Adimen...
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Índice de contenidos:
1.INTRODUCCIÓN.............................................................................................................................32.ANTECEDENTES............................................................................................................................4
2.1.Redes Semánticas................................................................................................................42.2.WordNet..............................................................................................................................52.3.EuroWordNet......................................................................................................................62.4.Meaning..............................................................................................................................82.5.Multilingual Central Repository (MCR)............................................................................82.6.Algunas interfaces web.......................................................................................................9
2.6.1.WordNet................................................................................................................92.6.2.Web Eurowordnet Interface (WEI).....................................................................10
3.DOCUMENTO DE OBJETIVOS DEL PROYECTO (DOP)..........................................................113.1.Objetivos............................................................................................................................113.2.Alcance..............................................................................................................................11
3.2.1.Alcance del proyecto.......................................................................................... 113.2.2.Diagrama de Estructura de Descomposición del Trabajo (EDT)...................... 113.2.3.Asignación de recursos.......................................................................................12
3.3.Método de trabajo..............................................................................................................133.4.Planificación temporal.................................................................................................... 13
3.4.1.Diagrama de Gantt..............................................................................................143.5.Plan de contingencia....................................................................................................... 153.6.Análisis de factibilidad......................................................................................................16
4.DESARROLLO DEL SISTEMA DE INFORMACIÓN.................................................................184.1.Captura de requisitos.........................................................................................................18
4.1.1.Casos de uso........................................................................................................184.1.2.Modelo de dominio............................................................................................20
4.2.Análisis.............................................................................................................................244.2.1.Caso de uso Consultar MCR..............................................................................244.2.2.Caso de uso Editar Synset..................................................................................254.2.3.Caso de uso Editar ILI.......................................................................................27
4.3.Diseño del sistema............................................................................................................294.3.1.Arquitectura del sistema.....................................................................................294.3.2.Diseño de las operaciones..................................................................................31
4.4.Implementación................................................................................................................354.4.1.Base de datos......................................................................................................354.4.2.WEI....................................................................................................................37
4.5.Pruebas..............................................................................................................................385.GESTIÓN........................................................................................................................................44
5.1.Procesos tácticos...............................................................................................................455.2.Procesos operativos...........................................................................................................465.3.Procesos formativos..........................................................................................................46
1
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
6.CONCLUSIONES...........................................................................................................................487.BIBLIOGRAFÍA.............................................................................................................................49
2
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
1. INTRODUCCIÓN
El proyecto de fin de carrera desarrollado se enmarca en el ámbito de la inteligencia artificial y el tratamiento del lenguaje natural.
El objetivo de este proyecto es modificar la interfaz del MCR (Multilingual Central Repository, con el fin de corregir errores en su funcionamiento y añadir nuevas funciones a la aplicación, como al modificación del Inter Lingual Index (ILI).
A su vez este proyecto servirá para dar a conocer al desarrollador las posibilidades y bonanzas de un sistema operativo como Linux, así como del lenguaje de programación PERL con el cual se desarrollara la totalidad del proyecto. También permitirá explorar las posibilidades del desarrollo de aplicaciones en entorno web.
La realización de este proyecto ha sido supervisada por German Rigau, profesor del departamento de Lenguajes y Sistemas informáticos de la Facultad de informática de la UPV.
3
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
2. ANTECEDENTES
Antes de comenzar con el proyecto, estableceremos ciertos términos que ayudarán a comprender el ámbito en el que se sitúa así como los conceptos fundamentales y algunas de las herramientas desarrolladas en el mismo marco.
2.1 Redes semánticas
La semántica léxica es un área del lenguaje enfocada a la investigación del cómo y el qué del significado de las palabras (Pustejovsky, 1995). Dicho de otro modo, se encarga de estudiar qué significan las palabras y porqué significan esto, mediante la descomposición de términos o la composición de términos más complejos a partir de otros de mayor simplicidad. La unidad léxica es la palabra. Cada palabra representa un concepto existente en el mundo por lo que la semántica léxica implica el significado de cada palabra individual.
La semántica léxica cubre áreas del lenguaje como la clasificación y descomposición de los significados de las palabras, las semejanzas y diferencias entre estructuras semánticas de distintos idiomas y las relaciones entre dichas estructuras.
Una red semántica representa los elementos semánticos por medio de nodos, y relaciona éstos en base a distintas relaciones semánticas por medio de enlaces o flechas.
Podemos ver un ejemplo de red semántica en la figura 2.1, donde las palabras son los nodos de la red semántica, y las relaciones entre ellas están simbolizadas por medio de flechas que indican la relación que existe entre los términos enlazados.
Figura 2.1: Ejemplo de red semántica
4
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
2.2 WordNet
WordNet es una base de datos léxica en inglés, pública y de carácter gratuito desarrollada por la universidad de Princeton. Agrupa las palabras contenidas en dicha base en Synsets, o conjuntos de sinónimos, relacionados con un sentido o concepto. Estos Synsets, o conceptos únicos, constituyen los nodos de la red y se interrelacionan semánticamente formando una red léxica.
WordNet clasifica los términos en base a 4 categorías gramaticales (PoS – Part of Speech): nouns (nombres), verbs (verbos), adjectives (adjetivos) y adverbs (adverbios). Usa (n) para los nombres, (v) para los verbos, (adj) para los adjetivos y (adv) para los adverbios. Por ejemplo:{04284002} (n) spoon#1 (a piece of cutlery with a shallow bowlshaped container and a handle; used to stir or serve or take up food) {01963942} (v) jump#1 (move forward by leaps and bounds){00780352} (adj) sharp#1 ((of something seen or heard) clearly defined){00002621} (adv) hardly#1 (only a very short time before)
También existen palabras con varios sentidos o significados (de ahí el numero junto a la palabra que indica el numero del sentido al que hace referencia la definición). Estas palabras se conocen como palabras polisémicas, como podría ser:{07739125} (n) apple#1 (fruit with red or yellow or green skin and sweet to tart crisp whitish flesh) {12633994} (n) apple#2 (native Eurasian tree widely cultivated in many varieties for its firm rounded edible fruits)
Otra opción es que varias palabras referencien un mismo sentido. En éste caso dichas palabras son consideradas sinónimas y WordNet las engloba en un mismo synset o nodo de la red léxica. Por ejemplo:{09466280} (n) universe#1, existence#2, creation#6, world#1, cosmos#1, macrocosm#1En este caso, las palabras universo, existencia, mundo, creacion, cosmos y macrocosmos son sinónimos tomando los sentidos especificados de dichas palabras, y comparten el mismo synset.
Existen otras relaciones semánticas mediante las cuales WordNet relaciona los sentidos de las palabras o synsets, algunas de las cuales se describen en el siguiente cuadro.
Hiperónimo (hypernym): X es hiperónimo de Y siempre que todo Y sea un tipo de XEjemplo: (n) mammal#1 is hypernym of (n) dog#1
Hipónimo (hyponym): X es hipónimo de Y siempre que todo X sea un tipo de Y. En el caso de los verbos se denomina troponimia.Ejemplo: (n) dog#1 is hyponym of (n) mammal#1Ejemplo: (v) whisper#1 is troponym of (v) talk(1)
Holonimia (holonym): X es holónimo de Y si Y es una parte de X
5
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Ejemplo: (n) building#1 is holonym of (n) window#1
Meronimia (meronym): X es merónimo de Y si X es una parte de YEjemplo: (n) window#1 is meronym of (n) building#1
Antonimia (antonym): X es antónimo de Y si el sentido de X es opuesto al de YEjemplo: (n) love#1 is antonym of (n) hate#1
Cuadro 2.2: Algunas relaciones semanticas en WordNet
Actualmente, WordNet se encuentra en la versión 3.0 y contiene alrededor de 150.000 palabras y mas de 200.000 sentidos. El desglose detallado del contenido actual de la base de datos de WordNet puede verse en el siguiente cuadro.
PoS Unique Strings Synsets Total WordSense Pairs
Noun 117798 82115 146312
Verb 11529 13767 25047
Adjective 21479 18156 30002
Adverb 4481 3621 5580
Total 155287 117659 206941 Tabla 2.3: Estado de la base de datos WordNet 3.0
En cuanto al desglose de su contenido en términos polisémicos y monosémicos, puede apreciarse en la tabla a continuación.
PoS Monosemous words & senses
Polysemous words Polysemous senses
Noun 101863 15935 44449
Verb 6277 5252 18770
Adjective 16503 4976 14399
Adverb 3748 733 1832
Total 128391 26896 79450 Tabla 2.4: Desglose de palabras monosémicas y polisémicas en WordNet 3.0
2.3 EuroWordNet
A raiz de la salida de WordNet comenzaron a desarrollarse redes semánticas similares para otros idiomas. Este es el caso de EuroWordNet, una base de datos léxica que comprende una gran parte de
6
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
los lenguajes europeos.
EuroWordNet mantiene una estructura muy similar a WordNet, agrupando los términos en synsets enlazados por medio de las mismas relaciones semánticas. Adicionalmente, al incluir términos en varios idiomas, EuroWordNet añade un índice conocido como InterLingualIndex (ILI) que relaciona los sentidos en diferentes idiomas permitiendo, por ejemplo, encontrar palabras similares (o bien relacionadas semánticamente) en estos distintos idiomas.
Actualmente EuroWordNet cuenta con bases de datos independientes para los idiomas sueco, noruego, danés, griego. portugués. euskera, catalán, rumano, lituano, ruso, búlgaro y esloveno, unidas por el mencionado ILI.
En la figura 2.5 podemos ver un esquema aproximado de la arquitectura de EuroWordNet y de la relación de varios lenguajes por medio del ILI.
Figura 2.5: Arquitectura de EuroWordNet
7
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
2.4 Meaning
El proyecto meaning nació con la finalidad de proveer de una forma automática y eficiente de desambiguación de sentidos (WSD, Word Sense Desambiguation) mediante la recolección y análisis en larga escala de información léxica de la red, dado que la información disponible en las actuales bases de datos léxicas es en algunos casos insuficiente para una correcta desambiguación.
El principal objetivo de Meaning es esa adquisición automática de conocimiento léxico de la Web con el fin de enriquecer la estructura de los wordnets en al menos 5 lenguajes europeos: inglés, italiano, español, catalán y euskera. Para ello se generaron varías tecnologías para llevar a cabo el reconocimiento del idioma, análisis morfológico, identificación del PoS... Entre ellas se encuentran las siguientes:
● Conjunto de herramientas para la extracción automática de ejemplos e información semántica sobre cada sentido, basadas en el conocimiento semántico de EuroWordNet.
● Un conjunto de herramientas para el enriquecimiento automático de EuroWordNet que incluirán herramientas para la adquisición de información como la terminología de un dominio, nuevos sentidos, grupos de sentidos relacionados, alternancias de diátesis, marcos de subcategorización y relaciones semánticoléxicas específicas.
● Un conjunto de herramientas para seleccionar de una forma precisa el sentido de una palabra para los lenguajes cubiertos por el proyecto. Este sistema de desambiguación está basado en algoritmos automáticos capaces de modelar el comportamiento del sentido de una palabra tanto en textos con anotaciones semánticas como sin ellas.
Meaning también cubrirá métodos para la adquisición de terminologías, identificación de claves, clasificación de dominios, clasificación de textos y adaptación de wordnet incluyendo identificación de nuevos sentidos.
2.5 Multilingual Central Repository (MCR)
El MCR (Multilingual Central Repository) actúa como una interfaz multilngue para integrar y distribuir todo el conocimiento generado en el proyecto Meaning, asegurando la consistencia y integridad de dicho conocimiento.
El MCR se ajusta al modelo propuesto y usado en el proyecto EWN (EuroWordNet) usando el mismo sistema de arquitectura con el ILI (indice interlingua), Do (Domain Ontology) y TCO (Top Concept Ontology)
El ILI (InterLingualIndex) sirve de puente entre los distintos idiomas, es decir, es un índice que relaciona conceptos semejantes de distintos idiomas contenidos en el proyecto.La Domain Ontology (también Wordnet Domain) es una ontología que clasifica los synsets por medio de una serie de etiquetas.En cuanto a la TCO (Top Concept Ontology)codifica las relaciones léxicosemánticasde manera uniforme.
8
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
El acceso al MCR se efectúa por medio de una interfaz web desarrollada con tal objetivo, conocida como WEI (Web Eurowordnet Interface).
2.6 Algunas interfaces Web
Se han desarrollado un numero considerable de aplicaciones e interfaces Web para el acceso a bases de datos léxicas y consulta de wordnets y relaciones semánticas. Analizaremos algunas de ellas como base para el desarrollo del proyecto.
2.6.1 Wordnet
La propia pagina de Wordnet nos ofrece una interfaz web para el acceso y consulta de su base de datos en su última versión, WordNet 3.0. Mediante ella podemos consultar el contenido sobre una palabra dentro de la base de Wordnet, y se nos mostrarán los distintos sentidos asociados a esa palabra, catalogados de acuerdo a su PoS (Part of Speech). Del mismo modo podemos seleccionar entre varias opciones, como que se nos muestre el synset asociado a cada, la información léxica, glosas, número de sentido...
También tenemos la opción de, a partir de uno de los sentidos de la palabra consultada, acceder a una lista de sus hiperónimos o hipónimos (tanto directos como una lista completa), antónimos, merónimos...
En la imagen 2.6 podemos ver una consulta sobre la palabra "car", mostrando a la vez una lista completa de sus hiperónimos hasta llegar al término mas genérico "entity".
Figura 2.6: Ejemplo de búsqueda en la interfaz web WordNet
9
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
2.6.2 Web Eurowordnet Interface
Como ya se expusiera anteriormente, WEI es una interfaz web multilingüe desarrollada dentro del proyecto Meaning con el objetivo de proveer un modo de acceso al MCR. Si bien la parte del servidor está desarrollada en PERL, la parte del cliente de WEI estaba inicialmente diseñada en JAVA, aunque posteriormente fue modificada para permitir su correcto funcionamiento en ordenadores sin la JVM (Java Virtual Machine).
WEI permite la consulta de términos en los 5 idiomas comprendidos en el proyecto meaning: inglés, italiano, español, euskera y catalán. Igualmente podemos seleccionar varios idiomas de modo que se muestren los términos o palabras de esos idiomas asociados a cada uno de los sentidos de la palabra buscada, caso de existir.
En la figura 2.7 podremos observar el resultado de la busqueda de la palabra cannon en la base English 1.6, seleccionando como idiomas "de salida" el ingles, español, euskera y catalán.
Figura 2.7: Ejemplo de consulta en WEI
10
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
3. DOCUMENTOS DE OBJETIVOS DEL PROYECTO (D.O.P)
3.1 Objetivos
El objetivo de este proyecto es modificar la interfaz de consulta y edición del MCR, de modo que se corrijan algunos errores asociados a esta, como búsquedas erróneas o conflictos con algunas de las opciones en determinados idiomas.
Adicionalmente, se incluirán nuevas opciones a la aplicación, de modo que se puedan consultar y modificar ejemplos de synsets, editar la información asociada al Inter Lingual Index (ILI), etc... y se añadirán nuevas ontologías para la clasificación de los synsets.
3.2 Alcance
3.2.1 Alcance del proyecto
● Se deben corregir los problemas con la interfaz WEI y añadir nuevas características usando el lenguaje de programación PERL, lenguaje con el que está desarrollada la versión actual de la interfaz.
● Se deberá modificar la base de datos en los casos necesarios, respetando la estructura actual de la misma.
● El producto final, además de las nuevas funciones, deberá respetar los resultados de las funciones ya existentes en la versión anterior de la interfaz (salvo, evidentemente, los casos en que alguna deficiencia sea corregida). Los resultados de búsquedas y actualizaciones que funcionaran correctamente deberán mantenerse invariados.
3.2.2 Diagrama de Estructura de descomposición del trabajo (EDT)
Este proyecto se descompone en 3 tipos de procesos: Procesos operativos, procesos tácticos y procesos formativos. Podemos ver la descomposición de cada uno en el siguiente cuadro, que muestra el diagrama EDT representativo del proyecto.
11
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 3.1: Diagrama de estructura de descomposición del trabajo.
3.2.3 Asignación de recursos
3.2.3.1 Recursos humanos
Los recursos humanos de este proyecto se limitan a la intervención del alumno que lo desarrolla y la orientación del director del proyecto German Rigau.
Se ha estipulado una duración aproximada del proyecto de 300 horas, incluyendo los procesos formativos.
3.2.1.2 Recursos materiales
Para la realización de este proyecto se utilizará una cantidad limitada de recursos materiales. En primer lugar, y como pieza fundamental, se hara uso de uno ordenador personal, propiedad del alumno, que estará equipado con el software necesario para el correcto desarrollo del proyecto. También se utilizará material de oficina como pueda ser papel, bolígrafos, portaminas y demás objetos.
Caso de ser necesario se hará uso de material propiedad de la facultad de informática de la UPV, así
12
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
como del propio director del proyecto durante el transcurso de las reuniones.
Entre el software del que se hará uso para la realización del proyecto cabe destacar el sistema operativo Linux, Oracle como servidor y la aplicación web phpMyAdmin para el manejo y uso mejorado de la base de datos MCR.
3.3 Método de trabajo
Se seguirá un proceso unificado de desarrollo (PUD) dividiendo el proyecto en 2 iteraciones, la primera de las cuales arrojará una primera versión del software, ocupándose la segunda de modificar en los casos necesarios cualquier punto del proyecto, desde el análisis o el diseño hasta cualquier detalle de la implementación que sea necesario para mejorar el producto final. Este método de trabajo se caracteriza por una naturaleza iterativa e incremental.
En primer lugar en una iteración deberemos identificar los casos de uso que estarán presentes en nuestro proyecto. Se analizarán y diseñarán dichos casos de uso, implementándolos después de acuerdo a las especificaciones del proyecto, respetando el lenguaje de programación acordado. Finalmente se realizarán las pruebas necesarias para comprobar el funcionamiento del producto y realizar cambios si fuera necesario.
El procedimiento que se usará para la realización del proyecto sera el siguiente. El alumno trabajará en el desarrollo del proyecto en su ordenador, presentando resultados o consultando dudas al director del proyecto cuando lo estime oportuno. Las reuniones cone l director del proyecto se realizarán en el despacho de éste en la facultad. Sin embargo se intentará reducir al máximo el número de reuniones físicas para evitar inflar el coste económico del proyecto por motivos geográficos y de transporte. Como método adicional para la consulta de dudas se usarán medios alternativos como el correo electrónico.
Los datos generados por el proyecto se almacenarán localmente en el ordenador del alumno, realizándose copias de seguridad de éstos siempre que se estime oportuno. Igualmente se utilizará la conexión del alumno para el acceso a internet para cualquier operación de consulta o descarga de software necesario para la realización del proyecto.
3.4 Planificación temporal
El desarrollo de este proyecto se divide en distintas fases de acuerdo a la función a desarrollar en cada una de ellas. Estas fases son expuestas a continuación:
Fase 1: Gestión del proyecto:Se acordarán las bases del proyecto, las tareas a realizar, se realizarán las reuniones pertinentes para el establecimiento de las mismas... Igualmente se realizara el documento del proyecto.
13
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Fase 2: Análisis del entorno:Se evaluarán el campo en el que se enmarca el proyecto, asi como los antecedentes y proyectos similares existentes, las herramientas y So con el que se trabajará.
Fase 3: Desarrollo del proyecto:Se divide en varias subfases
Captura de requerimientos. Durante esta fase se diseñarán los casos de uso que satisfagan las demandas de nuestro proyecto.
Análisis: Se concretarán y definirán los aspectos de los casos de uso estipulados.Diseño: En esta fase se organizará y diseñará el funcionamiento del sistema para su correcto
funcionamiento.Implementación: Se desarrollará y construirá el código y se modificará la interfaz de
acuerdo al diseño decidido y diseñado en la fase anterior.Pruebas: Se comprobará el correcto funcionamiento del software, para evitar posibles
errores y asegurar que el resultado final es el esperado para el producto.
3.4.1 Diagrama Gantt
Figura 3.2: Diagrama Gantt del proyecto
En cuanto a la estimación en horas del proyecto, podemos ver los puntos mas reseñables en el siguiente cuadro.
14
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Estimación en horas
Análisis del entorno 10 horas
Realización del DOP 12 horas
Formación 50 horas
Búsqueda de información 10 horas
Captura de requisitos 5 horas
Análisis 6 horas
Diseño 6 horas
Implementación 100 horas
Pruebas 5 horas
Memoria 40 horas
Preparar material 5 horas
Estimación total en horas 250 horasFigura 3.3: Estimación en horas del coste del proyecto.
3.5 Plan de contingencia
Durante el desarrollo del proyecto, hemos de tener en cuenta todos los problemas que puedan surgir y poner en riesgo la elaboración del mismo o que puedan suponer un retraso en los plazos.
Para paliar los efectos de estos posibles contratiempos se seguirás las medidas descritas a continuación.
Riesgo Solución
Fallo en el hardware o equipo en el cual se trabaja.
Se intentará reponer o reparar el hardware lo antes posible. Se tendrá otro equipo preparado para funcionar en las mismas condiciones. En caso necesario se utilizara equipo de la UPV.
Perdida de información debido a error humano o a fallo en el hardware/software de la máquina.
Se repondrán los archivos a partir de una copia de seguridad que se almacenara en otro disco duro, y de ser posible, también en un dispositivo de almacenamiento externo o otro ordenador.
Problemas en la conexión del ordenador sobre el que se trabaja, impidiendo acceso a internet.
Se contactará inmediatamente con el ISP, Caso de ser necesario, se intentará hacer uso de una red pública para el acceso a internet, bien de la propia ciudad del afectado o bien de la UPV.
15
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
El coste de desplazamientos eleva demasiado el coste del proyecto.
Se intentará resolver el mayor numero de problemas por medio de email o si fuera necesario, teléfono. Se recurrirá a reuniones físicas para los casos que estrictamente así lo precisen.
El alumno encargado del proyecto está inhabilitado un tiempo por enfermedad o por otra causa.
Se intentarán poner todos los medios viables para la recuperación o solventación de las causas originantes. Una vez de vuelta a la normalidad se redoblará el esfuerzo en los días subsiguientes para evitar un mayor impacto en los plazos establecidos.
El alumno o coordinador del proyecto no pueden acudir a alguna reunión acordada.
Se avisará de la circunstancia con una antelación suficiente para evitar problemas a la otra parte. Se intentará acordar una nueva fecha de reunión que satisfaga a ambas partes.
Se produce algún problema con el medio de transporte utilizado para los desplazamientos.
Se intentará hacer uso, en caso de urgencia, de un medio de transporte alternativo ignorando su coste y/o utilidad.
3.6 Análisis de factibilidad
A la hora de estudiar la factibilidad de este proyecto con los recursos y en la situación actual lo haremos enfocándolo desde diversos puntos.
Económicamente es factible, dado que a pesar de que el presupuesto del alumno es limitado y el desarrollo del proyecto conlleva gastos como transporte, material, conectividad a internet y hardware... se ha ideado dicha elaboración de modo que dichos gastos se minimicen y no supongan ningún tipo de problema para el desarrollo del proyecto, y se pueda abordar perfectamente aun surgiendo gastos imprevistos.
Técnicamente el proyecto también es totalmente viable, dado que se dispone sobradamente del hardware y equipamiento necesario para todas las aplicaciones, software, gestión de datos, etc.. requeridos por el proyecto. En caso de problemas con los recursos técnicos sería sencillo restaurarlos o reponerlos en un breve periodo de tiempo, con lo cual la factibilidad del proyecto no corre riesgo en el apartado técnico.
Operacionalmente el proyecto es realizable, dado que no hay ningún problema para, manteniendo la estructura actual de la BD y la propia aplicación, añadir en el lenguaje de programación actual (PERL) las opciones y variantes que se han acordado.
16
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Con todo esto evaluado, podemos concluir que el proyecto es factible, y que salvo imprevistos serios, su realización no correrá ningún riesgo y será completada tal como se ha previsto.
17
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
4. DESARROLLO DEL SISTEMA DE INFORMACIÓN
4.1 Captura de requisitos
4.1.1 Casos de uso
Figura 4.1: Diagrama de casos de uso del proyecto.
4.1.1.1 Caso de uso consultar MCR
•Actores : Usuario
•Resumen : Este caso de uso permite al usuario consultar el contenido del MCR y buscar así definiciones, ejemplos, etc... de las palabras contenidas, permitiéndole seleccionar entre distintas opciones de búsqueda y diversos idiomas en los que mostrar lso resultados.
•Precondiciones : El usuario accede a la pagina web.
•Postcondiciones : Se muestran los resultados de la búsqueda elegida en el navegador del usuario.
•Curso normal de los eventos:
1.El usuario introduce una palabra o synset a buscar, introduce las opciones de búsqueda y selecciona los idiomas a mostrar para la salida de datos.
2.El sistema obtiene los datos requeridos del MCR y los presenta al usuario en pantalla.
•Cursos alternativos:
18
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Paso 1 a) El usuario selecciona una palabra no valida, o selecciona erróneamente alguno de los términos de búsqueda.
1. El sistema mostrara un mensaje “Not Found” para advertir de que la palabra que ha escrito no existe, o bien no figura en ese idioma, PoS...
Paso 1 b) El usuario no introduce ninguna opción de búsqueda ni palabra a buscar.1. El sistema mostrará al usuario la interfaz del mismo modo que anteriormente a la búsqueda, sin mostrar resultados ni mensajes, permitiendo al usuario redefinir su búsqueda.
4.1.1.1 Caso de uso Editar synset
•Actores : Usuario
•Resumen : Este caso de uso permite al usuario modificar la definición de una palabra, sus ejemplos o bien sus sentidos en el MCR.
•Precondiciones : El usuario ha buscado la palabra o synset a editar.
•Postcondiciones : Se registran las modificaciones en el MCR caso de existir. También se registra al usuario para llevar un control de cambios.
•Curso normal de los eventos:
1.El usuario tras realizar la búsqueda pulsa el botón con el offset de la palabra..2.El sistema obtiene los datos requeridos del MCR y los presenta al usuario en pantalla.3.El usuario modifica los datos que desea que se editen en el MCR, modificando la
descripción y ejemplos o editando/añadiendo/borrando sentidos.4.El sistema recoge los datos, modifica el MCR y registra al usuario como autor de esa
modificación. Muestra un mensaje de confirmación o error dependiendo del resultado del proceso.
•Cursos alternativos:
Paso 3 a) El usuario no modifica ninguno de los campos..1. El sistema mostrará el mensaje de modificación correcta, si bien no realizará ningún cambio en el MCR.
4.1.1.1 Caso de uso Editar ILI
•Actores : Usuario
19
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
•Resumen : Este caso de uso permite al usuario modificar la información asociada al ILI de un sysnset, como las ontologías asociadas a éste.
•Precondiciones : El usuario ha buscado el synset a editar.
•Postcondiciones : Se registran las modificaciones en el MCR caso de existir. También se registra al usuario para llevar un control de cambios.
•Curso normal de los eventos:
1.El usuario tras realizar la búsqueda pulsa el botón sobre las etiquetas de las ontologías asociadas a ese synset..
2.El sistema obtiene los datos requeridos del MCR y los presenta al usuario en pantalla.3.El usuario modifica los datos que desea que se editen en el MCR, modificando las
etiquetas asociadas a una o varias ontologías o añadiendo/borrando etiquetas.4.El sistema recoge los datos, modifica el MCR y registra al usuario como autor de esa
modificación. Muestra un mensaje de confirmación o error dependiendo del resultado del proceso.
•Cursos alternativos:
Paso 3 a) El usuario no modifica ninguno de los campos..1. El sistema mostrará el mensaje de modificación correcta, si bien no realizará ningún cambio en el MCR.
Paso 3 b) El usuario intenta eliminar todas las etiquetas de una ontología.1. El sistema evitará realizar los cambios al MCR y advertirá al usuario del problema con un mensaje de error.
4.1.2 Modelo de dominio.
En las siguientes figuras se muestran algunas de las tablas del MCR usadas para la implementación de las distintas funciones de la interfaz WEI.
20
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.2: Tablas usadas en el formulario de consultas
En este caso, la tabla wei_languages es la que contiene información referente a los idiomas contenidos en el MCR. Cada entrada representa a un idioma de la BD, donde el campo code indica el código del lenguaje (por ejemplo en30), el campo lang contiene el idioma al que corresponde la entrada (por ejemplo English_3.0) y el campo color indica el color que se ha asignado a ese idioma y con el que se representaran sus datos en la interfaz, en formato hexadecimal.
La tabla wei_relations_group es la que contiene la información referente a los distintos grupos de relaciones (como sinónimos, merónimos, etc...) existentes en el MCR. En el caso de esta tabla, el id de cada entrada es un representador único de dicha entrada mientras que el campo name contiene una descripción del mismo (como por ejemplo synonyms).
En cuanto a la tabla wei_relations contiene información acerca de las relaciones por las cuales puede realizarse la consulta. El campo id identifica a la relación, el campo name contiene el nombre o descripción de la relación, como pueda ser 'has_hyponym', el campo inverse contiene el nombre de la relación inversa si ésta existe, y el campo grup referencia al nombre del grupo al que pertenece la relación, campo por el cual se relaciona con la tabla explicada anteriormente.
21
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.3: Algunas tablas usadas para la muestra de datos de la búsqueda.
En este caso: La tabla wei_language_synset, donde el código del lenguaje sustituye a éste en el nombre de la tabla, incluye los synsets del lenguaje en cuestión. El campo offset junto con el pos identifican al synset, mientras que por ejemplo, el campo gloss incluye la descripción o definición que mostraremos en la interfaz.
La tabla wei_language_examples incluye ejemplos para alguno de los sentidos. El campo word indica la palabra y el campo sense el sentido al que referencia el ejemplo. En el campo example se encuentra el ejemplo que mostraremos en la interfaz, mientras que el pos y offset indican el synset al que pertenece.
La tabla wei_language_relation contiene las relaciones entre synsets del idioma. En el campo relation tendremos la relacion entre los synsets, mientras que los campos sourceSynset y sourcePos identifican al synset al que se referencia y los campos targetSynset y targetPos el synset con elq ue el anterior guarda la relación correspondiente.
22
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
En cuanto a la tabla wei_language_to_ili relaciona un synset del lenguaje y version correspondiente con un synset del InterLingual Index, posibilitando las consultas en varios idiomas.El campo offset y pos identifican al synset de la version correspondiente, mientras que los campos iliOffset y iliWnId identifican la synset en el ILI.
Figura 4.4: Algunas tablas usadas en el tratamiento de ontologías.
En cuanto al tratamiento de las ontologías, como vemos en la figura 4.4, usaremos mayormente las siguientes tablas:
La tabla wei_ontology_pattern guarda una relación de las ontologías incluidas en MCR. El campo name incluye el nombre de la ontología, mientras que el campo taula guarda el nombre de a tabla en la cual se haya plasmada la jerarquia y dominios de esa ontología.
La tabla wei_ontology_relation, donde ontology es sustituido por el nombre de cada ontología en cuestión en el nombre de la tabla, se guarda una relación de los dominios o posibles etiquetas asignables de esa ontología así como la relación que guardan entre ellas. El campo relation guarda el tipo de relación (por ejemplo subclass), el campo source muestra el dominio o etiqueta de la ontología al que hace referencia esa entrada de la tabla, y el campo target aquella con la cual guarda la relación (normalmente la inmediatamente superior en la jerarquía).
Por último, las tablas wei_ontology_to_ili, donde ontology también es sustituido por el nombre de la ontología en cuestión para esa tabla, contiene las etiquetas o dominios de esa ontología asignados a los synsets del ILI. En este caso, los campos iliOffset, iliPos y iliWnId identifican al synset, el campo ontology, que se llamará como la ontología en cuestión a la que pertenezca la tabla, contiene la etiqueta asignada a ese synset, y el campo modif indica por ejemplo, si esa etiqueta a sido asignada o heredada.
23
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
4.2 Análisis
4.2.1 Caso de uso Consultar MCR
4.2.1.1. Diagrama de secuencia del sistema
Figura 4.5 DSS del caso de uso Consultar MCR
4.2.1.2 Contrato operación ConsutarMCR
Nombre: ConsultarMCR (item, method, pos, lenguage, search, structure, gloss, score, rels, full, en16, en17, en15, spwn, e171, cawn, en20, bawn, ca15, itwn, sp15)
Responsabilidades: Dadas una serie de parámetros, el sistema deberá buscar en la base de datos la información solicitada por el usuario y mostrarla por pantalla. Para ello hará uso de los siguientes parámetros:item: Contiene la palabra, synset, variant, o ILI a buscar.method: Contiene el tipo de búsqueda que se realizará, es decir, su valor sera o bien word, synset, variant o ili.pos: Este campo indica el Part od Speech de la palabra o synset a buscar, es decir, sera bien noun, verb, adjective o adverb.language: Lenguaje en el que se desea realizar la búsqueda. Por defecto su valor sera English_1.6search: Será la relación a incluir en la busqueda. Por defecto near_synonym.structure: idioma al que pertenece la relación anteriormente indicada. Por defecto su valor sera English_1.6gloss: Opción que hace que se muestre la descripción del término buscado. Se encontrará acticvada por defecto.score: Opción para mostrar el porcentaje de cada definición.rels: opción para mostrar las relaciones del término.full: Opción para activar las 3 anteriores.en16, en17, en15, spwn, e171, cawn, en20, bawn, ca15, itwn, sp15: cada uno de ellos indica si se ha
24
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
seleccionado el idioma correspondiente como idioma de salida.
Excepciones:Si se ha escrito un término erróneo o no existente en la base de datos se mostrara un mensaje de error.Si no se ha introducido un término no se mostrara mensaje ni resultado alguno.
Precondiciones:El usuario introduce un mínimo de datos requeridos, dado que para el resto se usarán valores por defecto caso de no ser introducidos.
Postcondiciones:No se realizará ninguna modificación sobre la DB al tratarse de una consulta.
Salida:Se mostrarán los resultados de la consulta, tanto los datos del término buscado como la información referente al ILI de éste.
4.2.2 Caso de uso Editar synset
4.2.2.1 Diagrama de secuencia del sistema
Figura 4.6 DSS del caso de uso Editar synset
4.2.2.2 Contrato operación EditarSynset
Nombre: EditarSynset (pos, synset, lang)
Responsabilidades:
25
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Dado un offset, pos, lenguaje.. de un synset, busca la información correspondiente en la base de datos, y caso de no estar bloqueado los presenta al usuario en un formulario que permita su edición. Los campos contendrán por defecto el valor actual de dicho campo (descripcion, ejemplos, variants...). Algunos de los parámetros requeridos:offset: Contiene el offset del synset a editar.pos: Contiene la Part of Speech (n para nombres, v para verbos, a para adjetivos y r para adverbios) del synset a editar.lang: Contendrá el lenguage en el que se realizara la edición.
Excepciones:Si el synset se encuentra bloqueado y no puede ser editado, el sistema informara de ello al usuario en lugar de mostrar el formulario de edición, y dará la opción de eliminar el bloqueo.
Precondiciones:El usuario ha buscado anteriormente el synset a editar en la interfaz de edición, y ha pulsado el botón correspondiente para llamar a esta operación.
Postcondiciones:No se modificara ningún dato en la base de datos en esta operación.
Salida:Si el synset se encuentra bloqueado para escritura se mostrarrá un mensaje advirtiéndolo y la opcion de desbloquearlo para el usuario.En caso contrario se mostrará un formulario con la definición, ejemplo y variants o sentidos del synset, dando la posibilidad al usuario de modificar estos datos, así como la opción de bloquear el synset tras su edición.
4.2.2.3 Contrato operación UpdateSynset
Nombre: UpdateSynset (offset, pos, lang, lock, gloss, examples...)
Responsabilities:Esta operación recoge los datos del formulario de edición y realiza los cambios pertinentes en la base de datos, alterando solo los datos que hayan sido modificados e el formulario y dejando inalterados aqueyos que no hayan sufrido cambio. También registra los datos del usuario que ha realizado la modificación.Algunos de los parámetros usados son:offset: offset del synset a modificar en la base de datos.pos: Part of Speech del synset a modificar.lang: lenguaje en el que se realiza la modificación.lock: parámetro que indica al sistema si debe bloquear o desbloquear el synset en la base de datos.text: contiene el texto de la descripción del formulario.texej: contiene el texto de los ejemplos del synsetoperacions: contiene las operaciones con los variants, como inserción de nuevos sentidos,
26
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
eliminación de alguno existente, modificación...
Excepciones:Si se producen errores en la modificación se informará al usuario. Si el usuario no realiza cambios en los datos actuales no se modificará la base de datos pero se informará de que el synset ha sido modificado igualmente.
Precondiciones:El usuario había solicitado la modificación de los datos y modifica éstos por medio del formulario.
Postondiciones:Se modifican los datos en la base de datos, modificando las entradas en las tablas synset y examples y modificando/añadiendo/eliminando entradas en las variants. Estos cambios solo se realizarán si la información nueva es distinta a la almacenada en la base de datos.También se añade una entrada a la tabla wei_log_edit para reflejar la modificación realizada, el usuario que la ha llevado a cabo, y la fecha y hora en que se produjo la edición.
Salida:Se muestra un mensaje “Synset has been updated!” si no se ha producido ningun error. Caso contrario se notifica =mente al usuario.
4.2.3 Caso de uso Editar ILI
4.2.3.1 Diagrama de secuencia del sistema
Figura 4.7 DSS del caso de uso Editar ILI
27
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
4.2.3.2 Contrato de la operación EditarILI
Nombre: EditarILI (iliOffset,iliPos,iliWnId)
Responsabilidades:Esta operación se encarga de que, tras pulsar el usuario el botón correspondiente a la edición de la información asociada al ILI, buscar dicha información (etiquetas de distintas ontologías) en la base de datos y una vez hecho esto, presentar un formulario o ventana que permita la cómoda edición, modificación o borrado de los datos.Algunos de los parámetros usados son:iliOffset: indica el offset del synset del cual se modificará la información asociada al ILI.iliPos: Indica el Part of SpeechiliWnId: Indica la lengua
Excepciones:Ninguna notable.
Precondiciones:El usuario ha buscado el synset del cual modificar la información asociada al ILI en la interfaz de edición, y pulsa el botón que permite la edición de dichos datos.
Postcondiciones:No se realizará ninguna modificación mediante esta operación en la base de datos.
Salida:Se presentará un formulario, mediante listas desplegables, que permita al usuario modificar o eliminar cualquiera de las etiquetas de cualquier ontología asignadas a ese synset en el ILI, así como permitirá añadir nuevas etiquetas a las ontologías que lo permitan. Este formulario contendrá como valores por defecto los datos actuales de las etiquetas de ese synset en el ILI acorde al estado actual de la base de datos.
4.2.3.3 Contrato de la operación UpdateILI
Nombre: UpdateILI (iliOffset,iliPos,iliWnId,ontologylabels...)
Responsabilidades:Esta operación se encarga de recoger los datos del formulario presentado al usuario, y modificar, eliminar o añadir las etiquetas que hayan sufrido modificación respecto al contenido en la base de datos.También se encargará de registrar en la tabla wei_log_top las tablas modificadas, el usuario que ha realizado la modificación así como al hora y la fecha de ésta.Algunos de los parámetros usados son:iliOffset: indica el offset del synset del cual se modificará la información asociada al ILI.iliPos: Indica el Part of Speech
28
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
iliWnId: Indica la lenguaLos subsiguientes parámetros contienen las distintas etiquetas asociadas a ese synset, tanto su valor antiguo como el nuevo valor procedente del formulario
Excepciones:Si el usuario decide eliminar todas las etiquetas de una misma ontología se le mostrará un mensaje informándole de que esta operación no es posible.
Precondiciones:El usuario ha cumplimentado el formulario y pulsado el botón de enviar.
Postcondiciones:Se modificarán en la base de datos las etiquetas pertinentes, eliminando y añadiendo las entradas que sean necesarias en las tablas wei_ontology_to_ili, donde ontology será el nombre de la ontología a modificar. Sólo se realizarán éstos cambios en el caso de que las etiquetas especificadas por el usuario difieran de las contenidas en la base de datos, o de que se haya añadido o eliminado alguna etiqueta.Igualmente se modificara la tabla wei_log_top para registrar los cambios realizados, su autor y la hora y fecha en que se han producido.
Salida:Se mostrará al usuario un mensaje de que el Ili ha sido modificado correctamente. Caso de que el usuario haya cometido algún error como intentar borrar todas las etiquetas de una ontología, se le indicara mediante el pertinente mensaje.
4.3 Diseño del sistema
4.3.1 Arquitectura del sistema
La arquitectura del sistema esta basado en un sistema de aplicación web, hosteada en un servidor. El cliente, se conecta al servidor remotamente y envía una petición de consulta o edición a este. El servidor procesa la petición, realiza las consultas o modificaciones necesarias a la base de datos MCR y devuelve una respuesta al usuario.
29
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.8: Esquema de la arquitectura cliente/servidor
En cuanto a la estructuración de la aplicación en diferentes capas, se ha seguido una estructuración en 2 capas, capa de presentación, capa de negocio y capa de datos si bien la capa de presentación y capa de negocio están
La capa de presentación es la encargada de presentar los datos de las consultas al usuario. Esta diseñada en PERL y funciona mayormente con medio de formularios HTML para permitir la interactuación entre el usuario y el sistema. La capa de negocio, encargada de procesar los datos o peticiones enviados por el usuario, hacer las consultas o modificaciones necesarias a la base de datos y enviar a la capa de presentación los datos que ésta debe mostrar al usuario se encuentra dentro de la propia capa de presentación, dado que a la vez que se recogen los datos se procesan por medio de distintos scripts perl.Para la realización de este proyecto se ha elegido un servidor Apache para el hosting de los scripts perl pertinentes, permitiendo su acceso desde un navegador de internet cualquiera.
La capa de datos, o capa de gestión de datos, es la que contiene toda la información y de donde se obtienen los datos solicitados por el usuario. Esta implementada por medio de una base de datos MySQL. Se ha decidido hacer uso de la aplicación PHPmyAdmin para el uso y procesamiento de la base de datos durante la realización del proyecto.
30
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.9: Arquitectura en 2 capas
4.3.2 Diseño de las operaciones
4.3.2.1 Diseño de Consultar MCR
Figura 4.10: DSS Consultar MCR
El usuario solicita a la interfaz bien de consulta o de edición, la búsqueda de un termino seleccionando en el formulario las opciones de búsqueda que desea.
Por el patrón experto el script wei.mostrar.synset.perl recibe los datos de la consulta y realiza las consultas pertinentes a la base de datos (tablas wei_languages, wei_relations, wei_lang_synset, wei_lang_variant, wei_lang_examples...)
Los datos son devueltos al usuario presentados separados acorde al sentido del término buscado caso de tener varios el término buscado y acompañado de los resultados relacionados con éste según la relación seleccionada por el usuario, así como la información del ILI asociada.
En caso de realizarse la consulta mediante la interfaz de edición la información se devuelve del mismo modo acompañada de dos botones para permitir la edición bien del synset o de la información (ontologías) del ILI asociadas.
31
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
El diseño y las consultas de ésta operación no se detallan más debido a que no han sufrido alteración respecto a su estado inicial para la introducción de los cambios añadidos durante este proyecto. Los cambios realizados se detallarán más concretamente en el apartado de implementación.
4.3.2.2 Diseño de EditarSynset
Figura 4.11: DSS EditarSynset
Figura 4.12: DSS UpdateSynset
Para la operación EditarSynset. el usuario, tras haber buscado el término a editar, pulsa el botón correspondiente a la edición del synset deseado, invocando la operación EditarSynset del script.
Por el patrón experto el script wei.editar.synset.perl recibe los datos del synset a editar (offset, pos y
32
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
lenguaje) y realiza las consultar pertinentes a la base de datos.Una vez recibidos los datos de la BD, el propio script de encarga de organizarlos y presentarlos al usuario en forma de un formulario que permita la edición de cada uno de los datos presentados (glosa del synset para el idioma editado, ejemplos del synset también para dicho idioma y palabras y sentidos (o variants) del synset)
Para la operación UpdateSynset, el usuario, tras rellenar o modificar los datos deseados, envia el formulario pulsando el correspondiente boton. Esto invoca la operación UpdateSynset.
Por el patrón experto, el script wei.update.synset.perl recibe los datos del synset a modificar asi como los valores del formulario rellenados por el usuario. Consulta a la base de datos los valores actuales de esos parámetros (como gloss, examples, etc...). Tras comparar los valores actuales con los valores recibidos, edita la base de datos sustituyendo la información contenida en ésta por los datos recibidos en caso de que difieran. Tambien modifica la tabla wei_log_edit para reflejar los cambios realizados y el autor de los mismos.
Se devuelve al usuario un mensaje de “Synset Updated” una vez completada la operación. Caso de que algo fallara se informa al usuario mediante el pertinente mensaje de error.
El diseño y consultas de ésta operación no se analizan en detalle, dado que no ha sido modificado el diseño anterior para la inserción de las nuevas funcionalidades. En cuanto a las consultas, solo se ha añadido una nueva consulta para la consulta y edición de los ejemplos asociados al synset.
4.3.2.3 Diseño de Editar ILI
Figura 4.13: DSS EditarILI
33
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.14: DSS UpdateILI
Para la operación EditarILI, el usuario, una vez buscado el synset, palabra... a modificar su ILI pulsa el botón sobre la información del ILI asociada al synset buscado.
Por el patrón experto, el método editarIli del script wei.editar.synset.perl recibe los datos del ILI a editar (iliOffset, iliPos, iliWnId) y a partir de ellos consulta la base de datos para obtener las etiquetas de ontologías asignadas a ese synset (tablas wei_ontologia_to_ili). También recoge de la base de datos todas las etiquetas disponibles de cada ontología editable y devuelve todos estos datos (tablas wei_ontologia_relations)
Los datos son presentados al usuario por medio de listas desplegables separadas por ontologías, con valor por defecto el de la etiqueta de esa ontología asignada al synset, y valores seleccionables todos los obtenidos de la BD como etiquetas posibles para esa ontología.
Para la operación updateILI, el usuario, una vez seleccionadas, modificadas, eliminadas o añadidas las etiquetas que desea envía la información por medio del botón del formulario.
Por el patrón experto, el metodo update del script wei.update.ili.perl recibe los datos enviados, que incluyen el valor antiguo de las etiquetas así como el valor nuevo que el usuario quiera asignarles. Procesa los datos, comprobando que no sean borradas todas las etiquetas de una ontología, comparando los valores antiguos y nuevos de cada etiqueta para determinar que etiquetas debe borrar, cuales añadir y cuales dejar sin modificar.Una vez hecho todo esto, edita la BD para añadir las etiquetas nuevas, posteriormente elimina de la BD las etiquetas que el usuario haya decidido eliminar/sustituir y finalmente edita la tabla wei_log_top para añadir los cambios realizados y el autor de dichos cambios, así como el momento de la edición.
Finalmente se retorna al usuario un mensaje de “ILI updated!” para confirmarle que la operación se ha realizado, o un mensaje de error en caso de que algo fuera mal (por ejemplo, que eligiera borrar todas las etiquetas de una ontología).
34
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
4.4 Implementación
4.4.1 Base de datos
Empezaremos por enunciar los cambios efectuados en la base de datos para la implementación de las funcionalidades incorporadas mediante este proyecto. Para ello, nos centraremos en los cambios aplicados a la propia base de datos (a su estructura o sus tablas) y por otra parte a los cambios en la propia aplicación relacionados con las nuevas llamadas a la base de datos incorporadas en este proyecto, bien para su consulta o para su edición.
4.4.1.1 Modificaciones a la base de datos
Las modificaciones a la base de datos incluídas son las siguientes:
– Se ha añadido la tabla wei_blc_relations. La función de esta tabla es albergar las etiquetas existentes para la nueva ontología implementada, Basic Level Contepts, así como la jerarquía que éstas etiquetas guardan. La tabla wei_blc_relations contiene 6 campos, detallados a continuación: targetWord(VARCHAR(100)), targetSense(INT(1)) y targetPos(CHAR(1)) identifican a la etiqueta blc representada por esa entrada de la tabla. sourceWord(VARCHAR(100)), sourceSense(INT(1)) y sourcePos(CHAR(1)) identifican a la etiqueta jerárquicamente inmediatamente superior a la etiqueta identificada por esa entrada.
– Se ha añadido la tabla wei_blc_to_ili. La función de esta tabla es registrar la etiqueta de la ontología BLC asignada al ILI de un synset. Esta tabla consta de 6 campos detallados a continuación: iliOffset(VARCHAR(8)), iliPos(CHAR(1)), iliWnId(VARCHAR(4)) identifican al ILI al cual se asignará la etiqueta contenida en esa entrada. blcWord(VARCHAR(100)), blcSense(INT(1)) contienen los datos que identifican a la etiqueta BLC asignada. Se omite el campo bclPos ya que será el mismo que el del ILI al que se asigna la etiqueta.modif(CHAR(3)) contiene el estado de esa entrada, representando si la etiqueta ha sido asignada directamente, heredada...
– Se han modificado las tablas wei_ca15_examples y wei_cawn_examples, modificando el nombre de la columna 'exemples' a 'examples' con el fin de evitar problemas que se producían al realizar consultas o mostrar el resultado de alguna de éstas en catalán. Igualmente el cambio permite el correcto funcionamiento de la edición de ejemplos, parte de los objetivos de este proyecto, dado que también producía conflictos a la hora de editar los mismos.
4.4.1.2 Llamadas a la BD añadidas a la aplicación
Estas son algunas de las consultas añadidas a la interfaz WEI durante el proyecto para el correcto funcionamiento de alguna de las funciones añadidas. Cada una incluye una descripción de la
35
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
función que cumple.
● SELECT * FROM wei_"."$codi"."_examples WHERE pos='$pos' AND offset='$synset': De esta consulta extraeremos los datos relativos a los ejemplos del synset que se va a mostrar en el formulario de edición. $codi corresponde al código del idioma en edición, de modo que se pueda seleccionar la tabla adecuada.
● UPDATE wei_$codi"."_examples SET examples='$example' WHERE pos='$pos' AND offset='$synset': Actualiza la BD modificando los ejemplos del synset acorde a los datos enviados por el usuario de la aplicación. $codi corresponde al código del idioma en edición, de modo que se pueda seleccionar la tabla adecuada. Esta edición solo se produce si el ejemplo contenido en la base de datos es distinto del enviado por el usuario.
● INSERT INTO wei_log_edit VALUES ('$user', '$data', '$hora', 'update', 'wei_$codi"."_examples', '$synset|$pos|examples(|$oldexample|$example|)'): Esta llamada a la BD inserta en la tabla wei_log_edit el cambio realizado a los ejemplos, el autor y la fecha de la edición. Se ejecuta despues de la llamada del punto anterior.
● SELECT label FROM wei_ontology_to_ili WHERE iliOffset='$synset' AND iliPos='$pos' AND iliWnId='$iliWnId'": Esta llamada a la BD sirve para la consulta de la(s) etiqueta(s) asignada(s) a un determinado ILI. Label corresponde al nombre de la columna de la tabla en la que se almacena la etiqueta y wei_ontology_to_ili corresponde al nombre de la tabla de la ontología en cuestión. Esta consulta se ejecuta una vez por cada una de las ontologías a editar.
● SELECT label FROM wei_ontology_retations: Esta consulta, donde label es el nombre de la columna que contiene el nombre de la etiqueta y wei_ontology_relations representa el nombre de la tabla que contiene todos los registros o etiquetas para la ontología tratada, se encarga de recoger el nombre de todas las etiquetas para poder presentarlas al usuario y que éste pueda elegir la etiqueta a añadir. Se repite una vez por cada ontología a editar.
● INSERT INTO wei_ontology_to_ili (iliOffset, iliPos, iliWnId, label, modif) VALUES ('$synset', '$pos', '$codi', '$aux[$i][2]', '='): Inserta una etiqueta en al información del ILI para una ontología concreta. Label representa el nombre de la columna que contiene la etiqueta, y wei_ontology_to_ili el nombre de la tabla que contiene las etiquetas asignadas a los ILIS para esa ontología. Esta llamada a la BD se produce una vez por cada etiqueta que el usuario haya modificado o añadido, independientemente de la ontología. No se realizará si el valor de las etiquetas enviadas por el usuario coincide con los valores actuales de la base de datos.
● INSERT INTO wei_log_top (DATA, hora, operacio, taula, dades) VALUES ('$data', '$hora', 'add', 'wei_ontology_to_ili', '$synset|$pos|$codi|labeladded($aux[$i][2])'): Esta llamada inserta en la tabla wei_log_top los valores modificados con la llamada anterior, asi como su autor y fecha. wei_ontology_to_ili representa a la tabla modificada. No se producirá si no se realiza ninguna llamada de la expuesta en el punto anterior.
36
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
● DELETE FROM wei_ontology_to_ili WHERE iliOffset='$synset' AND iliPos='$pos' AND iliWnId='$codi' AND label='$aux[$i][1]': Esta llamada se encarga de eliminar de la BD cualquier etiqueta que el usuario haya seleccionado modificar por otra o eliminar del ILI. 'wei_ontology_to_ili' representa la tabla de la ontología que se está tratando que contiene las etiquetas de esa ontología asignadas a los ILI mientras que label referencia al nombre de la columna de esa tabla que contiene el nombre de la etiqueta.
● INSERT INTO wei_log_top (DATA, hora, operacio, taula, dades) VALUES ('$data', '$hora', 'delete','wei_ontology_to_ili', '$synset|$pos|$codi|labeldeleted($aux[$i][1])'): Esta llamada inserta en la tabla wei_log_top lasmodificaciones, autor y fecha de los cambios en la BD producidos por las llamadas del punto anterior. Si no se produjese ninguna esta llamada tampoco se ejecuta.
Estas llamadas sufren pequeñas variaciones, por ejemplo, en casos de ontologías cuyas etiquetas son identificadas por mas de un campo o en que la estructura de la tabla en la BD difiera ligeramente del resto, pero guardan una estructura similar a la descrita en los puntos anteriores.
4.4.2 WEI
En lo que respecta a la propia aplicación, la interfaz WEI, se han modificado ciertos archivos añadiendo o cambiando funciones de los mismos, y también se ha incluido un nuevo archivo, wei_update.ili.perl. Los cambios se detallan mas concisamente a continuación:
El archivo wei.consult.perl, así como el archivo wei.interfaz.edicion.perl, han sido modificados para permitir las búsquedas de términos con espacios. Por ejemplo, si queremos buscar el variant 'act_2', se permite la búsqueda tanto con 'act_2' como con 'act 2'.
El archivo wei.mostrar.synset.perl ha sido modificado en ambas interfaces (consulta y edición) con objeto de cambiar la forma enq ue se muestra el synset en la interfaz. Se ha cambiado el formato 'offsetpos' por el formato 'lenguajeversiónoffsetpos” siendo el lenguage un codigo ISO de 2 digitos representativo del idioma. En el caso de la interfaz de edición se ha modificado éste punto en el botón de edición del synset así como en el de edición del ILI, separando offset y pos.También se ha modificado para que muestre correctamente en la información del ILI la etiqueta de la nueva ontología implementada, la BLC (Basic Level Concept), que se muestra en color naranja.
El archivo wei.editar.synset.perl ha sufrido modificaciones. En primer lugar ha sido añadido código a la función dades_synset con el objetivo de consultar los ejemplos asociados al synset en edición, y mostrarlos en un área de texto para facilitar su edición al usuario.También ha sido añadida la función editar_ili, que se encarga de la muestra de los datos del ILI (en forma de listas desplegables) caso de que el usuario seleccionara la edición de la información asociada al ILI de un synset.
El archivo wei.update.synset.perl ha sido modificado de forma que actualice los ejemplos del
37
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
synset en la base de datos en caso de que hayan sufrido modificación en la edición.
Finalmente, se ha creado el archivo wei.update.ili.perl. Este script se encarga de la edición de las etiquetas de las distintas ontologías del ILI editado acorde a la información enviada por el usuario. Controla que no se borren todas las etiquetas de una ontología, y solo modifica la base de datos en caso de que haya diferencias entre las etiquetas antiguas y las enviadas por el usuario.
Los cambios mencionados son los más notables realizados en la interfaz WEI. Ningún archivo ha sido eliminado dado que la función de este proyecto era añadir nuevas funcionalidades a la interfaz y no quitar ninguna de éstas. Al no haberse realizado cambios ostensibles en el diseño, ningun fichero ha quedado obsoleto ni ha tenido que ser eliminado.
4.5 Pruebas
Durante la realización de pruebas del proyecto, nos centraremos en comprobar el correcto funcionamiento de las nuevas opciones añadidas a la interfaz, además de comprobar que no se ha modificado el resultado de las funcionalidades modificadas.
Comenzaremos por comprobar el correcto funcionamiento de la búsqueda con espacios. Para ello, buscamos en el MCR el variant o sentido car_1. Para ello, introduciremos 'car 1' en el cuadro de texto, seleccionamos variant como opción y cursamos la búsqueda, Seleccionaremos como lenguaje de salida adicional el catalán, para comprobar que ha sido solucionado el problema que impedía la correcta muestra de los ejemplos en este idioma. También aprovecharemos esta búsqueda para comprobar que se muestra correctamente la etiqueta correspondiente a la BLC (en naranja a la izquierda, junto con el resto de información asociada al ILI).
Figura 4.15: Búsqueda de prueba en WEI
38
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Al cursar la búsqueda obtenemos los siguientes resultados:
Figura 4.16: Resultado de la búsqueda de 'car 1'
En ellos podemos comprobar que la búsqueda se ha efectuado correctamente, que el ejemplo en catalán se muestra correctamente. También observamos que el synset se muestra en el nuevo formato (idiomaversiónoffsetpos) y que se muestra la etiqueta correspondiente al BLC en la información del Ili, concretamente en esta caso motor_vehicle_1.
Comprobaremos que la búsqueda sigue avisando de error si se introduce una búsqueda errónea o alguna opción incorrecta. Buscaremos la palabra 'cascade' seleccionando como idioma de entrada Spanish_1.6. Comprobaremos que bajo estos términos la búsqueda arroja error ya que la palabra cascade no existe en español.
Figura 4.17: Búsqueda errónea en WEI
Comprobamos que efectivamente, la búsqueda arroja error y avisa con el mensaje “Not found!!!” como hacía antes de añadir nuestras funcionalidades.
A continuación comprobaremos otra de las nuevas funcionalidades añadidas, la edición de ejemplos de los synsets.
Para ello, vamos a buscar la palabra car en la interfaz de edición. Comprobaremos que el ejemplo del synset y idioma seleccionados se muestra bien en el nuevo área de texto y que es perfectamente editable por el usuario. Seleccionaremos para editar el sentido car_1 en el idioma English 1.6 pulsando el botón correspondiente.
39
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.18: Formulario de edición en WEI
En efecto, el ejemplo se muestra correctamente en el área de texto. Probaremos a modificarlo y comprobaremos que el cambio se registra en la BD y que por tanto, en la siguiente búsqueda se muestra el nuevo ejemplo (restauraremos el ejemplo a su valor anterior tras realizar la prueba para mantener a integridad de los datos en la BD). Probaremos a editar el ejemplo “he needs a car to get to work” por “he needs a fast car to get to work”.
Figura 4.19: Ejemplo editado en WEI
40
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Podemos ver como el ejemplo ha sido editado correctamente en la base de datos. También hemos podido comprobar durante el proceso que el sistema de bloqueo de edición implementado en la interfaz se mantiene inalterado, y que se puede seguir bloqueando el synset para impedir su edición.
Vamos a terminar con una serie de pruebas para el testeo de la edición del ILI, ya que es la parte del proyecto con más carga de implementación y por lo tanto la que más problemas puede presentar.
Comenzaremos por comprobar el sistema de control para evitar que todas las etiquetas de una misma ontología sean eliminadas. Para ello volveremos a recurrir a la palabra car, y en concreto al Ili del synset de car_1, esto es: 02383458n. Procedemos a buscar 'car' y pulsaremos el botón sobre la información del ILI del resultado correspondiente al variant car_1. Lo primero que debemos comprobar es que se muestra una lista desplegable por cada etiqueta y que hay una lista adicional para añadir nuevas etiquetas a las ontologías TCO (Top Concept Ontology) y WND (WordNet Domains). Para SUMO y BLC no queremos que se pueda añadir más de una etiqueta con lo cual esta opción no estará disponible.
Figura 4.20: Formulario para la edición del ILI en WEI
Podemos ver que efectivamente, sólo las ontologías WNDomains y TCO ofrecen la oportunidad de añadir nuevas etiquetas al ILI del synset. También podemos comprobar que aparece una lista por cada etiqueta asignala al ILI del synset, separadas por ontologías. Para comprobar que el sistema de control que evita que se eliminen todas las etiquetas de una ontología funciona, pondremos en' (none)' (opción para eliminar la etiqueta) todas las etiquetas de una ontología (por ejemplo TCO) y estudiaremos el resultado.
41
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 4.21: Comprobación del funcionamiento de la edición del ILI en WEI
Pulsando el botón 'Update' veremos el resultado que produce la interfaz
Figura 4.22: Mensaje de advertencia del WEI
Podemos comprobar que la aplicación detecta el problema y avisa al usuario de que no puede realizar esa operación. No se producen cambios en la base de datos.
A continuación probaremos que la edición de la BD se produce correctamente. Para ello, eliminaremos las dos etiquetas WNDomains de el synset anterior, y añadiremos una nueva etiqueta de la misma ontología, por ejemplo, 'accoustics'. De esta forma, comprobaremos que tanto la inserción (acción que efectúa primero al aplicación) como el borrado se producen de forma correcta. Al mismo tiempo comprobaremos mas en profundidad el control de borrado de todas las
42
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
etiquetas, dado que a pesar de estar borrando todas las etiquetas de WNDomains estamos añadiendo una nueva en la misma ontología con lo cual se nos debe permitir la operación.
Figura 4.23: Mensaje de confirmación de edición del ILI
La operación ha sido permitida. Para comprobar que la Base de Datos ha sido editada correctamente, buscaremos el término 'car' y comprobaremos que en la información del ILI, ya no aparecen las etiquetas 'tourism' y 'transport' y que en cambio aparece la etiqueta 'accoustics'.
Figura 4.24: Comprobación de la edición del ILI en la BD
Podemos comprobar que los datos han sido editados correctamente y que solo aparece 'accoustics' como etiqueta WND.
43
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
5. GESTIÓN
Tras la finalización del proyecto, se procede a comprobar la desviación entre el esfuerzo real invertido en la realización del proyecto frente al esfuerzo que se había planificado al comienzo de éste.
Figura 5.1: Comparación horas planificadas/reales.
A continuación, se presenta un pequeño desglose del esfuerzo de acuerdo a procesos tácticos, operativos y formativos. Para ello veremos primero el desglose previsto y invertido en éstos procesos
44
Análisis del entornoRealización del DOP
FormaciónBúsqueda de información
Captura requisitosAnálisis
0
10
20
30
40
50
60
70
80
90
Horas planificadasHoras reales
Diseño Implementación Pruebas Memoria Preparar material Total
0
50
100
150
200
250
300
350
400
450
Horas planificadasHoras reales
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 5.2: Desglose en procesos planificado (izquierda) vs real (derecha)
Podemos observar que la carga de cada tipo de proceso se mantiene prácticamente inalterada porcentualmente hablando. Quizás el tipo de procesos que mas carga ganan sean los formativos, al tener que haber aumentado la planificación inicial debido al uso de nuevo software y aplicaciones.
Ahora veremos más en profundidad la diferencia en cada proceso, separados según sus tipos (tácticos, operativos y formativos).
5.1 Procesos tácticos
Figura 5.3: Procesos tácticos planificados (izquierda) vs procesos tácticos reales
Podemos observar que en lo que se refiere a los procesos tácticos ha aumentado la carga del análisis del entorno (planificación, búsqueda y estudio de antecedentes...) frente a la realización del DOP, que sufrió un menor aumento en el esfuerzo real frente al previsto.
45
Procesos tácticos
Procesos operativos
Procesos formativos
Procesos tácticos
Procesos operativos
Procesos formativos
Análisis del entorno
Realización del DOP
Análisis del entorno
Realización del DOP
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
5.2 Procesos operativos
En cuanto a los procesos operativos, podemos ver la diferencia entre el esfuerzo planificado y el real en la siguiente figura:
Figura 5.4: Procesos operativos planificados (izquierda) vs reales (derecha)
Vemos que la mayor diferencia en la estimación de horas se ha producido tanto en el apartado de implementación, como en el capítulo de pruebas. La realización de la memoria, a pesar de haber aumentado el esfuerzo real frente al planificado, porcentualmente ha perdido peso dentro de la carga de los procesos operativos.
El motivo de que la implementación sea la que mas desviación ha sufrido entre planificación/real es probablemente que, a pesar de el esfuerzo formativo invertido en el estudio de las aplicaciones desconocidas y en el nuevo (para el alumno) lenguaje de programación PERL, surgen muchos imprevistos debido a la falta de costumbre del alumno con estos lenguajes y aplicaciones, generando un mayor esfuerzo y habiendo de invertir un numero de horas bastante superior al planificado.
5.3 Procesos formativos
Por último analizaremos los resultados relacionados con los procesos formativos, resultados que pueden verse en la siguiente figura:
46
Captura requisitos
Análisis
Diseño
Implementación
Pruebas
Memoria
Preparar material
Captura requisitos
Análisis
Diseño
Implementación
Pruebas
Memoria
Preparar material
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Figura 5.5: Procesos formativos planificados (izquierda) vs reales (derecha)
En este caso, la mayor desviación respecto a la planificación realizada es en el campo de la formación en nuevas tecnologías. Éste hecho esta originado por el hecho de que el alumno ha debido formarse mínimamente en un gran número de aplicaciones y lenguajes que desconocía o apenas conocía (Linux, Perl, PHP, MySQL, Apache...). Además también se ha tenido que aumentar el esfuerzo debido al uso de herramientas de código abierto (open source) gratuitas para la realización de algunas tareas, como desarrollo de diagramas, gráficos, edición de la memoria...), en las cuales el usuario ha tenido que formarse también para realizar un uso aceptable de ellas.
47
Formación
Búsqueda de información
Formación
Búsqueda de información
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
6. CONCLUSIONES
La realización de este proyecto, ha resultado ser un notable reto a superar, especialmente debido a inconvenientes surgidos por aspectos como la necesidad de gestionar la mayor parte de el por vías de comunicación a distancia, o por problemas con las transferencias de archivos entre alumno y director del proyecto.
No obstante, ha sido una gran experiencia ya que me ha permitido familiarizarme con un sistema operativo como Linux que, sin la motivación de este proyecto, posiblemente seguiría siendo un sistema operativo bastante desconocido para mí. Gracias a la realización del proyecto he conseguido descubrir y probar distintas funciones de Linux que eran desconocidas para mí, así como mejorar mi manejo de Linux como sistema operativo y descubrir métodos alternativos para la realización de tareas habituales bajo él.
También ha permitido descubrir un lenguaje de programación como PERL, que era absolutamente desconocido para mí. Gracias al proyecto he podido comprobar las bondades de este lenguaje de programación, y si bien quizás el nivel conseguido no sea especialmente alto, si se han cubierto varios temas interesantes, como tratamiento de archivos, tratamiento de bases de datos y uso de PERL en aplicaciones web.
Así mismo, el desarrollo del proyecto me ha permitido (dado que era necesario para la realización del mismo) experimentar con el uso de un servidor Apache en mi ordenador personal. El uso de este servidor me ha permitido descubrir, por ejemplo como alojar una aplicación web en este servidor o como solucionar algunos errores relacionados con el por medio de los varios logs que guarda el servidor de las actividades realizadas en el.
Por último, no puedo dejar de mencionar que este proyecto me ha animado a hacer más uso de aplicaciones de código abierto, y descubrir algunas de las más notables alternativas que ofrecen algunas de ellas a otras aplicaciones con licencia que requieren de su compra para su uso a máxima capacidad de una manera legal. El uso de este software libre permite a su vez que éstas aplicaciones se vayan haciendo más conocidas permitiendo que sean mejoradas y supongan cada vez una alternativa mas fiable y consistente.
48
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
7. BIBLIOGRAFÍA
Linux:http://es.wikipedia.org/wiki/GNU/Linuxhttp://ubuntuforums.org/
PERL:http://es.wikipedia.org/wiki/Perlhttp://www.cse.unt.edu/~rada/CSCE5290/Lectures/Perl.Tutorial.ppthttp://www.perl.com/http://perlenespanol.com/foro/
MySQL:http://www.mysql.com/http://es.wikipedia.org/wiki/MySQL
PhPMyAdmin:http://es.wikipedia.org/wiki/PhpMyAdminhttp://www.phpmyadmin.net/home_page/index.php
Apache Server:http://www.apache.org/http://es.wikipedia.org/wiki/Servidor_HTTP_Apache
WordNet:http://en.wikipedia.org/wiki/Wordnethttp://en.wikipedia.org/wiki/Wordnet
EuroWordnet:http://www.illc.uva.nl/EuroWordNet/
Meaninghttp://www.lsi.upc.edu/~nlp/meaning/
MCR:http://www.lsi.upc.es/~nlp/meaning/demo/demo.html
WEI:http://adimen.si.ehu.es/cgibin/wei/public/wei.consult.perlhttp://adimen.si.ehu.es/cgibin/wei/privat/wei.interfazedicion.perl
49
Proyecto de fin de carrera Francisco Javier Santamaría Rafael
Otras aplicaciones usadas:Open project: http://openproj.org/Open Office: http://es.openoffice.org/Dia: http://live.gnome.org/DiaGiMP: http://www.gimp.org/
OtrosMemoria de PFC de María Eguimendia
50