titulación: ingeniería en informática “sistema de...

101
Titulación: Ingeniería en Informática “Sistema de resolución de la ambigüedad semántica basada en el conocimiento” Alumno: D. Álvaro Acebedo Morante Director: D. Germán Rigau Claramunt Proyecto Fin de Carrera, septiembre de 2007

Upload: duongminh

Post on 01-Oct-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Titulación: Ingeniería en Informática

“Sistema de resolución de la ambigüedad semántica basada en el conocimiento”

Alumno: D. Álvaro Acebedo MoranteDirector: D. Germán Rigau Claramunt

Proyecto Fin de Carrera, septiembre de 2007

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

ResumenDocumento OpenOffice.org 2.0.4 para la memoria del proyecto fin de carreraVersión 0.5 de 29/08/2007 por Álvaro Acebedo Morante.Copyright © 2006 Álvaro Acebedo MoranteThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with this program (see Anexo C); if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Contacto:Álvaro Acebedo Morante [[email protected]]Dpto. de Lenguajes y Sistemas de la InformaciónFacultad de InformáticaUniversidad del País Vasco.20018 Donostia-San Sebastián (Gipuzkoa)

DescriptoresMemoria del proyecto fin de carreraOpenOffice.org

AgradecimientosPrimero a la dirección de Germán Rigau, ya que sin su ayuda, la realización de este

proyecto no habría sido nunca posible. Dedico este proyecto a mi familia, a mis amigos y a mi novia; sus ánimos y su comprensión han sido indispensables para finalizar mi carrera. Por último a la comunidad de desarrolladores y usuarios de software libre por su incansable labor a favor de esta fantástica filosofía.

iii

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Historial de revisiones:0.1 de 22/10/2006 por Álvaro Acebedo Morante.0.2 de 05/02/2007 por Álvaro Acebedo Morante.0.3 de 01/08/2007 por Álvaro Acebedo Morante.0.4 de 10/08/2007 por Álvaro Acebedo Morante.0.5 de 29/08/2007 por Álvaro Acebedo Morante.

Archivos:miProyecto.odt (usa tipos de letra libres)

iv

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

ContenidoCapítulo 1. Introducción................................................................................................................11.1 Descripción...............................................................................................................................11.2 Antecedentes.............................................................................................................................1

1.2.1 Red Semántica...............................................................................................................11.2.2 WordNet........................................................................................................................21.2.3 A propósito de WordNet: eXtended WordNet..............................................................41.2.4 A propósito de WordNet: EuroWordNet.......................................................................81.2.5 Meaning & MCR...........................................................................................................81.2.6 Senseval.........................................................................................................................81.2.7 Algoritmo SSI................................................................................................................9

Capítulo 2. Documento de Objetivos del Proyecto...................................................................102.1 Objetivos.................................................................................................................................10

2.1.1 Objetivos primarios.....................................................................................................102.1.2 Objetivos secundarios..................................................................................................10

2.2 Alcance...................................................................................................................................112.2.1 Estructura de Descomposición del Proyecto...............................................................112.2.2 Recursos asignados......................................................................................................11

2.3 Planificación Temporal...........................................................................................................122.4 Plan de Riesgos.......................................................................................................................18

2.4.1 Identificación de Riesgos............................................................................................182.4.2 Cuantificación de los riesgos y política organizativa..................................................18

2.5 Plan de Comunicaciones.........................................................................................................202.5.1 Objetivos Base del Plan de Comunicaciones..............................................................202.5.2 Plan de Trabajo............................................................................................................202.5.3 Datos de Contacto.......................................................................................................20

Capítulo 3. Administración y Diseño del S.I.............................................................................213.1 Captura de Requisitos.............................................................................................................21

3.1.1 Casos de Uso...............................................................................................................213.1.2 Modelo de Dominio.....................................................................................................22

3.2 Análisis...................................................................................................................................243.2.1 Pseudocódigo...............................................................................................................24

3.3 Descripción de la Arquitectura...............................................................................................253.3.1 Nivel de Presentación..................................................................................................263.3.2 Nivel de Lógica de Negocio........................................................................................263.3.3 Nivel de Datos.............................................................................................................26

3.4 Selección de Herramientas......................................................................................................273.4.1 Ubuntu.........................................................................................................................273.4.2 APT & Synaptic..........................................................................................................273.4.3 Anjuta..........................................................................................................................283.4.4 Dia...............................................................................................................................28

v

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

3.4.5 Planner.........................................................................................................................283.4.6 OpenOffice..................................................................................................................293.4.7 Evince..........................................................................................................................293.4.8 Tomboy........................................................................................................................303.4.9 Firefox.........................................................................................................................303.4.10 MySQL........................................................................................................................303.4.11 PhpMyAdmin..............................................................................................................313.4.12 BoostGraph..................................................................................................................313.4.13 MCRQuery..................................................................................................................31

3.5 Diseño.....................................................................................................................................323.5.1 Versiones desarrolladas...............................................................................................323.5.2 Diagramas de Secuencia..............................................................................................343.5.3 Consultas a la Base de Datos.......................................................................................39

3.6 Implementación.......................................................................................................................403.6.1 Procedimientos Almacenados.....................................................................................403.6.2 DBI..............................................................................................................................433.6.3 Boost::Graph................................................................................................................443.6.4 GraphViz.....................................................................................................................45

Capítulo 4. Pruebas......................................................................................................................474.1 Pruebas Iniciales.....................................................................................................................474.2 Senseval..................................................................................................................................52Capítulo 5. Gestión.......................................................................................................................595.1 Esfuerzo Planificado vs. Esfuerzo Real..................................................................................595.2 Retrasos e imprevistos............................................................................................................615.3 Balance de éxito......................................................................................................................61Capítulo 6. Conclusiones..............................................................................................................63Bibliografía....................................................................................................................................65Anexo A. Instalación de MySQL & PhpMyAdmin..................................................................67A.1 Datos de acceso.......................................................................................................................67A.2 Instalación...............................................................................................................................67Anexo B. Creando el Grafo WN2.0+XWN2.0 para Boost::Graph........................................70B.1 Paso Uno: Las relaciones de WordNet 2.0.............................................................................70B.2 Paso Dos: Las relaciones de Extended WordNet 2.0..............................................................72B.3 Paso Tres: Uniendo WN2.0 y XWN2.0..................................................................................77Anexo C. Recursos del Proyecto.................................................................................................78C.1 Tabla de asignación de Recursos enfocado al EDT................................................................81Anexo D. GNU GENERAL PUBLIC LICENSE......................................................................83

vi

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Lista de figurasFigura 1.1: Un ejemplo de red semántica (fuente:Wikipedia)..........................................................2Figura 1.2: Ejemplo de relaciones en WordNet 2.0. 'Mammal' y sus hiperónimos..........................3Figura 1.3: Relaciones en WN2.0 entre human#1 y mammal#1 a distancia 2.................................7Figura 1.4: Relaciones en WN2.0 entre bear#1 y mammal#1 a distancia 2.....................................7Figura 1.5: Relaciones en WN2.0 entre fish#1 y mammal#1 a distancia 2......................................7Figura 2.1: EDT...............................................................................................................................11Figura 2.2: Planificación. [15 de Noviembre – 6 de Diciembre]....................................................12Figura 2.3: Planificación. [7 de Diciembre – 22 de Enero]............................................................13Figura 2.4: Planificación. [12 de Febrero – 10 de Marzo]..............................................................14Figura 2.5: Planificación. [12 de Marzo – 27 de Abril]..................................................................15Figura 2.6: Planificación. [18 de Mayo – 13 de Junio]...................................................................16Figura 2.7: Planificación. [15 de Junio – 3 de Septiembre]............................................................17Figura 3.1: Caso de Uso - Obtener WSD mediante SSI.................................................................21Figura 3.2: Grafo dirigido entre sentidos de 'cathedral' y 'church' a distancia 3.............................22Figura 3.3: Modelo del Dominio.....................................................................................................23Figura 3.4: Fase de Análisis............................................................................................................24Figura 3.5: Esquema de arquitectura en dos niveles.......................................................................26Figura 3.6: Diagrama de Secuencia: SSI v.3...................................................................................35Figura 3.7: Diagrama de Secuencia: SSI v.4...................................................................................36Figura 3.8: Diagrama de Secuencia: SSI v.4b.................................................................................37Figura 3.9: Diagrama de Secuencia: SSI v.5...................................................................................38Figura 3.10: Ejemplo word2synsets................................................................................................39Figura 3.11: Ejemplo word2synsets_s............................................................................................40Figura 5.1: Distribución del Trabajo Planificado............................................................................59Figura 5.2: Distribución Real del Trabajo Realizado......................................................................60Figura 5.3: Comparativa Trabajo Real vs. Trabajo Planificado......................................................60

vii

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Lista de tablasTabla 1.1: Número de synsets para distintas versiones de WordNet (actualizado a partir de [Castillo, 2004])................................................................................................................................3Tabla 1.2: Polisemia en WordNet 3.0...............................................................................................4Tabla 1.3: Polisemia media en WordNet 3.0....................................................................................4Tabla 1.4: Palabras desambiguadas por cada categoría presentes en XWN2.0................................5Tabla 1.5: Ejemplo de glosa parseada, LFT y desambiguada en XWN2.0......................................6Tabla 2.1: Cuadro de Riesgos.........................................................................................................19Tabla 2.2: Cuadro de Comunicaciones...........................................................................................20Tabla 4.1: Comparativa de tiempos en las Pruebas Iniciales..........................................................52Tabla 4.2: Pruebas Senseval-3: SSI v.5 a distancia 3.....................................................................54Tabla 4.3: Pruebas Senseval-3: SSI v.4b a distancia 2...................................................................55Tabla 4.4: Pruebas Senseval-3: SSI v.5 a distancia 3 con relaciones 'gloss'...................................56Tabla 4.5: Pruebas Senseval-3: SSI v.4b a distancia 2 con relaciones 'gloss'.................................57Tabla 4.6: Comparativa de los resultados de Senseval-3 y el SSI v.4b..........................................57Tabla 6.1: Asignación de los recursos.............................................................................................81

viii

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Capítulo 1. Introducción

1.1 DescripciónEste proyecto se enmarca en el área de conocimiento de la Inteligencia Artificial y en

concreto en el Procesamiento del Lenguaje Natural.La desambiguación del sentido de las palabras (Word Sense Disambiguation, en inglés)

es el problema de decidir el sentido apropiado de una palabra dependiendo de su contexto. El perfeccionamiento en la identificación del sentido correcto de una palabra puede mejorar el comportamiento de sistemas de traducción automática, sistemas de recuperación de información o incluso utilizarse en tareas más específicas como la restauración de acentos de palabras en el procesamiento de textos. En este trabajo presentaremos nuevos métodos de desambiguación basados en el conocimiento, que tratan de mejorar los algoritmos de interconexión semántica estructural (SSI, siglas en inglés) propuestos por [Navigli & Velardi 2004].

1.2 AntecedentesEste capítulo introduce al lector en la terminología básica necesaria para comprender el

marco científico y tecnológico en el que se inscribe el proyecto.

1.2.1 Red SemánticaUna red semántica es una forma de representación del conocimiento. Consiste en un

grafo dirigido en el que los nodos de dicho grafo representan conceptos o unidades léxicas y los enlaces entre los nodos representan relaciones semánticas entre dichos conceptos. Eventualmente, una red semántica tomará la forma de un árbol, estableciéndose una jerarquía conceptual. En el terreno de las relaciones semánticas entre conceptos nos podemos encontrar sinonimias/antonimias (relación entre sinónimos y antónimos), hiperonimias/hiponimias (relación entre superordinados y subordinados) o meronimias/holonimias (relación entre subconjuntos y conjuntos globales) entre otras. En las redes semánticas, un concepto importante es la distancia semántica que se expresa en relación al número y tipo de enlaces que separan un nodo de otro. Wordnet representa uno de los ejemplos más emblemáticos del modelo de redes semánticas.

1

1. Introducción Proyecto Fin de Carrera

En la Figura 1.1 se muestra un ejemplo de red semántica que representa cierto conocimiento sobre los mamíferos. En ella podemos identificar elementos característicos de la red como nodo (Animal, Fish, Water...), relación (lives in, is a, has...) o distancia entre los nodos.

1.2.2 WordNetWordNet1 [Miller et al., 1993], es una base de datos léxica cuyo diseño está inspirado por

teorías psicolingüísticas acerca de la memoria léxica humana. En 1985 un grupo de psicolingüístas y lingüístas de la Universidad de Princeton comenzaron a desarrollar una base de datos léxica siguiendo unas, por entonces, recientes ideas aparecidas sobre el proceso mental del lenguaje. La idea inicial era la de crear un recurso para facilitar la búsqueda de términos en diccionarios, permitiendo el acceso conceptual hacia el término deseado y no meramente alfabético.

WorNet divide el léxico en cuatro categorías: nombres, verbos, adjetivos y adverbios. También agrupa las palabras en conjuntos de sinónimos (synsets) de forma que un término puede ser intercambiado en un cierto contexto por cualquiera de sus sinónimos sin que por ello cambie el significado. En WordNet, los synsets están codificados con un número de 8 cifras llamado offset unido una letra que depende de si es nombre, verbo, adjetivo o adverbio. La mayoría de los synsets están conectados a otros synsets por medio de cierto número de relaciones semánticas (véase 1.2.1). Además, para cada término WordNet ofrece un apartado denominado 'glosa', en el que se recoge una definición o un ejemplo de oración que contiene precisamente el término mencionado.

En la Figura 1.2 se puede ver un ejemplo de relación de hiperónimo (... es un tipo de ...) para el término 'mammal' en la versión 2.0 de WordNet. Asociado a cada término se encuentra su

1 http://wordnet.princeton.edu/

2

Figura 1.1: Un ejemplo de red semántica (fuente:Wikipedia)

1.2. Antecedentes Proyecto Fin de Carrera

synset, expresado como una secuencia de 8 dígitos seguido de una cualidad sintáctica (por ejemplo, noun.animal)

Actualmente, WordNet va por la versión 3.0. En la Tabla 1.1 se muestra una evolución del número de synsets recogidos en WordNet desde la versión 1.5 y se aprecia cómo ha ido incrementando el número de synsets de una versión a la siguiente.Que una palabra sea polisémica, significa que el conjunto de sus posibles sentidos es mayor que uno. En la labor de desambiguación semántica por lo tanto, el problema de asignar un sentido a una palabra monosémica es trivial. En la Tabla 1.2 se muestra información sobre el volumen de palabras monosémicas y polisémicas recogidas en la versión 3.0 de WordNet.

3

WordNet version              

PoS 1.5 1.6 1.7 1.7.1 2.0 3.0

Nombre 60557 66025 74488 75804 79689 81426

Verbo 11363 12127 12754 13214 13508 13650

Adjetivo 13231 17915 18523 21460 18563 18877

Adverbio 3243 3575 3612 3629 3664 3644

Total 88394 99642 109377 114107 115424 117597

Tabla 1.1: Número de synsets para distintas versiones de WordNet (actualizado a partir de [Castillo, 2004]).

Figura 1.2: Ejemplo de relaciones en WordNet 2.0. 'Mammal' y sus hiperónimos.

1. Introducción Proyecto Fin de Carrera

Observamos en la Tabla 1.3 que si no tenemos en cuenta las palabras monosémicas, el número medio de sentidos distintos para cada palabra en WordNet 3.0 se aproxima a 2,7 (excepto en el caso de los verbos, que sobrepasa los 3,5). Ésto que nos da una primera aunque algo remota aproximación al trabajo que tendrán que realizar nuestros algoritmos WSD.

4

PoS Sentidos y Palabras Monosémicas Palabras Polisémicas Sentidos 

Polisémicos

Noun 101321 15776 43783

Verb 6261 5227 18629

Adjective 16889 5252 14413

Adverb 3850 751 1870

Totals 128321 27006 78695

Tabla 1.2: Polisemia en WordNet 3.0

PoS Polisemia media incluyendo palabras monosémicas

Polisemia media sin incluir palabras monosémicas

Nombre 1,23 2,77

Verbo 2,16 3,56

Adjetivo 1,41 2,74

Adverbio 1,24 2,49

Tabla 1.3: Polisemia media en WordNet 3.0

1.2. Antecedentes Proyecto Fin de Carrera

En la Figura 1.3 el sentido 1 de humano esta representado por el nodo '02383992-n' y el sentido (único) de mamífero es '01780968-n'.

En la Figura 1.4 el sentido 1 de oso esta representado por el nodo '02047492-n' y el sentido (único) de mamífero es '01780968-n'.

En la Figura 1.5 el sentido 1 de pescado esta representado por el nodo '02422955-n'.Como puede observarse en las figuras superiores, existen más relaciones a una cierta distancia entre humano-mamífero u oso-mamífero que entre pescado-mamífero, lo cual resulta bastante intuitivo para un ser humano.

5

Figura 1.3: Relaciones en WN2.0 entre human#1 y mammal#1 a distancia 2

Figura 1.4: Relaciones en WN2.0 entre bear#1 y mammal#1 a distancia 2

Figura 1.5: Relaciones en WN2.0 entre fish#1 y mammal#1 a distancia 2

1. Introducción Proyecto Fin de Carrera

1.2.3 A propósito de WordNet: eXtended WordNetWordNet ha sido diseñada como una base de datos léxica. Por ello muestra ciertas

limitaciones cuando se aplica a sistemas de procesado del conocimiento. Para ampliar la funcionalidad de WordNet en este aspecto, se crea eXtended WordNet2 (XWN). La idea principal de XWN es explotar la riqueza de la información contenida en la definición de las glosas [Castillo, 2004].En la Tabla 1.4 se muestra la cantidad de palabras desambiguadas por cada categoría (PoS) para la versión 2.0 de WordNet, especificando la cantidad de palabras gold, silver y normal. Esta clasificación depende de si las palabras han sido etiquetadas a mano (gold), si tras etiquetarlas a máquina por dos sistemas de desambiguación distintos han dado el mismo resultado (silver) o sencillamente dependiendo del etiquetado que le haya dado el sistema de desambiguación XWN_WSD, perteneciente al equipo de desarrollo del mismo eXtended Wordnet. Se observa que el número de palabras etiquetadas como gold son muy inferiores en cualquier caso al número de palabras etiquetas como normal.

En la Tabla 1.5 se muestra un ejemplo de glosa tratada en XWN2.0. El formato de almacenamiento de la información está especificado en XML. Primero se muestra el synset que se va a tratar y a continuación el resultado del análisis de su glosa etiquetado como 'normal'. En segundo lugar, la especificación de su forma lógica, que es un paso intermedio entre el parser y la forma semántica. Por último, el resultado de la desambiguación, etiquetado también como 'normal' para la glosa en general y gold, silver o normal para cada palabra individualmente.

2 http://xwn.hlt.utdallas.edu/

6

PoSSynset

Total Synsets

Total Monosem.

Total Palabras

Palabras Gold

Palabras Silver

Palabras Normal

Nombre 79689 505946 138274 10142 45015 296045

Verbo 13508 48200 6903 2212 5193 30813

Adjetivo 18563 74108 14142 263 6599 50359

Adverbio 3664 8998 1605 1829 385 4920Tabla 1.4: Palabras desambiguadas por cada categoría presentes en XWN2.0

[Castillo, 2004]

1.2. Antecedentes Proyecto Fin de Carrera

7

Synset: mammal

Parse quality: Normal

(TOP (S (NP (NN mammal) ) 

        (VP (VBZ is) 

            (NP (NP (JJ young) (NN are) ) 

                (VP (VP (VBN born) 

                        (ADVP (RB alive) ) 

                        (PP (IN except) 

                            (PP (IN for) 

                                (NP (NP (DT the) (JJ small) (NN subclass) ) 

                                    (PP (IN of) 

                                        (NP (NNS monotremes) ) ) ) ) ) ) 

                    (CC and) 

                    (VP (VBN nourished) 

                        (PP (IN with) 

                            (NP (NN milk) ) ) ) ) ) ) 

        (. .) ) ) 

<lft quality="NORMAL">

mammal:NN(x1) ­> any:JJ(x2) warm­blooded:JJ(x2) vertebrate:NN(x2) skin:NN(x1) more_or_less:NN(x3) cover:VB(e1, x5, x1) with:IN(e1, x4) hair:NN(x4)

</lft>

<wsd quality=”NORMAL”>

      <wf pos="DT" >any</wf>

      <wf pos="JJ" lemma="warm­blooded" >warm­blooded</wf>

      <wf pos="JJ" lemma="vertebrate" quality="silver" wnsn="1" >vertebrate</wf>

      <wf pos="VBG" lemma="have" quality="normal" wnsn="1" >having</wf>

      <wf pos="DT" >the</wf>

      <wf pos="NN" lemma="skin" quality="normal" wnsn="1" >skin</wf>

      <wf pos="RB" lemma="more_or_less" quality="normal" wnsn="1" >more_or_less</wf>

      <wf pos="VBN" lemma="cover" quality="normal" wnsn="1" >covered</wf>

      <wf pos="IN" >with</wf>

      <wf pos="NN" lemma="hair" quality="normal" wnsn="1" >hair</wf>

      <punc>;</punc>

      <wf pos="JJ" lemma="young" quality="normal" wnsn="1" >young</wf>

      <wf pos="NN" lemma="are" quality="normal" wnsn="1" >are</wf>

      <wf pos="VBN" lemma="bear" quality="normal" wnsn="2" >born</wf>

      <wf pos="JJ" lemma="alive" >alive</wf>

      <wf pos="IN" >except</wf>

      <wf pos="IN" >for</wf>

      <wf pos="DT" >the</wf>

      <wf pos="JJ" lemma="small" quality="normal" wnsn="1" >small</wf>

      <wf pos="NN" lemma="subclass" quality="silver" wnsn="1" >subclass</wf>

      <wf pos="IN" >of</wf>

      <wf pos="NNS" lemma="monotreme" quality="silver" wnsn="1" >monotremes</wf>

      <wf pos="CC" >and</wf>

      <wf pos="VBN" lemma="nourish" quality="normal" wnsn="1" >nourished</wf>

      <wf pos="IN" >with</wf>

      <wf pos="NN" lemma="milk" quality="normal" wnsn="2" >milk</wf>

</wsd>

Tabla 1.5: Ejemplo de glosa parseada, LFT y desambiguada en XWN2.0

1. Introducción Proyecto Fin de Carrera

1.2.4 A propósito de WordNet: EuroWordNetDebido al éxito de WorNet, las ideas sobre el desarrollo de redes semánticas para

diferentes idiomas fueron tomando fuerza. EuroWordNet3 [Vossen, 1998] fue el proyecto más destacado. Esta base de datos recopila información sobre siete idiomas europeos (holandés, italiano, español, alemán, francés, checo y estonio). Cada uno de estos lenguajes están estructurados de la misma manera que el WordNet inglés, en lo que se refiere a synsets y a los tipos de relaciones que se establecen entre ellos. Además, los idiomas están interrelacionados entre sí por medio de relaciones semánticas entre conceptos (registros ILI ó InterLingue Index), lo que permite saltar entre palabras similares de un idioma a otro.A diferencia del WordNet de Princeton, algunos idiomas de EuroWordNet no están disponibles de manera gratuita.

1.2.5 Meaning & MCREl proyecto Meaning4 [Rigau et al., 2002] fue creado con objeto de recopilar

automáticamente y analizar datos relativos al lenguaje a gran escala de Internet, y de este modo construir bases de conocimiento más ricas y así facilitar la desambiguación semántica (WSD). En la búsqueda de este objetivo, el proyecto Meaning desarrolló el Repositorio Central Multilingüe (MCR, siglas en inglés) que es una base de conocimiento que integra de forma consistente diferentes versiones de WordNet. Gracias a ésto, el conocimiento semántico adquirido para un idioma particular se puede exportar de forma consistente al resto de WordNets. Tal y como indica [Chugur, 2007], la versión final del Repositorio Central Multilingüe está integrada por WordNets para cinco idiomas diferentes (inglés, italiano, español, euskera y catalán) y contiene 1.642.389 relaciones semánticas únicas entre conceptos (registros ILI). El MCR está enriquecido también con 466.972 propiedades semánticas extraídas de otras fuentes, como SUMO5.

1.2.6 SensevalSenseval6 es una competición internacional para evaluar sistemas de desambiguación

semántica automática. Actualmente hay muchos programas para determinar automáticamente el sentido de una palabra en un contexto; el propósito de Senseval es evaluar la potencia y la debilidad de tales programas con respecto a diferentes idiomas. El primer Senseval, denominado Senseval-1, se realizó en el verano de 1998 para inglés, francés e italiano. El segundo Senseval, denominado Senseval-2, se realizó en Julio de 2001 sobre 12 lenguajes: checo, holandés, inglés, estonio, euskera, chino, danés, italiano, japonés, coreano, español y suizo. La tercera edición de Senseval se realizó en Marzo-Abril de 2004, seguido por un taller celebrado en Julio de 2004. En esta edición se diseñaron nuevos programas para la evaluación de sistemas de desambiguación semántica y se probaron para las glosas de WordNet. Por último, la cuarta edición de Senseval, llamada también Semeval, se ha celebrado los días 23 y 24 de Junio del presente año 2007. En el contexto de este proyecto, usaremos el conjunto de pruebas de Senseval-03 como soporte para evaluar nuestros algoritmos (véase cap.4).

3 http://www.illc.uva.nl/EuroWordNet/ 4 http://www.lsi.upc.es/~nlp/meaning/ 5 http://suo.ieee.org/SUO/SUMO/index.html 6 http://www.senseval.org/

8

1.2. Antecedentes Proyecto Fin de Carrera

1.2.7 Algoritmo SSIEl algoritmo SSI es una aproximación iterativa a la WSD. Consiste en una fase de

inicialización y una fase iterativa. En cada ciclo de iteración, al menos uno de los términos de la lista de pendientes es desambiguado. La ejecución cesa cuando ya no hay términos por desambiguar o porque los términos que quedan no pueden ser desambiguados.El algoritmo SSI funciona de la siguiente manera:

● Primero detecta las palabras monosémicas e incluye automáticamente en la solución sus correspondientes sentidos.

● A continuación, para cada palabra polisémica se analiza el grado de asociatividad de cada uno de sus sentidos con los sentidos que ya pertenecen al conjunto solución.

● El sentido mejor calificado se añade a la solución como representante de esa palabra.

Ejemplo:A continuación se presenta un conjunto de términos a los que se les ha anexado su

categoría sintáctica (nombre 'n', verbo 'v', adjetivo 'a', adverbio 'r').

– Inicialización:Términos Pendientes: {"flight#n#1"7, "scheduled#a", "trip#n", "plane#n", "designated#a",

"airport#n"}Lista de sentidos Solución: {}

– Paso previo (las monosémicas son un caso trivial; se añade su único sentido a la Solución):Términos Pendientes: {"trip#n", "plane#n"}Lista de sentidos Solución: {flight#1, scheduled#1, designated#1, airport#1}

– Fase iterativa:Para “trip” como nombre existen 7 sentidos en nuestra base de conocimiento. Sin

embargo, el sentido 1 es el que con más peso (posteriormente explicaremos este concepto) se relaciona con los sentidos que pertenecen a la lista de Soluciones, por lo tanto, este sentido pasa a ser representante del término en la 'lista de sentidos Solución'.

Términos Pendientes: {"plane"}Lista de sentidos Solución: {flight#1, scheduled#1, designated#1, airport#1, trip#n}

– Fase iterativa (2):Para “plane” como nombre existen 5sentidos en nuestra base de conocimiento. Sin

embargo, el sentido 2 es el que con más peso se relaciona con los sentidos que pertenecen a la lista de Soluciones, por lo tanto, este sentido pasa a ser representante del término en la 'lista de sentidos Solución'.

Términos Pendientes: {}Lista de sentidos Solución: {flight#1, scheduled#1, designated#1, airport#1, trip#1,

plane#2– Finalización: No quedan más términos por desambiguar.

7 En este caso, añadimos explícitamente el sentido concreto que queremos darle a un término polisémico y de este modo actúa como si fuera polisémico.

9

2. Documento de Objetivos del Proyecto Proyecto Fin de Carrera

Capítulo 2. Documento de

Objetivos del Proyecto

Este capítulo expone el plan de objetivos del proyecto, su alcance, estimación de recursos necesarios, método de trabajo, la previsión de riesgos y en definitiva, la política de actuación que predominará durante el paso por las distintas fases del trabajo. Este documento parte de las ideas desarrolladas en el capítulo anterior, y va a seguir a lo largo de todo el proyecto.

2.1 ObjetivosEl plan de objetivos está dividido en dos grandes bloques según su prioridad.

2.1.1 Objetivos primarios● Idear, diseñar, implementar y evaluar algoritmos de desambiguación automática (WSD)

basándonos en el algoritmo SSI de [Navigli & Velardi 2004]. Utilizar para este fin la información contenida en la base de datos MCR del proyecto Meaning y el módulo de acceso a ésta, MCRQuery desarrollado también por Meaning en lenguaje Perl.

2.1.2 Objetivos secundarios● Añadir funcionalidad al MCRQuery si las necesidades de nuestros algoritmos así lo

requiriesen.● Optimizar el acceso a las bases de datos programando procedimientos almacenados de

los que luego hará uso nuestra colección de algoritmos.● Desarrollar una funcionalidad adicional para nuestros algoritmos, que nos permita

obtener de forma visual el grafo obtenido en el proceso de desambiguación.

10

2.2. Alcance Proyecto Fin de Carrera

2.2 Alcance

2.2.1 Estructura de Descomposición del Proyecto

La Figura 2.1 representa la estructura de descomposición del proyecto, que agrupa los elementos del proyecto orientado a las entregas. Utilizamos este esquema para desarrollar o confirmar el alcance del proyecto. El elemento 'planificación' incluye descomponer el hito en tareas para incorporarlas al sistema de gestión del proyecto (véase 3.4.5) y así tener un control más estrecho sobre su duración o el uso de los recursos que precisa.

2.2.2 Recursos asignadosLos recursos utilizados están divididos en tres categorías según su naturaleza. En la

primera categoría, 'Recursos Personales' incluyo los recursos que voy a utilizar y que me pertenecían antes de comenzar el proyecto. En la segunda categoría, 'Recursos EHU' incluyo el material que me ha proporcionado mi director de proyecto para llevar a cabo el trabajo. En la última categoría, 'Información accesible a través de Internet (e-links)' incluyo los enlaces a la web que he recopilado para que me sirvan de soporte en la realización del trabajo, independientemente de si me los ha proporcionado mi director de proyecto o si bien, los he encontrado yo por mi cuenta. Para cada recurso existe una 'descripción' que me sirve para identificarlos de forma concreta (ver Anexo C).

11

Figura 2.1: EDT

2. Documento de Objetivos del Proyecto Proyecto Fin de Carrera

2.3 Planificación TemporalInicio de Proyecto: 15 de noviembre de 2006Finalización de Proyecto: 1 de septiembre de 2007

12

Figura 2.2: Planificación. [15 de Noviembre – 6 de Diciembre]

2.3. Planificación Temporal Proyecto Fin de Carrera

Jornada Laboral: Lunes a Viernes, 8:00-14:00 y 16:00-21:00Jornada de Descanso: Sábados y Domingos

13

Figura 2.3: Planificación. [7 de Diciembre – 22 de Enero]

2. Documento de Objetivos del Proyecto Proyecto Fin de Carrera

14

Figura 2.4: Planificación. [12 de Febrero – 10 de Marzo]

2.3. Planificación Temporal Proyecto Fin de Carrera

15

Figura 2.5: Planificación. [12 de Marzo – 27 de Abril]

2. Documento de Objetivos del Proyecto Proyecto Fin de Carrera

16

Figura 2.6: Planificación. [18 de Mayo – 13 de Junio]

2.3. Planificación Temporal Proyecto Fin de Carrera

17

Figura 2.7: Planificación. [15 de Junio – 3 de Septiembre]

2. Documento de Objetivos del Proyecto Proyecto Fin de Carrera

2.4 Plan de Riesgos

2.4.1 Identificación de Riesgos1. Incompatibilidad de horarios entre alumno y director.2. Dedicación no exclusiva al trabajo derivado del proyecto.3. Baja por enfermedad de alguno de los miembros del equipo.4. Aprendizaje y síntesis de la materia.5. Subestimación del tamaño del problema.6. Reorientación de requisitos.7. Bajo rendimiento en alguna función del sistema.8. Imposibilidad de reuniones presenciales durante el período vacacional.9. Fallo o avería de las computadoras que corren el sistema del proyecto.

2.4.2 Cuantificación de los riesgos y política organizativaLa cuantificación de riesgos implica evaluar los riesgos y las interacciones entre riesgos

para determinar el rango de los posibles resultados del proyecto. Esta cuantificación de riesgos está dirigida principalmente a los sucesos con riesgo que hacen necesaria una respuesta. Dichos riesgos han sido ya identificados en el apartado anterior, y en la Tabla 2.1 se detalla el Plan de Dirección de Riesgos.

18

2.4. Plan de Riesgos Proyecto Fin de Carrera

19

Index Riesgo Probabilidad Efecto Prevención Minimización Contingencia

IIncompatibilidad de 

horarios entre alumno y director

Moderada TolerableAmpliar horario 

de disponibilidad

Trataremos   de resolver   dudas menores por medio de email ó teléfono

Se crea un registro para   recoger   un sumario de dudas y mientras se trabaja en tareas paralelas

IIDedicación no 

exclusiva al trabajo derivado del 

proyecto

Muy alta Tolerable

Asignación juiciosa de tiempos y 

prioridades a las tareas

Se   impone   como objetivo colateral al proyecto el aprobar todas   las asignaturas   para evitar   tener recuperaciones

Se   amplia   el horario de trabajo

III

Baja por enfermedad de alguno de los miembros del 

equipo

Moderada TolerableCuidados de 

salud preventivos

No   se   planificarán tareas   de   mucha importancia   en períodos de tiempo muy ajustados

Se notifica  al   tutor el  estado de salud y se replanifican las tareas involucradas

IVAprendizaje y síntesis de la 

materiaAlta Tolerable

Procurar encontrar 

buenas fuentes de información

Se   hará   una búsqueda exhaustiva   en internet  paralela  al proyecto   para recopilar información útil

Se convoca al tutor en   una   reunión informativa   o   se plantean  las dudas por email

VSubestimación del 

tamaño del problema

Alta Serio

Planificamos un día más de 'colchón' en 

tareas susceptibles de 

alargarse

Se   hará   una búsqueda exhaustiva   en internet  paralela  al proyecto   para recoger información útil. 

Se   amplia   el horario   de   trabajo. Se   avisa   del progreso al   tutor   y se   intentan replanificar   los tiempos

VI Reorientación de requisitos Baja Serio

Realizamos un diseño tolerante 

a cambios

Se   trabajará   de acuerdo   a   un patrón   de   diseño tolerante   a cambios

Modificamos   la planificación   y   se prepara un plan de dirección   de cambios

VIIBajo rendimiento en alguna función 

del sistemaModerada Muy 

Serio­

Se   planificará tiempo   extra   para optimizar   las funciones programadas

Búsqueda   de información   sobre optimización   por internet.   Consulta al  director.  Tal vez, cambio   en   los requisitos

VIII

Imposibilidad de reuniones 

presenciales durante el período 

vacacional

Alta Tolerable ­

Se   planificará   un peso   de   trabajo menor   durante dichos períodos

Trabajo   en   tareas de forma paralela y comunicación   vía email con el tutor

IX

Fallo o avería de las computadoras que contienen los 

datos del desarrollo del proyecto

Baja Muy Serio

No poner en riesgo el 

sistema por causas externas

Se   realizarán copias de respaldo de   los   datos generados   al   final de cada tarea

Relanzado   del sistema   con   las copias  de respaldo y   los   guiones   de instalación

Tabla 2.1: Cuadro de Riesgos

2. Documento de Objetivos del Proyecto Proyecto Fin de Carrera

2.5 Plan de Comunicaciones

2.5.1 Objetivos Base del Plan de ComunicacionesComunicación periódica con el director de proyecto de forma presencial para poner en

común los paquetes entregables, supervisar los trabajos realizados, resolver dudas de desarrollo, plantear cambios en el alcance y sumarizar tareas pendientes.

Comunicación a distancia (que no necesita de presencia física) para tratar problemas puntuales en el desarrollo, enviar al director informes de trabajo y establecer fechas para reuniones presenciales.

2.5.2 Plan de TrabajoLlegado el momento de poner en común los entregables naturales del proyecto, en el caso

de realizarse a distancia se hará por medio de un adjunto vía correo electrónico. También se enviarán de forma periódica informes de evolución del trabajo en formato html en un adjunto vía correo electrónico.

Para poner en común el trabajo de forma presencial, se usará el equipo portátil apuntado en la lista de recursos 2.2.2. La reuniones presenciales se planificarán como mínimo, una vez al mes.

En caso de aparecer una duda que precisa una solución urgente, se dispondrá de la comunicación telefónica. En caso de no ser tan urgente, se planteará vía correo electrónico.

2.5.3 Datos de Contacto

20

MEDIO DATOS HORARIO DE USO PRIORIDAD DE USO

[email protected]

[email protected]­ preferente

página web http://adimen.si.ehu.es/~rigau/ ­ excepcional

teléfono (tutor) 943 01 51 51 lunes­viernes: 9:00­19:45 excepcional

despacho (tutor) nº 233

martes: 15:30­18:00

jueves: 10:00­12:30

viernes: 10:00­12:30preferente

Tabla 2.2: Cuadro de Comunicaciones

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

Capítulo 3. Administración y

Diseño del S.I.

3.1 Captura de Requisitos

3.1.1 Casos de UsoEste sistema sólo presenta un caso de uso, que es precisamente la petición de desambiguación por parte del usuario:

Actores: UsuarioFuncionalidad: El sistema provee de un conjunto de sentidos para cada uno de los términos que el usuario ha introducido con anterioridad. Eventualmente, el sistema también proveerá de un gráfico que muestre los caminos encontrados entre los términos, de una forma similar al ejemplo que ilustra la Figura 3.2.

21

Figura 3.1: Caso de Uso - Obtener WSD mediante SSI

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

En este ejemplo vemos asociados el primer sentido de 'cathedral' con el primer sentido de 'church' a una distancia de máximo dos nodos entre ambos. Los synsets vienen representados según su codificación en WordNet 1.6 (ver 1.2.2).Ejemplo de uso del script en consola:

krtx@metaBrain:~$ ./SSI.pl (flight|n, scheduled|a, trip|n, plane|n, designated|a, airport|n)

...

Interpretation: trip|n - 00294588-n - a journey for some purpose (usually including the return)

Interpretation: flight|n - 06102009-n - an instance of traveling by air Interpretation: airport|n - 02175180-n - an airfield equipped with control tower and

hangers as well as accommodations for passengers and cargo

Interpretation: scheduled|a - 02255439-a - planned or scheduled for some certain time or times

Interpretation: plane|n - 02599023-n - an aircraft that has fixed a wing and is powered by propellers or jets

Interpretation: designated|a - 02047995-a - selected or named for a duty

3.1.2 Modelo de DominioEl siguiente esquema muestra las clases que forman el dominio de la aplicación, pero no

por ello se representan el total de tablas que forma el MCR. En el nombre de la clase, el símbolo 'XX' representa un número de versión de WN. Por consiguiente, el valor 'XX' en la práctica podrá ser 15, 16, 17 ó 20.

22

Figura 3.2: Grafo dirigido entre sentidos de 'cathedral' y 'church' a distancia 3

3.1. Captura de Requisitos Proyecto Fin de Carrera

Significado de los atributos:– variant:

word: Palabra. Unidad sintáctica aislable de la cadena escrita y dotada de significado.sense: Un significado para una palabra expresado numéricamente. Cada 'sense' de una palabra pertenece a un único 'synset'.offset: Valor de codificación numérica asignado de forma unívoca a cada palabra.pos: 'Part of Speech', también conocido como categoría sintáctica. Puede tomar los valores de 'noun', 'verb', 'adjective' ó 'adverb'.– synset:

sons: Número de nodos pertenecientes a un nivel jerárquico inmediatamente inferior que comparten relación con el actual.gloss: Definición y/o frase de ejemplo para un synset.level: Nivel jerárquico ocupado por el nodo actual.levelFromTop: Distancia del nodo actual al nodo raíz.– relation:

relation: Relación entre dos nodos de la red.sourceSynset, targetSynset: Codificación numérica que referencia un 'synset' (synonym set); un conjunto de palabras que son intercambiables en cualquier contexto. En este caso nos referimos a un synset origen y un synset destino respectivamente.sourcePos, targetPos: 'Part of Speech' referido a un origen y a un destino respectivamente.

23

Figura 3.3: Modelo del Dominio

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

wnSource: Fuente WordNet de la que proviene el término almacenado.

3.2 Análisis

3.2.1 Pseudocódigo

SSI(T : lista de términos, I : lista inicial de synsets interpretados){

for each t Є Tif (t es monosémica) I[t] = el único sentido de t

P := {t Є T : I[t] = ϕ}{ while (haya más términos por desambiguar) }do{

P' := Pfor each t Є P' { para cada término pendiente }{bestSense := ϕmaxValue := 0{ para cada posible interpretación de t }for each sense S of t in WordNet{

f[S] := 0for each synset S' Є I{

ϕ := 0for each semantic path e1,e2...en between S and S'

ϕ := ϕ + w(e1,e2...en)

24

Figura 3.4: Fase de Análisis

3.2. Análisis Proyecto Fin de Carrera

f [S] := f [S] + ϕ}if (f [S] > maxValue){

maxValue := f [S]bestSense := S

}}if (maxValue > 0){

I[t] := bestSenseP := P \ {t}

}}} while(P /= P')return I

}

3.3 Descripción de la ArquitecturaPara desarrollar la implementación hemos elegido el paradigma de programación cliente-

servidor, también conocido como arquitectura en dos niveles. Dicha arquitectura funciona generalmente repartiendo el ámbito de ejecución en dos capas; el nivel de presentación y el de lógica del negocio se unen en un nodo y el nivel de datos queda separado en otro nodo. Las razones para elegir este método se basan en un balance de ventajas e inconvenientes del propio método con el impacto que tendrán en este caso en particular.

El principal inconveniente de este paradigma es que cada cliente abre una conexión independiente con la base de datos, de forma que cuando hay muchos clientes la carga en la BD se hace muy alta. Esto no nos afecta, porque el trabajo que queremos desarrollar se centra a nivel de usuario, y no a nivel de grupo distribuido. Otro inconveniente es que los clientes son sensibles a los cambios de diseño que se produzcan en la BD, sin embargo tenemos planeado como uno de los objetivos secundarios la realización de procedimientos almacenados (véase 2.1.2), que nos servirán para ejecutar una serie de sentencias SQL sin tener que conocer los detalles de diseño de la BD. Esta solución implica derivar una pequeña parte de la lógica de negocio al nivel de datos.Una ventaja de este modelo es que, al quedar los datos en un nodo separado del cliente, se beneficia la seguridad ya que es el SGBD el que controla el acceso al recurso.

25

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

3.3.1 Nivel de PresentaciónAl haber concebido la aplicación como un script ejecutado en consola, la interfaz que se

presenta al usuario que hace uso del programa es sencillamente la línea de comandos. Esta decisión se tomó con la idea de no dotar al algoritmo de una interfaz concreta, dependiente de un entorno de ventanas determinado (GTK, Qt... etc) ni de una interfaz web tan ampliamente explotada hoy en día. De este modo, nuestros esfuerzos se centrarían principalmente en desarrollar el nivel lógico y dejaríamos la puerta abierta a futuros rediseños de la capa de presentación.

3.3.2 Nivel de Lógica de NegocioNo es extraño encontrar en la actualidad al lenguaje Perl asociado a dos conceptos; el

primero y posiblemente más extendido es el desarrollo de servicios web y el segundo, el área del procesamiento del lenguaje natural. A pesar de ser dos disciplinas totalmente distintas, no es raro pensar que la razón de su uso en ellas quizás sea la potencia de este lenguaje en el tratamiento de patrones (expresiones regulares) así como su flexibilidad. Ya que la mayor parte de las herramientas con las que vamos a trabajar fueron implementadas utilizando este lenguaje y respetando la decisión de tantos otros colegas desarrolladores que consideraron Perl el lenguaje más apropiado para este campo antes que nosotros, decidimos añadir un período de aprendizaje al proyecto para poder manejar con cierta soltura esta herramienta en las tareas de programación.

Una de las herramientas que usaremos es el módulo MCR::Query, que nos proporciona acceso al nivel de datos mediante unas rutinas de acceso que hacen uso de DBI8 para ofrecer unas rutinas especialmente pensadas para ejecutarse sobre el MCR.

También investigaremos la viabilidad del uso de la herramienta Boost::Graph9, que se desarrolló con el objetivo de manejar eficientemente grafos de gran tamaño, ya que la forma de representación idónea de las redes semánticas es precisamente un grafo.

Por último, si es posible exploraremos la posibilidad de exportar estos grafos a un archivo de imagen mediante GraphViz10.

3.3.3 Nivel de DatosPara la capa de datos, se utilizará un servidor MySQL como SGBD, ya que es el sistema

natural del MCR, y se ha probado en multitud de veces con éxito. Con la interfaz PhPMyAdmin, 8 http://cronopio.net/perl/ 9 http://www.boost.org/libs/graph/doc/ 10 http://www.graphviz.org/

26

Figura 3.5: Esquema de arquitectura en dos niveles

3.3. Descripción de la Arquitectura Proyecto Fin de Carrera

podremos acceder a los datos de nuestra instalación MCR por medio del navegador web y así, comprobar rápidamente ciertos resultados de la ejecución. Además, permitirá tener una visión más 'gráfica' de la base de datos y nos hará más cómodo trabajar con ella.

Como ya se ha mencionado anteriormente, se ha planeado portar una cierta parte de la lógica de negocio a este nivel preparando procedimientos almacenados. Esta medida beneficiará a la ejecución del algoritmo y le dotará de una mayor tolerancia a cambios de la BD.

3.4 Selección de HerramientasUna premisa que vamos a intentar cumplir en la selección de herramientas va a ser que el

software que vayamos a utilizar tenga licencia open source. Por un lado conseguiremos reducir costes, y por otro vamos a darnos la oportunidad de comprobar si es posible encontrar en estas herramientas la funcionalidad que necesitamos para nuestro proyecto.

Para llevar a cabo la búsqueda de estas herramientas podremos buscar información por internet o también utilizar los repositorios de software con que cuentan la mayoría de las distribuciones GNU/Linux entre ellas la que vamos a utilizar nosotros, Ubuntu, basada en APT.

3.4.1 UbuntuDistribución linux que ofrece un sistema operativo basado en Debian GNU/Linux. Su uso

nos proporcionará una base de software sobre la que instalar el resto de las herramientas, además de ofrecernos otras funcionalidades como el intérprete de comandos11 en el que ejecutar nuestros scripts.– Desarrollador: Canonical Ltd.12 / Fundación Ubuntu– Última versión disponible: 7.04 (Feisty Fawn) desde el 19 de Abril de 2007– Versión utilizada: 6.10 (Edgy Eft) desde el 26 de Octubre de 2006– Instalación: CD/ISO13

– Licencia: GPL– Web Oficial: http://www.ubuntu.com

3.4.2 APT & SynapticHerramienta de Gestión de Paquetes (APT, siglas en inglés) es un sistema para manejar

los paquetes de instalación de aplicaciones en entornos GNU/Linux en modo texto. Gracias a su potencia, APT permite instalar, actualizar y desinstalar (entre otras opciones) programas de un sistema con gran facilidad y de forma intuitiva. Debido a su éxito, posteriormente se desarrollaron interfaces gráficas como Synaptic, que facilitan más aún si cabe su uso. Synaptic funciona utilizando las librerías nativas de GNOME, GTK.

11 http://tiswww.case.edu/php/chet/bash/bashtop.html 12 http://www.canonical.com/ 13 http://www.guia-ubuntu.org/index.php?title=Categor%C3%ADa:Instalaci%C3%B3n

27

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

– Desarrollador: De APT, el proyecto Debian14. De Synaptic originalmente, Alfredo Kojima para Conectiva15. Actualmente Michael Vogt et al.

– Última versión disponible: De APT, 0.6.45. De Synaptic, 0.47 desde el 14 de Febrero.– Versión utilizada: 0.6.45– Instalación: APT viene de forma nativa en Ubuntu. Synaptic, paquete .deb via APT– Licencia: GPL– Web oficial: APT, http://www.debian.org. Synaptic, http://www.nongnu.org/synaptic/

3.4.3 AnjutaEntorno Integrado de Desarrollo (IDE, siglas en inglés) para sistemas GNU/Linux.

Orientado al entorno de escritorio GNOME16 utiliza las librerías gráficas de éste, llamadas GTK17. Incluye un administrador de proyectos, asistentes, plantillas, depurador de código y un poderoso editor que verifica y resalta la sintaxis escrita. Nos será útil para programar los scripts de nuestros algoritmos y demás código de soporte en lenguaje Perl.– Desarrollador: Naba Kumar et al.– Última versión disponible: 2.2.0 desde 25 de Junio de 2007– Versión utilizada: 2.0.2– Instalación: paquete .deb via APT– Licencia: GPL– Web oficial: http://www.anjuta.org

3.4.4 DiaPrograma para la creación de diagramas, desarrollado como parte del proyecto GNOME.

Está concebido de forma modular, para hacer sencilla la incorporación de nuevos paquetes de símbolos. Nos servirá para obtener en formato digital diagramas entidad-relación, diagramas UML, de flujo etc... fruto del desarrollo del proyecto y necesarias para confeccionar la memoria.– Desarrollador: Proyecto GNOME– Última versión disponible: 0.96.1 (Brown Bag) desde el 22 de Agosto de 2007– Versión utilizada: 0.95– Instalación: paquete .deb via Synaptic– Licencia: GPL– Web oficial: http://live.gnome.org/Dia

3.4.5 PlannerHerramienta de gestión y planificación de proyectos para el entorno de escritorio

GNOME de los sistemas GNU/Linux. Nos servirá para manejar los planes de desarrollo del 14 http://www.es.debian.org/ 15 http://www.conectiva.com.br/ 16 http://www.gnome.org/ 17 http://www.gtk.org/

28

3.4. Selección de Herramientas Proyecto Fin de Carrera

proyecto, el uso de los recursos, las tareas que compondrán el trabajo y el tiempo que tomarán para ello. También servirá para automatizar un informe de progreso periódico para enviar al director de proyecto, por ejemplo via email.– Desarrollador: Originalmente, Richard Hult y Mikael Hallenda en Imendio18. Ahora

pertenece al proyecto GNOME.– Última versión disponible: 0.14.2– Versión utilizada: 0.14.1– Instalación: paquete .deb via Synaptic o desde las fuentes19

– Licencia: GPL– Web oficial: http://live.gnome.org/Planner

3.4.6 OpenOfficeOpenOffice es una suite ofimática desarrollada en software libre y que incluye

herramientas como procesador de textos, hoja de cálculo, creador de presentación o herramienta de manejo de dibujo vectorial. Esta herramienta nos servirá durante todo el desarrollo del proyecto para tareas varias. En principio, usaremos el procesador para escribir la memoria y para confeccionar planes de dirección. La hoja de cálculo, para recoger datos derivados de pruebas y tablas para la memoria. También usaremos el creador de presentaciones lo usaremos para realizar una pequeña presentación en la que resumiremos el trabajo realizado y la herramienta de dibujo, para realizar retoques a ilustraciones que podamos incluir en la memoria del proyecto.– Desarrollador: Sun Microsystems20

– Última versión disponible: 2.2.1 desde el 12 de Junio de 2007 (no disponible en castellano)– Versión utilizada: 2.0.4– Instalación: paquete .deb via Synaptic– Licencia: GPL– Web oficial: http://www.openoffice.org/

3.4.7 EvinceEvince es un visor de documentos para GNOME. Concretamente para los formatos pdf y

PostScript. Evince comenzó como una reescritura del código del también visor para GNOME gpdf21, que la mayoría de la gente pensaba que se estaba convirtiendo en algo difícil de mantener. En un corto período del tiempo sobrepasó la funcionalidad del gpdf. Ya que la mayoría de documentos científicos, artículos y tesis que conforma la documentación está en pdf o PostScript, este programa nos servirá para acceder a ellos con facilidad y rapidez.– Desarrollador: El equipo de Red Hat Desktop22

– Última versión disponible: 0.6.0 desde el 4 de Septiembre de 2006

18 http://developer.imendio.com/ 19 http://live.gnome.org/Planner_Installation_Guide 20 http://www.sun.com/ 21 http://freshmeat.net/projects/gpdf/ 22 http://www.redhat.com/

29

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

– Versión utilizada: 0.6.0– Instalación: paquete .deb via Synaptic– Licencia: GPL– Web oficial: http://www.gnome.org/projects/evince/

3.4.8 TomboyTomboy es un gestor de notas avanzado que destaca por su interacción con el usuario,

similar a la de los wikis. Esta disponible para GNOME y nos permitirá almacenar apuntes, recordatorios, correcciones y cualquier otro tipo de notas durante el desarrollo del proyecto, ya que funciona en el mismo entorno que el de la ejecución de las herramientas que utilizamos.– Desarrollador: Alex Graveley– Última versión disponible: 0.6.3 desde el 9 de Abril de 2007– Versión utilizada: 0.4.1– Instalación: paquete .deb via Synaptic– Licencia: GPL– Web Oficial: http://www.gnome.org/projects/tomboy/

3.4.9 FirefoxNavegador de Internet multiplataforma, disponible en distintas versiones para Microsoft

Windows, Mac OS X y GNU/Linux. El código fuente de la aplicación es abierto, y su desarrollo esta abierto a la comunidad de programadores de software libre. Nos servirá para acceder a información relativa al proyecto colgada en internet.– Desarrollador: Fundación Mozilla23

– Última versión disponible: 2.0.0.6 desde el 30 de Julio de 2007– Versión utilizada: 2.0.0.6– Instalación: paquete .deb via Synaptic– Licencia: tri-licencia MPL, MPL/GPL/LGPL– Web Oficial: http://www.mozilla-europe.org/es

3.4.10 MySQLMySQL es un Sistema de Gestión de Bases de Datos relacional, multihilo y multiusuario.

Esta desarrollado principalmente en ANSI C. Lo usaremos para gestionar la base de datos MCR (véase 1.2.5), y para proveer de su información a nuestros algoritmos.– Desarrollador: MySQL AB24

– Última versión disponible: 5.0.45 (Community Server) desde el 4 de Julio de 2007– Versión utilizada: 5.0.24– Instalación: ver Anexo A

23 http://www.mozilla.org/ 24 http://www.mysql.com/

30

3.4. Selección de Herramientas Proyecto Fin de Carrera

– Licencia: GPL o Uso comercial (esquema de licenciamiento dual)– Web oficial: http://www.mysql.com

3.4.11 PhpMyAdminHerramienta escrita en PHP con la intención de manejar la administración de MySQL a

través de páginas web [fuente: Wikipedia]. Con esta herramienta, podremos manejar MCR residente en el servidor MySQL de una forma sencilla y clara, para efectuar cálculos, o consultas sencillas.– Desarrollador: phpMyAdmin Devel Team– Última versión disponible: 2.11.0 desde el 21 de Agosto de 2007– Versión utilizada: 2.8.2– Instalación: ver Anexo A– Licencia: GPL– Web oficial: http://www.phpmyadmin.net

3.4.12 BoostGraphBoost::Graph es una interfaz para Perl de las librerías Boost-Graph para C++. Estas

librerías proveen de algoritmos muy eficientes para el tratamiento de grafos.– Desarrollador: David Burdick25

– Última versión disponible: 1.34.1 desde el 24 de Julio de 2007– Versión utilizada: 1.34.1– Instalación: ver Anexo B– Licencia: Boost Software License26

– Web oficial: http://www.boost.org/libs/graph/doc/index.html

3.4.13 MCRQueryMCRQuery es un paquete Perl que contiene varias funciones útiles para acceder al MCR.

– Desarrollador: Meaning (véase 1.2.5)– Última versión disponible: rama estable– Versión utilizada: rama estable– Instalación: via CPAN (repositorio módulos Perl)– Licencia: GPL– Web oficial: http://www.lsi.upc.es/~nlp/meaning/downloads.html

25 [email protected] 26 http://www.boost.org/LICENSE_1_0.txt

31

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

3.5 DiseñoEn el apartado de diseño se van a presentar las ideas surgidas a raíz del análisis de los

requisitos y del estudio del dominio y las herramientas con las que contamos.

3.5.1 Versiones desarrolladasEn este apartado se presenta un resumen de la ejecución del algoritmo para cada una de

las ideas que se han desarrollado.– SSI v3:

El algoritmo toma una lista de entrada. Lo primero que hace es preparar dos listas; una de términos pendientes en la que recoge todas las palabras que son poliśemicas y otra de solución con los únicos sentidos de las monosémicas. Esto se consigue con una rutina sencilla de acceso a la base de datos y discriminando los términos monosémicos de los polisémicos. Una vez creadas las dos listas, y para cada palabra de la lista de pendientes, hace una comparativa de todas las palabras de que ya están en el conjunto solución con cada uno de los sentidos de la palabra polisémica en curso. Este repaso se basa en construir un grafo desde cero al que añadir todos los caminos entre el sentido en curso de la palabra pendiente y los sentido en curso del conjunto solución hasta una cierta distancia como máximo. Para buscar estos caminos nos basamos en un grafo con todas las relaciones entre sentidos de nuestra red de conocimiento. Una vez que hemos creado el grafo auxiliar con todos los caminos entre los sentidos en curso, lanzamos una rutina que nos calcula todos los posibles caminos que hay entre los dos nodos del grafo. A estos caminos se les da un peso, que forman un peso total que se añade al peso que esta teniendo el sentido de esta palabra pendiente con todos los sentidos del conjunto solución. Si al terminar con todos los sentidos del conjunto solución, la suma total de peso excede el máximo peso que se había encontrado para alguno de los sentidos de la palabra polisémica, anteriormente analizados, este último pasa a ser el sentido más probable, y la palabra se elimina de la lista de pendientes para incluirse su sentido mejor calificado en el conjunto solución.Cuando la lista de términos pendientes esté vacía, hemos terminado la ejecución.pre: En la lista de palabras de entrada, tiene que haber por lo menos dos palabras. Además, en la lista de palabras de entrada tiene que haber por lo menos una palabra monosémica.

– SSI v4:El algoritmo funciona de una forma similar a la versión v3, sin embargo, a la hora de encontrar la conexión entre un sentido determinado de una palabra polisémica pendiente de desambiguar y un sentido del conjunto solución, echamos mano de una rutina que provee la librería Boost::Graph (véase 3.6.3) que busca el camino más corto entre dos nodos del grafo según el algoritmo de Dijkstra. De este modo, premiamos con más peso a los caminos más cortos entre sentidos, que sugieren un mayor grado de interrelación.Este método no construye un grafo nuevo auxiliar, sino que trabaja con un único grafo, que es nuestra red de conocimiento.pre: En la lista de palabras de entrada, tiene que haber por lo menos dos palabras. Además, en la lista de palabras de entrada tiene que haber por lo menos una palabra monosémica.

– SSI v4b:

32

3.5. Diseño Proyecto Fin de Carrera

Este algoritmo propone una solución para construir un grafo auxiliar lo más pequeño posible. Además, trabaja con una pila 'queue' y con una pila 'camino' en la que apunta los caminos que añadirá al grafo auxiliar. De este modo, los caminos que se añaden al grafo están controlados, y no se dispara el consumo de memoria.Para cada sentido de cada término pendiente de desambiguar, se hace un repaso de todas las palabras que ya están en el conjunto solución. Este repaso se basa en construir un grafo desde cero, al que añadir caminos entre el sentido en curso de la palabra pendiente y el synset de la lista de soluciones (hasta una cierta distancia como máximo).El procedimiento se inicializa introduciendo un sentido del término polisémico que estamos analizando en la pila 'queue' y a continuación:Observa (sin desapilarlo) el synset de la cima de la pila 'queue'.– Si el synset que estoy observando es igual al synset que pertenece a la lista solución:

– Apilo el synset que estoy observando en la pila 'camino'.– Dibujo la pila 'camino'.– Desapilo el nodo de la cima de la pila 'camino' y desapilo el nodo de la cima de la

pila 'queue'. Por último, 'marco' el nodo recién revisado como visitado.– Si no he llegado a distancia máxima (la distancia actual es la altura de la pila más uno) y

el synset que estoy observando no es igual al synset de la lista solución:– Desapilo el nodo actual de la pila 'queue'.– Marco el elemento actual como visitado.– Apilo el nodo actual en la pila 'camino'27.– Apilo los vecinos del nodo actual no visitados en la pila 'queue'. Si en este último

paso no apilo ningún nodo vecino, desapilo el nodo actual de la pila 'camino', ya que he dado con un nodo infructuoso.

– Si he llegado a distancia máxima y el elemento que observo no es igual al synset de la lista solución:– Desapilo el nodo actual de la pila 'queue' y marco el nodo actual como 'visitado'.

(Al final de esta sección se incluye un fragmento de pseudocódigo para dejar más clara esta parte)Una vez que hemos creado el grafo auxiliar con los caminos entre los sentidos, lanzamos una rutina que nos calcula todos los posibles caminos que hay entre los dos nodos del grafo. A estos caminos se les da un peso, que forman un peso total que se añade al peso que esta teniendo el sentido de esta palabra pendiente con todos los sentidos del conjunto solución. Si al terminar con todos los sentidos del conjunto solución, la suma total de peso excede el máximo peso que se había encontrado para alguno de los sentidos de la palabra polisémica, anteriormente analizados, este último pasa a ser el sentido más probable, y la palabra se elimina de la lista de pendientes para incluirse su sentido mejor calificado en el conjunto solución.pre: En la lista de palabras de entrada, tiene que haber por lo menos dos palabras. Además, en la lista de palabras de entrada tiene que haber por lo menos una palabra monosémica.

27 Antes de empilar un nodo en la pila 'camino-resultado', me aseguraré de que el nodo anterior de la pila corresponde a una distancia menor a la que estoy tratando.

33

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

A continuación se incluye el pseudocódigo perteneciente a la parte del tratamiento de las pilas:

construir_grafo (synset_origen, synset_destino, distancia_máxima)

queue := empilar(queue, synset_origen)

camino := pila_vacía()

while (not empty(queue)) {

nodo_actual := cima(queue)

if (nodo_actual=synset_destino) {

camino := empilar(camino, nodo_actual)

dibujar(camino) # se añade el camino al grafo

desapilar(camino)

desapilar(queue)

marcar_visitado(nodo_actual)

} elsif (nodo_actual/=synset_destino & distancia_máxima>[altura(queue)+1]){

desapilar(queue)

marcar_visitado(nodo_actual)

camino := empilar(camino, nodo_actual) #antes de empilar me aseguro de que la altura de la pila camino no es más grande que la de queue

queue := empilar(queue, vecinos_no_visitados(nodo_actual))

if (no he empilado ningún vecino en queue) {

desapilar(queue)

}

} elsif (nodo_actual/=synset_destino & distancia_máxima>[altura(queue)+1])

desapilar(queue)

marcar_visitado(nodo_actual)

}

}

– SSI v5Este último algoritmo se basa en un concepto distinto para encontrar los caminos entre nodos. Para conseguir estos caminos, el algoritmo creará grafos auxiliares en forma de nubes alrededor de los nodos origen y destino. Luego, busca nodos comunes entre las dos nubes y une las trayectorias creadas en una y otra nube. De este modo tenemos caminos creados al doble de la distancia máxima que cubre cada nube. Veamos en algoritmo en su totalidad:Lo primero que hace es preparar dos listas; una de términos pendientes en la que recoge todas las palabras que son polisémicas y otra de solución con los únicos sentidos de las monosémicas. Esto se consigue con una rutina sencilla de acceso a la base de datos. Una vez creadas las dos listas, y para cada palabra de la lista de pendientes, hace un repaso de todas las palabras de que ya están en el conjunto solución con cada uno de los sentidos de la

34

3.5. Diseño Proyecto Fin de Carrera

palabra polisémica en curso. Este repaso se basa en construir las estructuras de nubes que hemos mencionado al principio y añadir con ellas caminos a un grafo auxiliar construido desde cero. Una vez que hemos creado el grafo auxiliar con todos los caminos entre los sentidos en curso, lanzamos una rutina que nos calcula todos los posibles caminos que hay entre los dos nodos del grafo. A estos caminos se les da un peso, que forman un peso total que se añade al peso que esta teniendo el sentido de esta palabra pendiente con todos los sentidos del conjunto solución. Si al terminar con todos los sentidos del conjunto solución, la suma total de peso excede el máximo peso que se había encontrado para alguno de los sentidos de la palabra polisémica, anteriormente analizados, este último pasa a ser el sentido más probable, y la palabra se elimina de la lista de pendientes para incluirse su sentido mejor calificado en el conjunto solución.Cuando la lista de términos pendientes esté vacía, hemos terminado la ejecución.pre: En la lista de palabras de entrada, tiene que haber por lo menos dos palabras. Además, en la lista de palabras de entrada tiene que haber por lo menos una palabra monosémica.

3.5.2 Diagramas de SecuenciaLos diagramas de secuencia correspondientes a los diseños de algoritmos que se

proponen en este trabajo aparecen de forma apaisada a partir de la siguiente página y ocupando una página por diagrama, para facilitar su lectura y comprensión.

35

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

– SSI v3

36

Figura 3.6: Diagrama de Secuencia: SSI v.3

3.5. Diseño Proyecto Fin de Carrera

– SSI v4

37

Figura 3.7: Diagrama de Secuencia: SSI v.4

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

– SSI v4b

38

Figura 3.8: Diagrama de Secuencia: SSI v.4b

3.5. Diseño Proyecto Fin de Carrera

– SSI v5

39

Figura 3.9: Diagrama de Secuencia: SSI v.5

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

3.5.3 Consultas a la Base de DatosEn los diagramas de la sección anterior se puede observar que las llamadas a la base de

datos por medio de DBI consisten en dos subrutinas sencillas, y que se simplifican como 'consulta SQL'. En esta sección pasaremos a ver cuál es la función concreta de cada una de ellas y la consulta SQL que ejecutan en nuestra ejecución:

SynsetSenses($w, $p, $s)– entrada: se pasan como parámetros un 'lemma' (palabra), 'pos' (Part of Speech) y 'sense' de un

synset.– salida: devuelve la tupla de la base de datos que corresponde al synset referenciado en la

entrada.– consulta: SELECT * FROM `wei_enXX_variant 2̀8 WHERE `word` = '$w' AND `pos` = '$p'

AND `sense` = '$sense'– procedimiento almacenado equivalente: CALL word2synsets ('$w', '$p', '$sense')– ejemplo:

SynsetsWord($s, $p)– entrada: se introduce un lemma y un pos– salida: se devuelve la lista de sentidos que corresponden a esa lemma-pos– consulta: SELECT * FROM `wei_enXX_variant 2̀8 WHERE `word` = '$w' AND `pos` = '$p'– procedimiento almacenado equivalente: CALL word2synsets_s ('$w', '$p')– ejemplo:

28Recordar que en el nombre de la tabla, el símbolo 'XX' representa un número de versión, correspondiente a la versión de WordNet que es consistente con la información que almacena esa tabla.

40

Figura 3.10: Ejemplo word2synsets

3.5. Diseño Proyecto Fin de Carrera

3.6 ImplementaciónEn este apartado se explica la manera de implementar los procedimientos almacenados en

la base de datos y orienta para el uso de los módulos DBI, Boos::Graph y GraphViz, que son los conceptos más importantes que vamos a tener que dominar para realizar con éxito la tarea de implementación.

3.6.1 Procedimientos AlmacenadosLos procedimientos almacenados y funciones son nuevas funcionalidades de la versión de

MySQL 5.0. Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los clientes no necesitan relanzar los comandos individuales sino que pueden en su lugar referirse al procedimiento almacenado. La principal ventaja de este método de trabajo es que se libera de carga de datos a una transacción que puede resultar repetitiva en el desarrollo de una rutina que accede a una BD.Los procedimientos almacenados requieren la tabla proc en la base de datos mysql. Esta tabla se crea durante la instalación de MySQL 5.0.Sintaxis de procedimientos almacenados:

CREATE PROCEDURE sp_name ([parameter[,...]])[characteristic ...] routine_body

CREATE FUNCTION sp_name ([parameter[,...]]) RETURNS type[characteristic ...] routine_body

parameter:[ IN | OUT | INOUT ] param_name type

type:Any valid MySQL data type

characteristic:LANGUAGE SQL

41

Figura 3.11: Ejemplo word2synsets_s

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

| [NOT] DETERMINISTIC| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }| SQL SECURITY { DEFINER | INVOKER }| COMMENT 'string'

routine_body:procedimientos almacenados o comandos SQL válidos

Estos comandos crean una rutina almacenada. Desde MySQL 5.0.3, para crear una rutina, es necesario tener el permiso 'CREATE ROUTINE' , y los permisos 'ALTER ROUTINE' y 'EXECUTE' se asignan automáticamente a su creador. Si se permite logueo binario necesita también el permisos 'SUPER'.

Por defecto, la rutina se asocia con la base de datos actual. Para asociar la rutina explícitamente con una base de datos, deberemos especificar el nombre como db_name.sp_name al crearlo.

Un procedimiento o función se considera “determinista” si siempre produce el mismo resultado para los mismos parámetros de entrada, y “no determinista” en cualquier otro caso. Si no se da ni 'DETERMINISTIC' ni 'NOT DETERMINISTIC' por defecto es 'NOT DETERMINISTIC'.También puede obtener información de rutinas almacenadas de la tabla 'ROUTINES' en 'INFORMATION_SCHEMA'.

Ejemplos:El siguiente es un ejemplo de un procedimiento almacenado que usa un parámetro 'OUT'.

El ejemplo usa el cliente mysql y el comando 'delimiter' para cambiar el delimitador del comando de ';' a '//' mientras se define el procedimiento. Esto permite pasar el delimitador ';' usado en el cuerpo del procedimiento a través del servidor en lugar de ser interpretado por el mismo mysql.

mysql> delimiter //mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)

-> BEGIN-> SELECT COUNT(*) INTO param1 FROM t;-> END-> //

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;mysql> CALL simpleproc(@a);Query OK, 0 rows affected (0.00 sec)mysql> SELECT @a;+------+| @a |+------+| 3 |+------+

42

3.6. Implementación Proyecto Fin de Carrera

1 row in set (0.00 sec)

Ahora, un ejemplo orientado a nuestra base de datos. En él se crea de un procedimiento almacenado que devuelve el número de synsets relacionados en la base de datos con un número de relación determinado (input):

krtx@metaBrain:~$ mysql -u 'root' -p 'mcr3'Enter password: Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 21 to server version: 5.0.24a-Debian_9ubuntu2-logType 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> delimiter //mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)

-> BEGIN-> SELECT COUNT(*) FROM `wei_en16_relation` WHERE `relation` = param1;-> END-> //

Query OK, 0 rows affected (0.09 sec)

mysql> delimiter ;mysql> CALL simpleproc(@12);mysql> SHOW PROCEDURE STATUS LIKE 'simpleproc';+------+------------+-----------+----------------+---------------------+---------------------+---------------+---------+

| Db | Name | Type | Definer | Modified | Created | Security_type | Comment |

+------+------------+-----------+----------------+---------------------+---------------------+---------------+---------+

| mcr3 | simpleproc | PROCEDURE | root@localhost | 2007-04-10 17:47:11 | 2007-04-10 17:47:11 | DEFINER | |

+------+------------+-----------+----------------+---------------------+---------------------+---------------+---------+

1 row in set (0.00 sec)

El siguiente es un ejemplo de función que toma un parámetro, realiza una operación con una función SQL, y retorna el resultado:

mysql> delimiter //mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)

-> RETURN CONCAT('Hello, ',s,'!');-> //

Query OK, 0 rows affected (0.00 sec)

43

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

mysql> delimiter ;mysql> SELECT hello('world');+----------------+| hello('world') |+----------------+| Hello, world! |+----------------+1 row in set (0.00 sec)

Si el comando 'RETURN' en un procedimiento almacenado retorna un valor con un tipo distinto al especificado en la cláusula 'RETURNS' de la función, el valor de retorno se coherciona al tipo apropiado. Por ejemplo, si una función retorna un valor 'ENUM' o 'SET', pero el comando 'RETURN' retorna un entero, el valor retornado por la función es la cadena para el mienbro de 'ENUM' correspondiente de un comjunto de miembros 'SET'.

Por último, un borrador de un procedimiento almacenado orientado a nuestra base de datos y que nos permite obtener los synsets de una palabra:

mysql> delimiter //mysql> CREATE PROCEDURE word2synsets (IN w CHAR(20), IN p CHAR(3), IN s INTEGER)

-> BEGIN-> SELECT * FROM `wei_en16_variant` WHERE `word` = w AND `pos` = p AND `sense` = s;-> END-> //

mysql> delimiter ;mysql> CALL word2synsets ('party', 'n', '1');+--------+-------+-------+----------+-----+---------+---------+------------------------+------+--------+

| myauto | word | sense | offset | pos | phraset | myusage | status | csco | eagles |

+--------+-------+-------+----------+-----+---------+---------+------------------------+------+--------+

| 1 | party | 1 | 06131180 | n | 0 | NULL | automatically assigned | 99 | NULL |

+--------+-------+-------+----------+-----+---------+---------+------------------------+------+--------+

1 row in set (0.18 sec)

Query OK, 0 rows affected (0.18 sec)

referencias:http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html

http://www.mysql.org/doc/refman/5.0/es/create-procedure.html

3.6.2 DBIDBI es una interfaz de acceso a base de datos para Perl que además es independiente de

la base de datos que estemos usando en concreto. Para utilizar este módulo, solamente vamos a necesitar conocer un pequeño subconjunto de las sentencias que la interfaz ofrece:

44

3.6. Implementación Proyecto Fin de Carrera

use DBI;

para poder manejar el módulo en nuestro programa.

my $db = DBI->connect("DBI:mysql:database=mcr3;host=localhost", "root", "sobresaliente");

con esta sentencia preparamos una variable global con la conexión a la base de datos que vamos a utilizar.

my $query = "CALL word2synsets ('$w', '$p', '$sense')";

esta otra sentencia prepara una consulta SQL para la base de datos en forma de string. En este caso es una llamada al procedimiento almacenado 'word2synsets' junto a su paso de parámetros.

my $st = $db->prepare($query);

esta sentencia asocia la consulta SQL con la conexión que hemos preparado al principio.

$st->execute();

finalmente se ejecuta la consulta con el comando 'execute'. Si se desea, también se puede añadir una instrucción que capture una posible excepción. Si no, el error aparecerá por la salida estándar.Los resultados devueltos pueden accederse por medio de una lista de referencias a hashes asociada a la variable que almacena la consulta.Para una información más detallada, teclear “man dbi“ en la línea de comandos.

3.6.3 Boost::GraphBoost::Graph es una interfaz en Perl de las librerías de manulación de grafos Boost-

Graph para C++.use Boost::Graph;

para poder manejar el módulo en nuestro programa.

my $graph = new Boost::Graph(directed => 1);

esta sentencia crea una nueva instancia vacía de un grafo.

my $graph = new Boost::Graph(directed=>0, filename=>’graph.bin’);

así creamos un grafo a partir de un archivo en disco que contiene un grafo 'serializado previamente'.

$graph->serialize_graph( $GF );

con esta sentencia 'serializamos' el grafo a un archivo para poder utilizarlo en otra ejecución, por ejemplo.

$graph->add_edge(node1=>’a’, node2=>’b’, weight=>1.1, edge=>’edge name’);

45

3. Administración y Diseño del S.I. Proyecto Fin de Carrera

esta sentencia añade un camino entre dos nodos 'a' y 'b', otorga un peso a dicho camino y le da un nombre.

$graph->neighbors($node);

se devuelve una lista de referencias a todos los nodos que son vecinos del nodo.

$graph->dijkstra_shortest_path($start_node, $end_node);

encuentra el camino más corto de pesos entre los dos nodos.

Para obtener información sobre métodos de acceso al grafo, teclear “man boost::graph“ en la línea de comandos.

3.6.4 GraphVizGraphViz es una interfaz en Perl para la manipulación y generación de grafos dirigidos y

no dirigidos en varios formatos (PostScript, png, etc...) usando los programas 'dot', 'neato', 'twopi', 'circo' y 'fdp' del proyecto GraphViz.use GraphViz;

para poder manejar el módulo en nuestro programa.

my $g = GraphViz->new(directed => 0, );

my $g = GraphViz->new(layout => ’neato’, ratio => ’compress’);

crea una nueva instancia vacía de un grafo, muy al estilo de Boost::Graph. En este caso, sin embargo nos aparece el parámetro layout, que sirve para definir qué patrón de manejo se utilizará para la representación de nuestro grafo. A continuación, las opciones disponibles:

dot: El patrón de manejo por defecto para grafos dirigidos.neato: Para grafos no dirigidos – modelo 'spring'.twopi: Para grafos no dirigidos – modelo 'radial'circo: Para grafos no dirigidos – modelo 'circular'fdp: Para grafos no dirigidos – fuerza el modelo dirigido 'spring'

$graph->add_node(’Paris’, label => ’City of\nlurve’);

para añadir un nodo 'Paris' y dotarlo de una etiqueta.

$graph->add_edge(’a’ => ’b’, label => ’Far’);

esta sentencia añade un camino entre dos nodos 'a' y 'b' y le da un nombre. También es posible asignar pesos al camino.

$graph->as_png("graph.png");

con esta sentencia exportamos el grafo al formato 'png'.

46

3.6. Implementación Proyecto Fin de Carrera

Para obtener más información sobre otros métodos, teclear “man graphViz“ en la línea de comandos.

47

4. Pruebas Proyecto Fin de Carrera

Capítulo 4. Pruebas

El apartado de pruebas se ha desarrollado en dos fases. Primero se desarrolló un pequeño soporte de pruebas, para ir controlando la efectividad de los diferentes algoritmos a medida que éstos iban siendo implementados. Posteriormente se dotó de más robustez a este apartado utilizando un juego de pruebas estándard, y especialmente enfocado a evaluar los sistemas de desambiguación semántica automática: Senseval (véase apartado 1.2.6).

4.1 Pruebas InicialesLas pruebas iniciales consisten en una colección de listas de términos y un par de

subrutinas que recogen el resultado de la ejecución del algoritmo y los devuelven por pantalla de una forma más ordenada. De este modo, solamente tenemos que comentar/descomentar una de las listas disponibles para ser evaluadas y lanzar el programa normalmente. El grafo que el algoritmo utiliza para su tarea se ha creado a partir de las relaciones de WordNet 2.0 enriquecidas con eXtendedWordNet 2.0. La información sobre la creación de este grafo, incluído su tamaño está disponible en el Anexo B.

A continuación se expondrán los resultados de la desambiguación de dos de las listas de términos para cada una de las versiones desarrolladas, junto con los tiempos de ejecución. Primero se devuelve la lista de términos, identificados como monosémicos y polisémicos, a continuación la interpretación de cada uno de ellos (en color verde si la interpretación es correcta y en color rojo en caso contrario) y por último la lista de los sentidos que no se han sabido desambiguar, en caso de que existan.

SSI versión 3 [a distancia 2]:

– lista uno: ("flight|n|2", "scheduled|a", "trip|n", "plane|n", "designated|a", "airport|n")krtx@metaBrain:~$ time ./SSI.v3.pl

Monosemous: flight|n 1

Monosemous: scheduled|a 1

Polysemous: trip|n 7

Polysemous: plane|n 5

Monosemous: designated|a 1

Monosemous: airport|n 1

Interpretation: trip n 00294588-n 1 3 a journey for some purpose (usually including the return)

48

4.1. Pruebas Iniciales Proyecto Fin de Carrera

Interpretation: flight n 00289324-n 0 0 an instance of traveling by air

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: scheduled a 02285058-a 0 0 planned or scheduled for some certain time or times

Interpretation: plane n 02599023-n 16.3833333333333 73 an aircraft that has a fixed wing and is powered by propellers or jets

Interpretation: designated a 02057584-a 0 0 selected or named for a duty

real 0m13.779s

user 0m11.149s

sys 0m0.300s

Palabras polisémicas desambiguadas: 2/2

– lista dos: ("port|n|1", "place|n", "seaport|n", "airport|n", "people|n", "merchandise|n", "enter|v", "leave|v", "country|n")

krtx@metaBrain:~$ time ./SSI.v3.pl

Monosemous: airline|n 1

Polysemous: commercial|a 3

Polysemous: enterprise|n 3

Polysemous: provide|v 7

Monosemous: scheduled|a 1

Polysemous: flight|n 9

Monosemous: passenger|n 1

Interpretation: flight n 00288122-n 4.91666666666667 15 a scheduled trip by plane between designated airports

Interpretation: commercial a 00455926-a 1 3 connected with or engaged in or sponsored by or used in commerce or commercial enterprises

Interpretation: enterprise n 07566541-n 1.25 4 an organization created for business ventures

Interpretation: airline n 02597984-n 0 0 a commercial enterprise that provides scheduled flights for passengers

Interpretation: scheduled a 02285058-a 0 0 planned or scheduled for some certain time or times

Interpretation: provide v 02259805-v 4.95 16 provide or furnish with

Interpretation: passenger n 09729204-n 0 0 a traveler riding in a vehicle (a boat or bus or car or plane or train etc) who is not operating it

real 0m20.111s

user 0m18.333s

sys 0m0.260s

Palabras polisémicas desambiguadas: 5/5

SSI versión 4:

– lista uno: ("flight|n|2", "scheduled|a", "trip|n", "plane|n", "designated|a", "airport|n")krtx@metaBrain:~$ time ./SSI.v4.pl

Reading Graph from file ...

Monosemous: flight|n 1

Monosemous: scheduled|a 1

Polysemous: trip|n 7

49

4. Pruebas Proyecto Fin de Carrera

Polysemous: plane|n 5

Monosemous: designated|a 1

Monosemous: airport|n 1

Interpretation: trip n 00294588-n 0.625 4 a journey for some purpose (usually including the return)

Interpretation: flight n 00288122-n 0 0 a scheduled trip by plane between designated airports

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: scheduled a 02285058-a 0 0 planned or scheduled for some certain time or times

Interpretation: plane n 02599023-n 0.6 5 an aircraft that has a fixed wing and is powered by propellers or jets

Interpretation: designated a 02057584-a 0 0 selected or named for a duty

real 2m9.374s

user 2m0.520s

sys 0m1.416s

Palabras polisémicas desambiguadas: 2/2

– lista dos: ("port|n|1", "place|n", "seaport|n", "airport|n", "people|n", "merchandise|n", "enter|v", "leave|v", "country|n")

krtx@metaBrain:~$ time ./SSI.v4.pl

Reading Graph from file ...

Monosemous: port|n 1

Polysemous: place|n 16

Monosemous: seaport|n 1

Monosemous: airport|n 1

Polysemous: people|n 4

Monosemous: merchandise|n 1

Polysemous: enter|v 9

Polysemous: leave|v 14

Polysemous: country|n 5

Interpretation: enter v 01958650-v 0.583333333333333 6 to come or go into

Interpretation: port n 08106737-n 0 0 a place (seaport or airport) where people and merchandise can enter or leave a country

Interpretation: country n 07673557-n 0.625 8 a politically organized body of people under a single government

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: leave v 01951556-v 0.642857142857143 7 go away from a place

Interpretation: merchandise n 03608510-n 0 0 commodities offered for sale

Interpretation: place n 08134869-n 0.625 4 a point located with respect to surface features of some region

Interpretation: seaport n 08111373-n 0 0 a sheltered port where ships can take on or discharge cargo

Interpretation: people n 07666993-n 0.6 5 the body of citizens of a state or country

real 17m52.451s

user 17m5.764s

sys 0m11.185s

Palabras polisémicas desambiguadas: 5/5

50

4.1. Pruebas Iniciales Proyecto Fin de Carrera

SSI versión 4b [a distancia 2]:

– lista uno: ("flight|n|2", "scheduled|a", "trip|n", "plane|n", "designated|a", "airport|n")krtx@metaBrain:~$ time ./SSI.v4b.pl

Reading Graph from file ...

Monosemous: flight|n 1

Monosemous: scheduled|a 1

Polysemous: trip|n 7

Polysemous: plane|n 5

Monosemous: designated|a 1

Monosemous: airport|n 1

Interpretation: trip n 00294588-n 1 3 a journey for some purpose (usually including the return)

Interpretation: flight n 00289324-n 0 0 an instance of traveling by air

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: scheduled a 02285058-a 0 0 planned or scheduled for some certain time or times

Interpretation: plane n 02599023-n 5.66666666666667 17 an aircraft that has a fixed wing and is powered by propellers or jets

Interpretation: designated a 02057584-a 0 0 selected or named for a duty

real 0m9.845s

user 0m3.928s

sys 0m0.592s

Palabras polisémicas desambiguadas: 2/2

– lista dos: ("port|n|1", "place|n", "seaport|n", "airport|n", "people|n", "merchandise|n", "enter|v", "leave|v", "country|n")

krtx@metaBrain:~$ time ./SSI.v4b.pl

Reading Graph from file ...

Monosemous: port|n 1

Polysemous: place|n 16

Monosemous: seaport|n 1

Monosemous: airport|n 1

Polysemous: people|n 4

Monosemous: merchandise|n 1

Polysemous: enter|v 9

Polysemous: leave|v 14

Polysemous: country|n 5

Interpretation: enter v 01958650-v 3 9 to come or go into

Interpretation: port n 08106737-n 0 0 a place (seaport or airport) where people and merchandise can enter or leave a country

Interpretation: country n 07673557-n 8 24 a politically organized body of people under a single government

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: leave v 01951556-v 7.33333333333333 22 go away from a place

Interpretation: merchandise n 03608510-n 0 0 commodities offered for sale

Interpretation: place n 08134869-n 2 6 a point located with respect to surface features of some region

51

4. Pruebas Proyecto Fin de Carrera

Interpretation: seaport n 08111373-n 0 0 a sheltered port where ships can take on or discharge cargo

Interpretation: people n 07666993-n 2.66666666666667 8 the body of citizens of a state or country

real 0m26.643s

user 0m17.193s

sys 0m2.416s

Palabras polisémicas desambiguadas: 5/5

SSI versión 5 [a distancia 3]:

– lista uno: ("flight|n|2", "scheduled|a", "trip|n", "plane|n", "designated|a", "airport|n")krtx@metaBrain:~$ time ./SSI.v5.pl

Reading Graph from file ...

Monosemous: flight|n 1

Monosemous: scheduled|a 1

Polysemous: trip|n 7

Polysemous: plane|n 5

Monosemous: designated|a 1

Monosemous: airport|n 1

Interpretation: trip n 13564304-n 1.66619368093291 4 a hallucinatory experience induced by drugs

Interpretation: flight n 00288122-n 0 0 a scheduled trip by plane between designated airports

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: scheduled a 02285058-a 0 0 planned or scheduled for some certain time or times

Interpretation: plane n 03804644-n 2.14238143330281 5 a carpenter's hand tool with an adjustable blade for smoothing or shaping wood

Interpretation: designated a 02057584-a 0 0 selected or named for a duty

real 0m50.981s

user 0m42.231s

sys 0m0.276s

Palabras polisémicas desambiguadas: 2/2

– lista dos [distancia 2]: ("port|n|1", "place|n", "seaport|n", "airport|n", "people|n", "merchandise|n", "enter|v", "leave|v", "country|n")

krtx@metaBrain:~$ time ./SSI.v5.pl

Reading Graph from file ...

Monosemous: port|n 1

Polysemous: place|n 16

Monosemous: seaport|n 1

Monosemous: airport|n 1

Polysemous: people|n 4

Monosemous: merchandise|n 1

Polysemous: enter|v 9

Polysemous: leave|v 14

Polysemous: country|n 5

Interpretation: enter v 01958650-v 1.20288295254322 6 to come or go into

52

4.1. Pruebas Iniciales Proyecto Fin de Carrera

Interpretation: port n 08106737-n 0 0 a place (seaport or airport) where people and merchandise can enter or leave a country

Interpretation: country n 07673557-n 2.02487281539168 8 a politically organized body of people under a single government

Interpretation: airport n 02600118-n 0 0 an airfield equipped with control tower and hangers as well as accommodations for passengers and cargo

Interpretation: leave v 01951556-v 2.41716759691595 7 go away from a place

Interpretation: merchandise n 03608510-n 0 0 commodities offered for sale

Interpretation: place n 08134869-n 0.50501845087577 4 a point located with respect to surface features of some region

Interpretation: seaport n 08111373-n 0 0 a sheltered port where ships can take on or discharge cargo

Interpretation: people n 07666993-n 0.792539847307813 5 the body of citizens of a state or country

real 0m16.907s

user 0m11.677s

sys 0m0.120s

Palabras polisémicas desambiguadas: 5/5

En la Tabla 4.1 se pueden comprobar los resultados de los tiempos de ejecución para cada una de las diferentes versiones de SSI. El algoritmo SSI v4b es claramente el más rápido de todos en las pruebas con la lista de términos número uno, sin embargo es superado por el SSI v5 en la lista 2. Este último falla en la desambiguación de la lista uno.

4.2 SensevalComo decíamos en la introducción (véase 1.2.3), un cierto número de glosas contenidas

en WordNet han sido etiquetadas a mano para el proyecto eXtended WordNet, formando de este modo el conjunto 'gold-standard'. Este conjunto de glosas proporciona un adecuado banco de pruebas para evaluar los sistemas de WSD, lo cual es precisamente el objetivo del Tercer Taller Internacional en Evaluación de Sistemas para el Análisis Semántico de Texto, Senseval-03: replicar esos resultados etiquetados a mano. Los participantes de Senseval-03 reciben todas las glosas de WordNet en la que al menos una de las palabras que contienen está etiquetada como 'gold'. El archivo que contiene las glosas está en formato XML. Ejemplo:<gloss pos="ADJ" synsetID="00001740">

<synonymSet>able</synonymSet>

<text>(usually followed by `to') having the necessary means or skill or

know-how or authority to do something</text>

</gloss>

53

Tabla 4.1: Comparativa de tiempos en las Pruebas Iniciales

4. Pruebas Proyecto Fin de Carrera

El número de palabras en una glosa es bastante pequeño y hay casos en los que una cierta palabra se encuentra más de una vez en la misma glosa. Sin embargo, es factible utilizar el synset origen de la glosa para asistir a la desambiguación. Un archivo de respuestas deberá contener un identificador (synset y PoS) y un sentido expresado como 'WordNet sense' para cada palabra identificada por el sistema. Existe una clave de resultados que contiene un identificador Synset-PoS, una asignación de calidad (gold, silver, normal), el lemma (la palabra expresada en minúsculas) y el sentido WN. Ejemplo de la glosa anterior pero esta vez contenida en el archivo clave:ADJ.00001740 normal usually%4:02:00::|usually%4:02:00::

ADJ.00001740 normal follow%2:38:00::|followed%2:38:00::

ADJ.00001740 normal have%2:40:00::|having%2:40:00::

ADJ.00001740 gold necessary%3:00:00::|necessary%3:00:00::

ADJ.00001740 normal means%1:04:00::|means%1:04:00::

ADJ.00001740 gold skill%1:09:00::|skill%1:09:00::

ADJ.00001740 normal know-how%1:09:00::|know-how%1:09:00::

ADJ.00001740 gold authority%1:07:00::|authority%1:07:00::

ADJ.00001740 gold do%2:41:04::|do%2:41:04::

ADJ.00001740 normal something%1:03:00::|something%1:03:00::

Con la ayuda de esta clave de resultados, en programa de calificación (un script en Perl) almacena las respuestas en tres hashes de acuerdo a su calidad y seguidamente almacena también las respuestas que se pretenden evaluar.

Nuestra tarea en este apartado es el de extraer todas las palabras de cada glosa (incluído el synset origen) para poder formar listas que nuestro programa pueda procesar y realizar unas ciertas modificaciones en el propio script de nuestro programa para que tanto la toma de los datos como la escritura de los resultados se haga de forma que el sistema de calificación de Senseval pueda manejarlos. Una vez hecho ésto, ejecutamos las evaluaciones y tomamos los porcentajes de aciertos, los intentos y el número total de glosas. Por último, para la toma de decisiones realizaremos unas ciertas medidas a partir de los números que hemos conseguido:

La precisión será computada como el número de aciertos dividido entre el número de intentos. El recall será el número de aciertos dividido entre el total de glosas. El porcentaje de intentos lo computamos como el número de intentos dividido entre el número total de glosas [Litkowski, 2004]. Además tomaremos una medida adicional, que se denomina media armónica o F1 y que se calcula como la suma de precisión y recall dividido entre dos. Los resultados se expresan en las tablas siguientes, sin embargo no todos los algoritmos desarrollados han podido ser probados por Senseval, debido a las limitaciones de la computadora que utilizamos para las pruebas. El grafo que el algoritmo utiliza para su tarea, al igual que con las pruebas sencillas, se ha creado a partir de las relaciones de WordNet 2.0.

54

4.2. Senseval Proyecto Fin de Carrera

Para hacer la comparación entre algoritmos, la medida a la que más importancia vamos a dar es la de la media armónica también llamada F1. En la Tabla 4.2 (tiempo de ejecución: 747m37.855s) podemos observar que esta medida es generalmente mayor para los nombres que para verbos, adjetivos o adverbios. Además, podemos observar que la media de F1 para las palabras etiquetadas como 'normal' correctamente, es superior al de 'gold' o 'silver' (recordemos que 'normal' son aquellas palabras desambiguadas con el método XWN_WSD desarrollado por el equipo de eXtended WordNet). Esta medida de F1 en 'normal' incluso supera la correspondiente a la total.El orden de F1 de este algoritmo en orden decreciente es de primero el apartado 'normal', a continuación el 'total' y después 'gold' seguido por 'silver'.

55

Tabla 4.2: Pruebas Senseval-3: SSI v.5 a distancia 3

4. Pruebas Proyecto Fin de Carrera

Este segundo algoritmo reflejado en la Tabla 4.3 (tiempo de ejecución: 266m36.652s) incrementa en todos los apartados el valor de F1 con respecto al anterior. En éste también el valor de F1 del apartado 'normal' supera a todos los demás apartados, incluso al 'total'. Sin embargo, en este caso el orden de valores de F1 por apartados, de forma decreciente es de primero 'normal', después 'total', tercero es 'silver' y por último 'gold', lo que puede significar que este algoritmo se acerca más a las decisiones de etiquetado elegidas por los sistemas de desambiguación que el equipo de eXtended WordNet utilizó para construir su base de conocimiento.A continuación, vamos a realizar las mismas pruebas a los algoritmos pero con un grafo de apoyo construido con las relaciones de WordNet 2.0, enriquecidas con eXtendedWordNet 2.0.. Y observaremos que las medidas de precisión, recall y F1 aumentan considerablemente. Ésto refuerza la hipótesis de que la tarea de añadir las relaciones de tipo gloss que facilita eXtended WordNet a nuestros grafos de apoyo a los algoritmos es prioritaria.

56

Tabla 4.3: Pruebas Senseval-3: SSI v.4b a distancia 2

4.2. Senseval Proyecto Fin de Carrera

En la Tabla 4.4 podemos observar que la medida de F1 sigue siendo superior como hasta ahora para los nombres que para las demás categorías sintácticas. Además, podemos observar que la media de F1 para las palabras etiquetadas como 'normal' correctamente supera con creces al resto de apartados. Esta medida de F1 en 'normal' incluso supera la correspondiente a la total.El orden de F1 de este algoritmo en orden decreciente es de primero el apartado 'normal', a continuación el 'total' y después 'silver' seguido por 'gold'.

57

Tabla 4.4: Pruebas Senseval-3: SSI v.5 a distancia 3 con relaciones 'gloss'

4. Pruebas Proyecto Fin de Carrera

Este último algoritmo reflejado en la Tabla 4.5 incrementa en todos los apartados el valor de F1 con respecto al anterior. En éste, sin embargo, el valor de F1 del apartado 'silver' supera ligeramente al apartado 'normal' quedando en primera posición. Cabe destacar que el valor de la F1 en el apartado total es de 77,42 lo cual es una medida muy alta:

58

Tabla 4.5: Pruebas Senseval-3: SSI v.4b a distancia 2 con relaciones 'gloss'

Sistema Precisión Recall Intentos F1

TALP (pre XWN) 68,62% 68,27% 99,49% 68,45

TALP (pre TALP) 57,37% 55,77% 97,22% 56,56

OntoLearn (Navigli) 66,77% 66,69% 99,87% 66,73

SSI v4b 90,47% 64,37% 71,15% 77,42

Tabla 4.6: Comparativa de los resultados de Senseval-3 y el SSI v.4b

4.2. Senseval Proyecto Fin de Carrera

En la Tabla 4.6 se hace una comparativa entre los resultados de algunos sistemas presentados en la Senseval-3 y el algoritmo desarrollado como parte de este proyecto, SSI v4b. Los dos primeros sistemas son parte del proyecto de tesis [Castillo et al., 2004]. El tercero pertenece a Roverto Navigli de la Universidad de Roma [Navigli et al., 2005].

59

5. Gestión Proyecto Fin de Carrera

Capítulo 5. Gestión

5.1 Esfuerzo Planificado vs. Esfuerzo RealLos siguientes tiempos corresponden a la estimación inicial y a la duración real definitiva

de las tareas registradas en la planificación temporal, pero representado desde el punto de vista del EDT.

Tal y como se aprecia en la Figura 5.1, las actividades mayoritarias del proyecto son la dirección del proyecto, el estudio de material y el propio desarrollo de los algoritmos SSI, seguido del apartado de evaluación y pruebas.

60

Figura 5.1: Distribución del Trabajo Planificado

5.1. Esfuerzo Planificado vs. Esfuerzo Real Proyecto Fin de Carrera

En la Figura 5.2 comprobamos sin embargo, que el desarrollo de los algoritmos ha tomado más tiempo del que se pensaba, posiblemente debido a la reorientación del método de ejecución que se dio en la tarea número 13 del plan de trabajo, al decidir usar BoostGraph, de forma que esta fase se convierte en mayoritaria en el proyecto en la práctica.

También se aprecia incremento sustancial en la fase de estudio del material sobre lo estimado, ligeramente en la fase de dirección de proyecto, pero sobre todo en la fase de

61

Figura 5.2: Distribución Real del Trabajo Realizado

Figura 5.3: Comparativa Trabajo Real vs. Trabajo Planificado

5. Gestión Proyecto Fin de Carrera

evaluación y pruebas (ver Figura 5.3), en donde el tratamiento para Senseval incrementó el trabajo muy por encima de lo que se pensó en un primer momento.El tiempo que se expone a continuación no es una medida real, ya que aunque la mayoría del tiempo se estaba trabajando en varias tareas a la vez, dicho tiempo sólo ha pasado una vez. Sin embargo nos proporciona un punto de referencia bastante exacto para medir la proporción total de horas trabajadas, frente a las planificadas.En total, la carga de trabajo planificada recaía durante un rango de 5022 horas según las especificaciones de la planificación de tareas. El rango de tiempo real para la realización es de 6575 horas. Esto supone un incremento del 23% con respecto a lo esperado. La razón de este incremento se expone en el siguiente sub-apartado.

5.2 Retrasos e imprevistos• Llegada la tarea 13.3 del plan de proyecto, iniciada el 1 de marzo, el equipo 'Acer

Travelmate 4002WLMi' documentado como recurso, sufrió un error en la partición de linux, junto con las demás herramientas instaladas. Un día después, la partición linux fue actualizada a Ubuntu-Edgy (véase 3.4) y los archivos relativos al proyecto fueron recuperados gracias a las copias de respaldo existentes, siguiendo el protocolo de actuación dictado en el Plan de Dirección de Riesgos (véase Tabla 2.1). El balance de daños resultó en 2 días de retraso imprevisto.

• Durante la tarea 14.5.2 que trata sobre la recopilación de las relaciones de XWN 2.0, la tarea se alargó debido a dificultades imprevistas y tareas de programación adicionales a las que se habían contemplado. Las limitaciones del equipo que se usó para realizar el procesado de los datos ralentizó aún más el proceso por encima de lo planificado. Siguiendo el protocolo de actuación dictado en el Plan de Dirección de Riesgos (index nº5 de la Tabla 2.1), se amplió el horario de trabajo, se avisó del progreso al tutor y se intentaron replanificar los tiempos de duración de la tarea. El balance de daños resultó de 10 días de retraso imprevisto, sobre los 10 inicialmente pensado para el formateo de los datos de XWN 2.0 y de otros 12 días de retraso sobre los 4 días planeados para la ejecución de las pruebas.

5.3 Balance de éxitoAl objetivo primario (véase 2.1.1):

- Idear, diseñar, implementar y evaluar algoritmos de desambiguación automática (WSD) basándonos en el algoritmo SSI de [Navigli & Velardi 2004]. Utilizar para este fin la información contenida en la base de datos MCR del proyecto Meaning y el módulo de acceso a ésta, MCRQuery desarrollado también por Meaning en lenguaje Perl.El trabajo realizado ha permitido cubrir exitosamente las fases de idear, diseñar e implementar los algoritmos, sin embargo no se ha conseguido terminar totalmente el apartado de pruebas Senseval para todos los algoritmos, debido a limitaciones tácticas.Por todo ello el porcentaje estimado de éxito se va a fijar en un 80%.

Al objetivo secundario (véase 2.1.2):- Añadir funcionalidad al MCRQuery si las necesidades de nuestros algoritmos así lo requiriesen.

62

5.3. Balance de éxito Proyecto Fin de Carrera

El trabajo realizado ha permitido concluir exitosamente esta tarea. Por ello, el porcentaje de éxito de esta parte es del 100%.

Al objetivo secundario:- Optimizar el acceso a las bases de datos programando procedimientos almacenados de los que luego hará uso nuestra colección de algoritmos.El trabajo realizado ha permitido concluir exitosamente esta tarea. Por ello, el porcentaje de éxito de esta parte es del 100%.

Al objetivo secundario:- Desarrollar una funcionalidad adicional para nuestros algoritmos, que nos permita obtener de forma visual el grafo obtenido en el proceso de desambiguación.El trabajo realizado ha permitido concluir exitosamente esta tarea. Por ello, el porcentaje de éxito de esta parte es del 100%.Teniendo en cuenta todos estos datos, el porcentaje de éxito estimado del proyecto es del 90%.

63

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Capítulo 6. Conclusiones

En este proyecto se ha presentado un método para la resolución de la ambigüedad semántica basada en el conocimiento. Para abordar el proyecto se han ideado, diseñado e implementado varias posibilidades de tratamiento del problema, todas basadas fundamentalmente en los algoritmos de interconexión semántica estructural propuestos por [Navigli & Velardi 2004]. Del trabajo realizado se extraen ciertas conclusiones connaturales a la tarea, y sobretodo, a los resultados de las pruebas llevadas a cabo:

● El estudio de la documentación relacionada con el proyecto es una fase importante. Para comprender el entorno en el que nos movemos y hacer un trabajo eficiente, es necesario una fase de estudio sólida.

● Uno de los factores que más influye en la ejecución de estos algoritmos es la distancia a la que se buscan relaciones entre conceptos, o más concretamente el número de saltos que hay que dar de concepto en concepto para establecer la cercanía entre dos conceptos determinados en una red semántica. Sin embargo, ¿en qué medida beneficia conceder a un algoritmo una distancia de búsqueda más alta o más baja en términos de precisión o recall? ¿es posible que aumentar este campo, se añadan relaciones no deseables y se entorpezca la labor de desambiguación? La respuesta es que una correcta gestión de los pesos dados a las relaciones evita que el aumento de dichas relaciones entorpezca la desambiguación. Por otro lado, el aumento de la distancia también conlleva un aumento de uso de los recursos, por que la siguiente pregunta sería: ¿es asumible el coste con respecto a la mejora de los resultados? y para esta pregunta, la respuesta la da la práctica más que la teoría.

● Al tratar con redes semánticas jerárquicas, aparece un nuevo concepto determinante además de la distancia entre nodos: la altura o distancia a la raíz. De este modo, un término alejado de la raíz es más concreto que otro más cercano. Una línea de trabajo futura puede pasar por contemplar no sólo cuál es el tipo de las relaciones que unen los conceptos del grafo sino también a qué altura se describe la trayectoria de caminos que interrelacionan los conceptos.

● Durante el desarrollo de los grafos que dan soporte a los algoritmos, surgió un problema de incompatibilidad. Dicho problema causaba una pérdida de relaciones entre conceptos, debido a que algunos de dichos conceptos no eran reconocidos, por lo tanto no se podía añadir las relaciones que los involucraban. Para solventar este problema se comenzó una fase de refinamiento en las consultas, para tratar de facilitar el reconocimiento de estos

65

6. Conclusiones Proyecto Fin de Carrera

'nodos perdidos'. Pero, ¿cuándo considerar un refinamiento lo suficientemente satisfactorio? En ocasiones ocurre que, un 1% de mejora supone un 80% de tiempo invertido y esto puede llegar a no ser deseable. El tiempo es otro recurso más y por lo tanto, tiene que ser gestionado y repartido con tino, como todos los demás recursos. Nunca hay que caer en una situación en la que los gastos superen a los beneficios.

● Las pruebas efectuadas indican unos buenos resultados en lo que se refiere a precisión, aunque el número de intentos de desambiguación son bajos. Esto significa que en caso de duda, los algoritmos prefieren no arriesgarse a fallar.

● Las limitaciones de procesamiento de la máquina y el tiempo de la ejecución son un obstáculo importante. Esta reflexión nos sugiere que puede ser útil enfocar parte del trabajo a labores de optimización del código.

● Las herramientas con licencia 'open-source', al igual que ocurre en otros tantos campos de la informática, cubren sin problemas las necesidades de desarrollo de un trabajo de este área. En ocasiones se han encontrado ventajas con respecto a alternativas de software propietario, como es el caso de OpenOffice y su gestión de las referencias a capítulos en los encabezados.

● Para concluir, los objetivos prácticos que la WSD podría resolver en teoría, son indudablemente útiles. Sin embargo falta camino por recorrer. El desarrollo de ideas nuevas, el cambio de enfoque o del punto de vista al que someter el problema, sin duda propiciarán el aumento de efectividad en los resultados. No hay que olvidar que una idea sencilla podría desbancar a los desarrollos más enrevesados.

66

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Bibliografía

Atserias, Jordi, Villarejo, Luis, Rigau, Germán, Agirre, Eneko, Carroll, John, Magnini, Bernardo & Vossen, Piek [2004] The MEANING Multilingual Central Repository, Proceedings of GWC, Brno, República Checa.

Araúzo Azofra, Antonio, Cubero Atienza, Antonio J. & Salas Morera, Lorenzo [2006] Proyectos Fin de Carrera y Software Libre

Castillo Valdés, Mauro [2004] Adquisición Automática de Conocimiento Léxico con WordNet, Tesis Doctoral, Departament de Llenguatges i Sistemes Informàtics, Universitat Politècnica de Catalunya.

Chugur, Irina [2007] Proximidad Semántica a través de Relaciones entre Sentidos: Enriquecimiento de Redes Léxico-Semánticas, Tesis Doctoral, Facultad de Filosofía, Universidad Nacional de Educación a Distancia.

Ciaramita, Massimiliano & Altun, Yasemin [2006] Broad-Coverage Disambiguation and Information Extraction with a Supersense Sequence Tagger

Díaz Labrador, JosuKa [2006] La memoria del proyecto fin de carrera en OpenOffice.org: how-to & why-to, Universidad de Deusto.

Edmonds, Philip & Kilgarriff, Adam [2002] Introduction to the Special Issue on Evaluating Word Sense Disambiguation Systems, Cambridge University Press.

Fellbaum, C. [1998]. WordNet. An Electronic Lexical Database, The MIT Press.Gallego, Héctor [2007] Distancia Conceptual, Proyecto Fin de Carrera, Facultad de Informática

de San Sebastián, Universidad del País Vasco.Ide, Nancy & Véronis, Jean [1998] Word Sense Disambiguation: The State of the ArtLitkowski, Kenneth C. [2004] SENSEVAL-3 Task. Word-Sense Disambiguation of WordNet

Glosses, Senseval-3: Third International Workshop on the Evaluation of Systems for the Semantic Analysis of Text, Barcelona, Spain.

Mauro Castillo, Francis Real, Jordi Atserias & German Rigau [2006] The TALP Systems for Disambiguating WordNet Glosses

Mihalcea, Rada [...] Short Perl Tutorial, University of Antwerp.

67

Bibliografía Proyecto Fin de Carrera

Miller, George A., Beckwith, Richard, Fellbaum, Christiane, Gross, Derek & Miller, Katherine [1993] Introducción to WordNet: An On-line Lexical Database, The MIT Press.

Navigli, Roberto & Velardi, Paola [2004] Learning Domain Ontologies from Document Warehouses and Dedicated Web Sites, Universita di Roma “La Sapienza”.

Navigli, Roberto & Velardi, Paola [2005] Structural Semantic Interconnections: A Knowledge-Based Approach to Word Sense Disambiguation, IEEE Transactions on Pattern Analysis and Machine Intelligence, (PAMI), 27 (7), 1063–1074.

Pedersen, Ted & Mihalcea, Rada [2005] Advances in Word Sense Disambiguation, Tutorial at ACL 2005.

Rigau, Germán [2007] Multilingual Knowledge Resources for wide-coverage Semantic Processing

Vossen, P. [1998] EuroWordNet: A Multilingual Database with Lexical Semantic Networks, Kluver Academic Publishers.

Word Sense Disambiguation - Book Website [online]. URL=http://www.wsdbook.org/.

Free Software Foundation [online]. URL: http://www.fsf.org/.Barrapunto - ¿Qué es la Web Semántica? [online].

URL=http://barrapunto.com/articles/07/05/09/1549231.shtml.

68

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Anexo A. Instalación de MySQL &

PhpMyAdmin

Este documento describe paso a paso el procedimiento a seguir para instalar el conjunto de herramientas MySQL-PhpMyAdmin en una máquina con Ubuntu 6.10. De este modo tenemos un registro de procedimiento y cambios; las decisiones de configuración en nuestra máquina concreta y otros datos que tal vez tengamos que utilizar en el futuro. Además servirá como un documento de soporte para la re-instalación en caso de que ocurra un desastre en nuestro sistema, tal y como recoge el Plan de Dirección de Riesgos.

A.1 Datos de acceso

URL: http://127.0.0.1/phpmyadminlogin: rootpassword: sobresaliente

A.2 Instalación

Primero vamos con MySQL. Con la siguiente instrucción instalaremos la versión 4.1 del paquete mysql-server de los repositorios oficiales de Ubuntu, por medio de APT (utilizando por supuesto privilegios de superusuario):krtx@metaBrain:~$ sudo aptitude install mysql-server-4.1

Cambiamos la contraseña del servidor, porque por defecto se instala con la password en blanco. Para ello utilizamos el comando 'mysqladmin', con privilegios de superusuario. El flag 'u' nos servirá para referirnos a un usuario distinto al que se ha identificado en el intérprete de comandos, en este caso, root:krtx@metaBrain:~$ sudo /usr/bin/mysqladmin -u root password sobresaliente

69

A. Instalación de MySQL & PhpMyAdmin Proyecto Fin de Carrera

Luego vamos con Apache y PHP5. Estas dos herramientas nos serán necesarias para acceder a la base de datos por medio de un servidor web. Apache es precisamente ése servidor web y php5 permitirá a nuestro sistema reconocer instrucciones en ese lenguaje. Con una sencilla línea de comando para cada herramienta, quedarán instalados del mismo modo que con el paquete myqsl-server:krtx@metaBrain:~$ sudo aptitude install apache2

krtx@metaBrain:~$ sudo aptitude install php5

una vez hecho ésto, instalamos los archivos necesarios para que MySQL soporte php5 y apache:krtx@metaBrain:~$ sudo aptitude install libapache2-mod-auth-mysql

krtx@metaBrain:~$ sudo aptitude install php5-mysql

y reiniciamos el servicio de apache para que los cambios en el servidor sean reconocidos. El método es lanzar la instrucción apache2 (que por defecto el gestor de paquetes instala en la ruta /etc/init.d/ para que sea lanzado al iniciar el sistema operativo) pasándole el parámetro 'restart':krtx@metaBrain:~$ sudo /etc/init.d/apache2 restart

Ahora sólo queda instalar PhpMyAdmin. Para ello, recurrimos de nuevo a la herramienta apt (aptitude):krtx@metaBrain:~$ sudo aptitude install phpmyadmin

creamos un fichero de configuración y le añadimos una configuración estándar para poder arrancar:krtx@metaBrain:~$ sudo echo \<\?php\ phpinfo\(\)\;\ \?\> > /var/www/index.php

Y finalmente volvemos a reiniciar el servidor apache:krtx@metaBrain:~$ sudo /etc/init.d/apache2 restart

Para comprobar que nuestro servidor esta corriendo correctamente, lanzamos el comando firefox y accedemos a la dirección del servidor. Una vez allí nos identificaremos con nuestro login y password:krtx@metaBrain:~$ firefox http://127.0.0.1/phpmyadmin

De este modo, hemos instalado todo el soporte para la base de datos añadiendo únicamente cinco paquetes de software al sistema desde los repositorios. Si quisiéramos eliminar esta instalación junto con los archivos de configuración, bastaría con lanzar los siguientes comandos:krtx@metaBrain:~$ sudo /etc/init.d/apache2 stop

krtx@metaBrain:~$ sudo apt-get remove purge libapache2-mod-auth-mysql php5-mysql php5 apache2 mysql-server-4.1

70

A.2. Instalación Proyecto Fin de Carrera

La siguiente tarea que queda es la de importar el dump de datos del CD del MCR en nuestro nuevo servidor, sin embargo desde la herramienta phmyadmin no nos es posible importar documentos tan grandes, por lo que tendremos que arreglárnoslas en modo texto, como hasta ahora. Primero escribimos:krtx@metaBrain:~$ sudo mysql -u root -p mcr3

con ello, llamaremos al servidor mysql para solicitar una conexión como usuario root. Nos pedirá la password de usuario; la escribimos y de plano se abre la consola de mysql. Desde aquí, nos aseguraremos de que vamos a volcar los datos en una BD nueva llamada mcr3:mysql> use mcr3

se nos devuelve un mensaje de confirmación 'Database changed'. Ahora, con una última instrucción le indicamos dónde está el archivo que quiero abrir (que en este caso es la unidad de cd-rom predeterminada) y de este modo se ejecuta cada sentencia SQL hasta terminarlo de un sólo tirón:mysql> source /media/cdrom0/mcr3.db

71

B. Creando el Grafo WN2.0+XWN2.0 para Boost::Graph Proyecto Fin de Carrera

Anexo B. Creando el Grafo

WN2.0+XWN2.0 para Boost::Graph

En este documento se describe el proceso que se ha llevado para construir un grafo para Boost::Graph con información actualizada a su versión 2.0 de las relaciones entre términos de la base de datos WordNet, además de las relaciones adicionales de tipo gloss que aporta eXtended WordNet 2.0.

B.1 Paso Uno: Las relaciones de WordNet 2.0Para conseguir las relaciones de WordNet, vamos a emplear la información almacenada

sobre ella en el MCR. WordNet 2.0 contiene 115424 synsets, con lo que a lo que nos enfrentamos es a la construcción de un grafo de grandes proporciones. Crearemos un script en Perl que extraiga del MCR las relaciones de WordNet y las devuelva en un archivo de texto '.all' con el siguiente formato:[synset origen]-[PoS origen] [synset destino]-[PoS destino] [tipo de relación] en20

Extracto de WN20.all a modo de ejemplo:00029305-n 02214505-a 1 en20

00029305-n 02215747-a 1 en20

00793468-n 01158470-a 1 en20

00793468-n 01158720-a 1 en20

01028287-n 00455926-a 1 en20

01028287-n 00457456-a 1 en20

01147950-n 00200011-a 1 en20

01147950-n 00200528-a 1 en20

04441416-n 00909823-a 1 en20

04441665-n 00910328-a 1 en20

04442288-n 01304035-a 1 en20

04443352-n 01092207-a 1 en20

72

B.1. Paso Uno: Las relaciones de WordNet 2.0 Proyecto Fin de Carrera

04443352-n 01092938-a 1 en20

04443833-n 02475274-a 1 en20

El script es el siguiente:#!/usr/bin/perluse strict;use DBI;use Boost::Graph;my @list;my $db = DBI->connect("DBI:mysql:database=mcr3;host=localhost", "root", "sobresaliente");open (OUT, "> WN20.all") or die "\nUnable to create the answer key file \"WN20.all\"\n";my $query = "SELECT `sourceSynset`, `sourcePos`, `targetSynset`, `targetPos`, `relation` FROM `wei_en20_relation` WHERE 1";my $st = $db->prepare($query);$st->execute();while (my $r = $st->fetchrow_hashref()) {

print OUT $r->{sourceSynset}."-".$r->{sourcePos}." ".$r->{targetSynset}."-".$r->{targetPos}." ".$r->{relation}." en20\n";}

Una vez conseguido el archivo WN20.all, el siguiente paso es invocar las rutinas de Boost::Graph para construir el grafo a partir de la información de este archivo. Para ello, escribimos otro sencillo script en Perl:#!/usr/bin/perluse strict;use DBI;use Boost::Graph;my $g;sub LoadGraph {

my $f = $_[0];open ALL, "/home/krtx/pfc/WN2.0/$f |" or die "Can't open $f\n";$g = new Boost::Graph(directed => 0);my $c = 0;while (my $line=<ALL>){

chomp($line);my ($s, $t, $r, $source);$line =~ s/(.{10}) (.{10}) (..) (.+)/$s=$1;$t=$2;$r=$3;$source=$4/e;if (($source ne "sc") and ($source ne "su") and ($source ne "ek")) {

unless ($g->has_edge(node1=>$s, node2=>$t)) {$g->add_edge(node1=>$s, node2=>$t);$c = $c + 1;}

}};

73

B. Creando el Grafo WN2.0+XWN2.0 para Boost::Graph Proyecto Fin de Carrera

print "Total edges: $c\n";close ALL;

}sub WriteGraph {

my $GF = $_[0];$g->serialize_graph( $GF );

}print "Loading Graph from file ...\n";&LoadGraph("WN20.all");print "Writing Graph to file ...\n";&WriteGraph("WN20.graph");print "Task Done! ...\n";

La ejecución de este último comando será como sigue:krtx@metaBrain:~$ ./getGraph.pl

Loading Graph from file ...

Writing Graph to file ...

Task Done! ...

Gracias a ésto, ya tenemos una primera versión del grafo con todas las relaciones de WordNet 2.0. Ahora hay que pensar en añadir las relaciones de eXtended WordNet.

B.2 Paso Dos: Las relaciones de Extended WordNet 2.0Añadir las relaciones 'gloss' que proporciona eXtended WordNet no va a ser una tarea

fácil. Por un lado, dichas relaciones no se encuentran en el MCR. Para conseguirlas, es necesario descargar la información de internet. Por otro lado, la información esta almacenada en un formato diseñado en XML, en archivos separados para nombres, verbos, adjetivos y adverbios. Para conseguir extraer esta información creamos una hoja de estilo XSLT que transforme esta información en una página html sencilla:<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><html><head><title> TRANSFORMACIÓN </title><style type="text/css">

body { font-size: smaller }div, img { border: 0px; margin: 0px; padding: 0px }div.Node * { vertical-align: middle }

</style>

74

B.2. Paso Dos: Las relaciones de Extended WordNet 2.0 Proyecto Fin de Carrera

</head><body><xsl:for-each select="/glosses/gloss">

<xsl:for-each select="./wsd/wf[@quality]"><xsl:value-of select="../../@synsetID"/><xsl:choose>

<xsl:when test="../../@pos='NOUN'">n</xsl:when><xsl:when test="../../@pos='VERB'">v</xsl:when><xsl:when test="../../@pos='ADJ'">a</xsl:when><xsl:when test="../../@pos='ADV'">r</xsl:when>

</xsl:choose>#<xsl:value-of select="@lemma"/><xsl:choose>

<xsl:when test="@pos='NN' or @pos='NNS' or @pos='NNP' or @pos='NNPS'">

n</xsl:when><xsl:when test="@pos='VB' or @pos='VBD' or @pos='VBG' or @pos='VBN'

or @pos='VBP' or @pos='VBZ'">v</xsl:when><xsl:when test="@pos='JJ' or @pos='JJR' or @pos='JJS'">a</xsl:when><xsl:when test="@pos='RB' or @pos='RBR' or @pos='RBS'">r</xsl:when>

</xsl:choose><xsl:value-of select="@wnsn"/><BR/>

</xsl:for-each><BR/>

</xsl:for-each></body>

75

B. Creando el Grafo WN2.0+XWN2.0 para Boost::Graph Proyecto Fin de Carrera

</html></xsl:template></xsl:stylesheet>

La información que devuelve esta hoja de estilo tiene este formato:[synset origen] [PoS origen] # [lemma] [sentido]

Ejemplo de glosa formateada de total.gloss:00001740 a # usually r 100001740 a # follow v 100001740 a # have v 100001740 a # necessary a 100001740 a # means n 100001740 a # skill n 200001740 a # know-how n 100001740 a # authority n 100001740 a # do v 300001740 a # something n 1

La última fase es la más complicada del proceso, ya que a la hora de consultar los términos que hemos extraído con lemma y sentido, no siempre conseguimos una identificación exitosa. La razones para no encontrar un synset determinado pueden ser varias. Lo más común es que alguno de los términos que se consultaban necesitaban alguna letra en mayúsculas, y nuestra fuente de datos nos daba todos los términos en minúsculas. Sin embargo en una pequeña minoría de casos, un término sencillamente no se encontraba en la base de datos.El script que devuelve un archivo de texto 'all' similar al que hemos visto en el paso uno para WordNet va a realizar una serie de refinamientos sucesivos en las consultas hasta conseguir que el número de términos que perdemos sea mínimo. El resultado de este proceso es que de 607260 palabras para consultar, 1236 no han sido posible de identificarlas en WordNet porque sus synset (offset-pos) no eran encontradas en la base de datos. El porcentaje de pérdidas es del 0,2035372 %A continuación el script:

76

B.2. Paso Dos: Las relaciones de Extended WordNet 2.0 Proyecto Fin de Carrera

#!/usr/bin/perl -w

use strict;

use DBI;

use Boost::Graph;

my $db = DBI->connect("DBI:mysql:database=mcr3;host=localhost", "root", "sobresaliente");

my $t;

my $line = "";

my @list;

my $count=0;

sub SynsetsSenses {

my $w = $_[0];

my $p = $_[1];

my $sense = $_[2];

my $s;

my $query = "SELECT * FROM `wei_en20_variant` WHERE `word` LIKE CONVERT(_utf8 '$w' USING latin1) COLLATE latin1_bin AND `pos` = '$p' AND `sense` = '$sense'";

my $st = $db->prepare($query);

$st->execute();

my $r = $st->fetchrow_hashref();

if (defined $r){

$s = $r->{offset}."-".$p;

} else {

$s = "";

}

return $s;

}

open (GLOSS, "< total.gloss") or die "\nUnable to open the source file \"total.gloss\"\n";

open (OUT, "> total.all") or die "\nUnable to create the target file \"total.all\"\n";

my $counter = 0;

while($line = <GLOSS>){

chomp $line;

$counter ++;

@list = split / /, $line;

$list[3] =~ s/\'/\'\'/;

$t = &SynsetsSenses($list[3], $list[4], $list[5]);

if ($t ne ""){

print OUT $list[0]."-".$list[1]." ".$t." 69 xn\n";

} else { # fase de refinamiento

# refinamiento para la 's' del final

my $singular = $list[3];

77

B. Creando el Grafo WN2.0+XWN2.0 para Boost::Graph Proyecto Fin de Carrera

my $letter = chop($singular);

$t = &SynsetsSenses($singular, $list[4], $list[5]);

if ($t ne ""){ print OUT $list[0]."-".$list[1]." ".$t." 69 xn\n"; next; }

# refinamiento para mayúsculas al principio

my $word = ucfirst($list[3]);

$t = &SynsetsSenses($word, $list[4], $list[5]);

if ($t ne ""){ print OUT $list[0]."-".$list[1]." ".$t." 69 xn\n"; next; }

# refinamiento para el término especial 'pH'

if ($list[3] eq "ph"){

$t = &SynsetsSenses("pH", $list[4], $list[5]);

if ($t ne ""){ print OUT $list[0]."-".$list[1]." ".$t." 69 xn\n"; next; }

}

# refinamiento para palabras con guión

my @guion = split /_/, $list[3];

if (@guion > 1) {

for (my $i=0;$i<@guion;$i++){

unless ($guion[$i] eq "of" or $guion[$i] eq "the" or $guion[$i] eq "a" or $guion[$i] eq "and" or $guion[$i] eq "de" or $guion[$i] eq "on" or $guion[$i] eq "al" or $guion[$i] eq "at" or

$guion[$i] eq "family" or $guion[$i] eq "order" or $guion[$i] eq "genus" or $guion[$i] eq "class" or $guion[$i] eq "phylum" or $guion[$i] eq "division" or

$guion[$i] eq "subfamily" or $guion[$i] eq "suborder" or $guion[$i] eq "subgenus" or $guion[$i] eq "subclass" or $guion[$i] eq "subphylum" or $guion[$i] eq "subdivision" or

$guion[$i] eq "western" or $guion[$i] eq "eastern" or $guion[$i] eq "northern" or $guion[$i] eq "southern" or

$guion[$i] eq "southwestern" or $guion[$i] eq "southeastern" or $guion[$i] eq "northwestern" or $guion[$i] eq "northeastern") {

$guion[$i] = ucfirst($guion[$i]);

}

# voy a tratar aquí los números romanos

my $romans = $guion[$i];

$romans =~ tr/vicxVICX//d;

if ($romans eq "") {

$romans = $guion[$i];

$romans =~ tr/[a-z]/[A-Z]/;

$guion[$i] = $romans;

print "Ahora ".$guion[$i]." está en mayúsculas porque es un número romano\n";

78

B.2. Paso Dos: Las relaciones de Extended WordNet 2.0 Proyecto Fin de Carrera

}

}

$word = join "_", @guion;

$t = &SynsetsSenses($word, $list[4], $list[5]);

if ($t ne ""){ print OUT $list[0]."-".$list[1]." ".$t." 69 xn\n"; next; }

}

# refinamiento para iniciales (todas las letras en mayúsculas)

my $initials = $list[3];

$initials =~ tr/[a-z]/[A-Z]/;

$t = &SynsetsSenses($initials, $list[4], $list[5]);

if ($t ne ""){ print OUT $list[0]."-".$list[1]." ".$t." 69 xn\n"; next; }

# rama para mostrar los términos infructuosos

print "The seek in line ".$counter." is failed for ".$list[3]." ".$list[4]." ".$list[5]." \n";

$count++;

}

}

print "Not formatted ".$count." words from the gloss.\n";

close GLOSS;

close OUT;

B.3 Paso Tres: Uniendo WN2.0 y XWN2.0Ya tenemos WN20.all producido en el paso uno y XWN20.all producido en el paso dos.

Con una instrucción en consola, podemos juntar los dos en un archivo total.all. El archivo resultante nos permitirá crear un grafo con 809450, lo cual reafirma el hecho de que estamos construyendo un grafo de proporciones muy elevadas:krtx@metaBrain:~$ cat WN20.all XWN20.all > total.all

Una vez conseguido el archivo total.all, el siguiente paso es invocar las rutinas de Boost::Graph para construir el grafo a partir de la información de este archivo del mismo modo que se ha explicado en el paso uno; es decir que el script para obtener el archivo '.graph' del paso uno, nos vale para este caso también.

79

C. Recursos del Proyecto Proyecto Fin de Carrera

Anexo C. Recursos del Proyecto

Recursos Personales:– MetaBrain

– Descripción: Portátil Acer Travelmate 4002WLMi.– Notas: Sistema GNU/Linux Ubuntu Dapper 6.06. Incluído el SGBD MySQL con las

funcionalidades de acceso añadidas: phpMyAdmin 4:2.8.1-1~dapper (http://localhost/phpmyadmin/index.php) - mysql-admin 1.1.6-1build1 - mysql-query-browser 1.1.17-5ubuntu3 Base de datos añadida mcr3[Actualización 1 de Marzo]: Sistema GNU/Linux Ubuntu Edgy 6.10 Incluído el SGBD MySQL v.5.0.24 con las funcionalidades de acceso añadidas: - phpMyAdmin 4:2.8.2-0.2 (http://localhost/phpmyadmin/index.php) Base de datos añadida mcr3.

Recursos EHU:– Senseval04-crar.pdf

– Descripción: Artículo SensEval - desambiguación de glosas– Notas: Incluída copia impresa en papel

– BoostGraph.tar.gz– Descripción: Paquete BoostGraph para Perl (ver. EHU)

– ConceptualDistance.tar.gz – Descripción: Paquete ConceptualDistance

– Soria07.pdf– Descripción: Documento curso de verano. Autor: Germán Rigau.

– MCR Query– Descripción: MCR Query v.02– Notas: Adjunto en el correo de Germán con asunto "PFC: SSI". Nombre del archivo:

MCRQuery.v02.tar.gz– Relaciones Seleccionadas

– Descripción: MCR+TSSemcor.all.gz– Notas: Compilación comprimida de relaciones entre synsets, que podemos considerar

bastante claras, para realizar pruebas de un modo más prudente.– CD-ROM MCR v3.0

80

C. Recursos del Proyecto Proyecto Fin de Carrera

– Descripción: Multilingual Central Repository - MySQL Dump– Memoria_Héctor Gallego.doc

– Descripción: PFC de Héctor Gallego sobre distancias conceptuales– SSI.v2.pl

– Descripción: SSI versión 2– Notas: El programita perl que incluye la obtención de los caminos entre un synset y

otro. No es una versión del SSI de Navigli y Velardi final, tan sólo lleva el código necesario para ver el acceso mediante BoostGraph.

– SSI.v3.pl– Descripción: SSI.versión 3– Notas: Una tercera versión del programa que calcula el SSI con MCR. * LoadGraph:

carga de MCR+TSSemcor.all.gz todas las relaciones del MCR. Ahora no incluye las relaciones que vienen de "su" (Preferencias de Selección del BNC) o "sc" (Topic Signatures de SemCor). * ReadGraph: lee de un fichero un grafo binario previamente guardado con WriteGraph. * WriteGraph: escribe en un fichero un grafo en binario. * Paths(s, t, d): función que obtiene todos los caminos entre los synsets s y t hasta un máximo de d arcos. Por ahora he puesto d=2 (dos arcos, tres nodos). Aunque puede parecer poco, resulta que hemos visto que desde un nodo cualquiera (por ejemplo "airport") cualquier otro nodo del grafo (que está totalmente conectado) está a menos de 5 arcos. Además, con d>2 el algortimo se vuelve muy ineficiente...

– Tesis-IrinaChugur.pdf– Descripción: Tesis de Irina Chugur

– InformedeaFINAL.pdf– Descripción: Tesis de Mauro Castillo– Notas: Incluida copia en papel.

Información accesible a través de Internet (e-links):– @Ejemplos de Consulta

– Descripción: http://ixa3.si.ehu.es/cgi-bin/signatureak/signature_lem.cgi– Notas: Esta es una página web en la que puedo consultar al momento palabras para

saber si son o no polisémicas.– @MCR

– Descripción: http://nipadio.lsi.upc.edu/cgi-bin/wei4/public/wei.consult.perl– @WordNetQueryData

– Descripción: http://search.cpan.org/~jrennie/WordNet-QueryData-1.45– @WordNet

– Descripción: http://wordnet.princeton.edu/– @WSD of WordNet Glosses

– Descripción: http://www.clres.com/SensWNDisamb.html– @Perl

– Descripción: http://www.cse.unt.edu/~rada/CSCE5290/Lectures/Perl.Tutorial.ppt– Notas: Tutorial del lenguaje Perl muy didáctico, escrito por Radha Milhacea

– @TedPedersen

81

C. Recursos del Proyecto Proyecto Fin de Carrera

– Descripción: http://www.d.umn.edu/~tpederse– @Artículo con el Pseudocódigo SSI

– Descripción: http://www.dsi.uniroma1.it/~navigli/pubs/CL_2004_Navigli_Velardi.pdf

– @MySQL– Descripción: http://www.guia-ubuntu.org/index.php/MySQL

– @Apache– Descripción: http://www.guia-ubuntu.org/index.php/Servidor_web

– @EuroWordNet– Descripción: http://www.illc.uva.nl/EuroWordNet

– @Meaning– Descripción: http://www.lsi.upc.es/~nlp/meaning/meaning.html

– @UnixForPoets– Descripción: http://www.lsi.upc.es/~rigau/documents/UnixforPoets.ps

– @SensEval– Descripción: http://www.senseval.org

– @Ubuntu– Descripción: http://www.ubuntu.com/

– @eXtendedWordNet– Descripción: http://xwn.hlt.utdallas.edu/

82

C.1. Tabla de asignación de Recursos enfocado al EDT Proyecto Fin de Carrera

C.1 Tabla de asignación de Recursos enfocado al EDT

83

Tabla 6.1: Asignación de los recursos

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Anexo D. GNU GENERAL PUBLIC

LICENSE

Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

PreambleThe licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

85

D. GNU GENERAL PUBLIC LICENSE Proyecto Fin de Carrera

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program

86

D. GNU GENERAL PUBLIC LICENSE Proyecto Fin de Carrera

itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

87

D. GNU GENERAL PUBLIC LICENSE Proyecto Fin de Carrera

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

88

D. GNU GENERAL PUBLIC LICENSE Proyecto Fin de Carrera

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

NO WARRANTY11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New ProgramsIf you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

one line to give the program's name and an idea of what it does.Copyright (C) yyyy name of author

This program is free software; you can redistribute it and/or

89

D. GNU GENERAL PUBLIC LICENSE Proyecto Fin de Carrera

modify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.

You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of authorGnomovision comes with ABSOLUTELY NO WARRANTY; for detailstype `show w'. This is free software, and you are welcometo redistribute it under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyrightinterest in the program `Gnomovision'(which makes passes at compilers) written by James Hacker.

signature of Ty Coon, 1 April 1989Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit

90

D. GNU GENERAL PUBLIC LICENSE Proyecto Fin de Carrera

linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.

91

Desarrollo de un sistema de resolución de la ambigüedad semánticabasada en el conocimiento

Proyecto Fin de Carrera

Atención: no imprimir esta hoja, sirve para escribir el título del proyecto, y que aparezca automáticamente en los encabezamientos. Para ello, escribirlo entre los corchetes.

Título del proyecto:[Desarrollo de un sistema de resolución de la ambigüedad semántica basada en el conocimiento]

93