desarrollo de aplicación web para la desambiguación de...
TRANSCRIPT
TITULACIÓN: Ingeniería técnica en informática de sistemas
Desarrollo de aplicación Web para la desambiguación
de sentidos de palabras por evocación
Alumno/a: D./Dña. Xabier Aramendi Amenabar Director/a: D./Dña. German Rigau Claramunt
Proyecto Fin de Carrera, junio de 2010
1
<Índice PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Índice
Índice ________________________________________________________________ 1
1- Introducción ________________________________________________________ 5
2- Antecedentes _______________________________________________________ 11
2.1- Redes semánticas _____________________________________________________ 112.1.1- WordNet __________________________________________________________________ 122.1.2- EuroWordNet ______________________________________________________________ 152.1.3- Multilingual Central Repository (MCR) __________________________________________ 18
2.2- Latent Semantic Analysis (LSA) ___________________________________________ 212.2.1- Infomap ___________________________________________________________________ 222.2.2- British National Corpus (BNC) _________________________________________________ 23
2.3- Word Sense Disambiguation (WSD) _______________________________________ 242.3.1- SSI-Dijkstra ________________________________________________________________ 24
2.4- Kyoto _______________________________________________________________ 24
3- DOP ______________________________________________________________ 29
3.1- Objetivo _____________________________________________________________ 29
3.2- Método de trabajo ____________________________________________________ 29
3.3- Alcance _____________________________________________________________ 313.3.1- Recursos humanos __________________________________________________________ 313.3.2- Recursos materiales _________________________________________________________ 313.3.3- Estructura de descomposición del trabajo (EDT) ___________________________________ 323.3.4- PFC (Proyecto fin de carrera) __________________________________________________ 34
3.4- Planificación temporal _________________________________________________ 403.4.1- Diagrama de Gantt __________________________________________________________ 40
3.5- Plan de contingencia ___________________________________________________ 423.5.1- Tabla de riesgos ____________________________________________________________ 423.5.2- Riesgos formativos __________________________________________________________ 433.5.3- Riesgos tácticos _____________________________________________________________ 433.5.4- Riegos operativos ___________________________________________________________ 45
3.6- Análisis de factibilidad _________________________________________________ 45
4- Arquitectura del Sistema _____________________________________________ 47
4.1- Servicio Web _________________________________________________________ 47
2
<Índice PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
4.2- Aplicación Web _______________________________________________________ 52
5- Elección Tecnológica _________________________________________________ 55
5.1- El sistema ____________________________________________________________ 555.1.1- Fedora ____________________________________________________________________ 555.1.2- Apache ___________________________________________________________________ 565.1.3- PHP ______________________________________________________________________ 565.1.4- MySQL ____________________________________________________________________ 57
5.2- Desarrollo ___________________________________________________________ 585.2.1- Dreamweaver ______________________________________________________________ 585.2.2- Photoshop ________________________________________________________________ 595.2.3- Word _____________________________________________________________________ 595.2.4- Visio _____________________________________________________________________ 605.2.5- Excel _____________________________________________________________________ 605.2.6- PowerPoint ________________________________________________________________ 615.2.7- Firebug ___________________________________________________________________ 61
6- Desarrollo de la aplicación Web _______________________________________ 63
6.1- Captura de Requisitos __________________________________________________ 636.1.1- Modelo de Casos de Uso (MCU) _______________________________________________ 636.1.2- Modelo de Dominio (MD) ____________________________________________________ 69
6.2- Análisis ______________________________________________________________ 706.2.1- Registrar usuario ___________________________________________________________ 716.2.2- Consulta __________________________________________________________________ 726.2.3- Identificar _________________________________________________________________ 736.2.4- Gestionar usuario ___________________________________________________________ 746.2.5- Ver resultados _____________________________________________________________ 766.2.6- Consulta registrada _________________________________________________________ 79
6.3- Diseño ______________________________________________________________ 816.3.1- Pseudocódigos _____________________________________________________________ 816.3.2- Tablas de la BD _____________________________________________________________ 85
6.4- Implementación _______________________________________________________ 886.4.1- Infomap __________________________________________________________________ 896.4.2- SSI-Dijkstra ________________________________________________________________ 916.4.3- Detalles técnicos ____________________________________________________________ 93
6.5- Pruebas _____________________________________________________________ 95
6.6- Implantación _________________________________________________________ 96
7- Desarrollo del servicio Web ___________________________________________ 97
7.1- Diseño ______________________________________________________________ 97
7.2- Implementación ______________________________________________________ 100
3
<Índice PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
7.3- Pruebas ____________________________________________________________ 100
7.4- Implantación ________________________________________________________ 100
8- Gestión ___________________________________________________________ 101
8.1- Comparativa por tareas _______________________________________________ 101
8.2- Comparativa entre procesos ____________________________________________ 102
8.3- Comparativa por procesos _____________________________________________ 1028.3.1- Procesos tácticos __________________________________________________________ 1038.3.2- Procesos formativos ________________________________________________________ 1048.3.3- Procesos operativos ________________________________________________________ 105
8.4- Conclusiones de la gestión _____________________________________________ 107
9- Conclusiones ______________________________________________________ 109
9.1- Mejoras ____________________________________________________________ 109
9.2- Valoración personal __________________________________________________ 110
10- Manual de usuario ________________________________________________ 111
10.1- Aplicación Web _____________________________________________________ 11110.1.1- Información general _______________________________________________________ 11110.1.2- Identificar usuario _________________________________________________________ 11210.1.3- Cambiar datos ____________________________________________________________ 11310.1.4- Consulta registrada ________________________________________________________ 11410.1.5- Buscar palabra ___________________________________________________________ 116
10.2- Servicio Web _______________________________________________________ 117
11- Referencias ______________________________________________________ 119
4
<Índice PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
5
1- Introducción PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
1- Introducción
Este proyecto se enmarca dentro del área de investigación de la Inteligencia
Artificial (IA), y más concretamente en el del Procesamiento del Lenguaje Natural1
La desambiguación de sentidos de las palabras (WSD: Word Sense
Disambiguation
(PLN).
2
Hasta el momento, todos los métodos de WSD usan el contexto de la palabra a
desambiguar (Aguirre & Edwars 2007, 2007).En este proyecto de final de carrera,
proponemos un método de WSD sin contexto. La obtención del contexto se realiza por
evocación de las propias palabras a desambiguar.
) es tradicionalmente considerado uno de los problemas complejos de
la PLN. Un avance en este campo tendría un significante impacto en muchas
aplicaciones basadas en la web, como por ejemplo la recuperación de información de la
web, un mejor acceso a los servicios web, extracción de información, etc.
Existen diferentes aplicaciones que tratan de dar una solución al problema de la
desambiguación de palabras, en este proyecto nos centraremos en dos de estas
aplicaciones: Infomap y SSI-Dijkstra, y desarrollaremos una aplicación web que las
integre en una misma plataforma.
Infomap es un programa que se basa en el Análisis Semántico Latente (Latent
Semantic Analysis). Usando esta técnica es capaz de extraer términos de un gran
corpus, en este caso del British National Corpus3
1 http://es.wikipedia.org/wiki/Procesamiento_de_lenguajes_naturales
(BNC), estos términos que se
producen están semánticamente relacionados con las palabras consultadas por el
usuario.
2 http://en.wikipedia.org/wiki/Word_sense_disambiguation 3 http://www.natcorp.ox.ac.uk/corpus/index.xml
6
1- Introducción PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Latent Semantic Analysis4
BNC es una colección de textos tanto escritas como habladas de 100 millones de
palabras provenientes de diferentes fuentes, diseñada para representar una amplia
sección de Inglés Británico de la última parte del siglo XX, tanto hablada como escrita.
(LSA) es un método matemático usado en el
procesamiento del lenguaje natural, que sirve para extraer y deducir relaciones entre los
diferentes términos de un conjunto de documentos, produciendo una serie de conceptos
relacionados con los términos y los documentos.
El software SSI-Dijkstra es un método iterativo que usa una base de
conocimiento para la desambiguación de la las palabras (WSD: Word Sense
Disambiguation).
Para ver el funcionamiento de la aplicación Web, vamos a proponer un ejemplo.
En el ejemplo, el usuario quiere descubrir los conceptos evocados por un término. En
concreto el usuario quiere averiguar los conceptos relacionados con el término, “bird
migration”. Para ello, nuestra aplicación procederá en dos pasos. En el primer paso,
Infomap indexado sobre el BNC, obtendrá las palabras semánticamente más
relacionados con el término propuesto. En el segundo paso, el sistema SSI-Dijkstra
tratará de encontrar los conceptos que subyacen a los términos propuestos por Infomap.
El usuario introduce las palabras especificando para cada una de ellas, su
categoría morfosintáctica, y especificando cuantas palabras relacionadas quiere obtener.
Bird (Nombre) Migration (Nombre)
Mediante Infomap, la aplicación Web obtendrá una serie de palabras
semánticamente relacionadas con las palabras introducidas. En nuestro ejemplo
queremos obtener las 10 palabras más relacionadas a las dos palabras iniciales. El
resultado se muestra en la tabla 1. 4 http://en.wikipedia.org/wiki/Latent_semantic_analysis
7
1- Introducción PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Orden Palabra Tipo Peso 1 temperate Adjetivo 0.856035 2 bird Nombre 0.801014 3 migration Nombre 0.801014 4 grassland Nombre 0.800469 5 starling Nombre 0.795823 6 wild Adjetivo 0.795005 7 breeding Adjetivo 0.792956 8 fauna Nombre 0.790708 9 tropic Nombre 0.789682
10 mammal Nombre 0.785469
Tabla 1: Resultado de la evocación mediante Infomap.
Infomap obtiene una lista de palabras semánticamente relacionados con el
término buscado. Estas palabras están ordenadas dependiendo de un peso que indica el
grado de relación. Este peso es un número que expresa la fiabilidad de esa palabra
respecto al contexto de las palabras buscadas.
En el resultado de Infomap normalmente aparecen las palabras introducidas,
aunque pueden no aparecer. Puede haber palabras que estén semánticamente más
relacionados con el término, que las propias palabras del término buscado. En este
ejemplo, vemos que la palabra “temperate” tiene mayor peso que las propias palabras
introducidas.
Una vez obtenidos los resultados de Infomap podremos deseleccionar alguna
palabra evocada si vemos que no tiene mucha relación con el contexto en el que
tratemos. Una vez que el usuario está de acuerdo con las palabras evocadas, la
aplicación Web analizara este conjunto de palabras mediante SSI-Dijkstra
proporcionando los conceptos más apropiados según el contexto evocado.
Como una palabra puede tener varios sentidos posibles, dependiendo del
contexto en el que hablemos vamos a obtener unos conceptos u otros. El método de
desambiguación escogido es el SSI-Dijkstra. El método trata de obtener los significados
correctos que corresponden al contexto evocado. Los significados se identifican con un
8
1- Introducción PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
número (identificador de concepto) y el tipo morfosintáctico del que se trata (n: nombre,
a: adjetivo, v: verbo, r: adverbio) que corresponden a un sentido en concreto (o Synset)
de WordNet. Tras la desambiguación del ejemplo que vemos, obtendríamos el resultado
que se muestra en la tabla 2.
Palabra Tipo Synset Significado temperate Adjetivo 02402559-a (of weather or climate) free from extremes; mild; or
characteristic of such weather or climate bird Nombre 01503061-n warm-blooded egg-laying vertebrates characterized
by feathers and forelimbs modified as wings migration Nombre 07312616-n the periodic passage of groups of animals
(especially birds or fishes) from one region to another for feeding or breeding
grassland Nombre 08598301-n land where grass or grasslike vegetation grows and is the dominant form of plant life
starling Nombre 01576695-n gregarious birds native to the Old World wild Adjetivo 02389220-a in a natural state; not tamed or domesticated or
cultivated breeding Adjetivo 01081068-a producing offspring or set aside especially for
producing offspring fauna Nombre 00015388-n a living organism characterized by voluntary
movement tropic Nombre 08675145-n either of two parallels of latitude about 23.5
degrees to the north and south of the equator representing the points farthest north and south at which the sun can shine directly overhead and constituting the boundaries of the Torrid Zone or tropics
mammal Nombre 01861778-n any warm-blooded vertebrate having the skin more or less covered with hair; young are born alive except for the small subclass of monotremes and nourished with milk
Tabla 2: Resultado de la desambiguación mediante SSI-Dijkstra.
El usuario al tener una serie de palabras con sus significados correspondientes,
se podrá hacer una idea de los conceptos que pueden estar relacionados con los términos
iniciales. Puede haber alguna palabra que su significado no corresponda al contexto, por
lo que el usuario tendrá la posibilidad de registrar esa consulta e indicar el significado
incorrecto.
9
1- Introducción PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Al tener registrado las consultas realizadas, posteriormente de podrán analizar
los resultados obtenidos. Estos resultados se podrán utilizar para analizar el
funcionamiento de las aplicaciones utilizadas en la evocación y en la desambiguación
de las palabras. Hay que tener en cuenta, que no se asegura que el usuario haga una
selección apropiada de las palabras incorrectas.
El objetivo de este proyecto es elaborar una aplicación web que proporcione un
interfaz para la utilización de la aplicación Infomap, y para la obtención de las
interpretaciones de las palabras evocadas, mediante la aplicación SSI-Dijkstra.
La aplicación Web gestionará a los usuarios para poder ofrecer información
personalizada. Está información contiene los resultados obtenidos en las consultas
anteriores y el historial de las consultas que hayan realizado.
En esta aplicación Web abra la posibilidad de poder realizar consultas sin que el
usuario esté registrado. También se ofrece información sobre las técnicas de evocación
y desambiguación utilizadas en está aplicación Web.
Además de la aplicación Web, se realizará un servicio Web que ofrecerá usar
conjuntamente la evocación y la desambiguación de las palabras.
10
1- Introducción PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
11
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
2- Antecedentes
Sabemos que la desambiguación de palabras (WSD: Word Sense
Desambiguation) es uno de los problemas complejos de la IA, y que actualmente
existen aplicaciones que tratan de dar solución a este problema, como pueden ser
Infomap o SSI-Dijkstra. Estos programas se apoyan en las redes semánticas para la
extracción del conocimiento.
Para entender bien el marco en el que se desarrolla el proyecto, es necesario
introducir algunos conceptos.
2.1- Redes semánticas
Una red semántica es una forma de representación de conocimiento lingüístico
en la que los conceptos y sus interrelaciones se representan mediante un grafo. Los
conceptos o unidades léxicas se representan mediante los nodos del grafo, y las
interrelaciones que existen entre conceptos serán representadas por las aristas dirigidas
del grafo. En el caso de que no existan ciclos entre conceptos, los grafos también
pueden ser dibujados en forma de árbol.
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.
12
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 1: Ejemplo de red semántica
En la figura 1 podemos ver representada cierto conocimiento acerca de los
mamíferos. En ella identificamos los elementos característicos de las redes semánticas
como los nodos (mamífero, animal, oso, pez,…), las relaciones (es un, tiene, vive en) y
las distancias.
Existen diversos tipos de relaciones semánticas como la sinonimia/antonimia
(relación entre sinónimos), hiponimia/hiperonimia (relación entre subordinados y
superordinados), la meronimia/holonimia (relación entre subconjuntos y conjuntos
globales), entre otras.
Una de las redes semánticas más conocidas es WordNet5
.
2.1.1- WordNet
Desarrollada en la universidad de Princeton, WordNet (Miller et al., 1990) es
una base de datos léxica de dominio general para el inglés que actualmente constituye
uno de los recursos léxicos más utilizados en el área de PLN. WordNet (WN) fue creada
para intentar organizar la información léxica por significados, a diferencia de los
5 http://wordnet.princeton.edu
13
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
diccionarios convencionales, donde esta información está organizada por la forma de las
unidades léxicas.
WN está estructurada como una red semántica cuyos nodos, denominados
synsets (synonym sets, o conjuntos de sinónimos) constituyen su unidad básica de
significado. Cada uno de ellos se compone de un conjunto de las lexicalizaciones que
representan un sentido y se identifica mediante un “offset” (byte) y su correspondiente
PoS (Part-of-Speech); que puede ser (n) para nombres, (v) para verbos, (a) para
adjetivos y (r) para adverbios:
02152053#n fish#1 01926311#v run#1 02545023#a funny#4 00005567#r automatically#1
El número que aparece después de cada palabra indica su número de sentido.
Una palabra puede ser polisémica, esto es, tener varios significados, por ejemplo:
02152053#n fish#1; representa la palabra fish con el sentido de pez como animal vertebrado acuático. 07775375#n fish#2; representa la palabra fish con el sentido de pescado como alimento.
También puede ser que varias palabras tengan el mismo significado, esto es, que
sean sinónimas. En Wordnet están representados en el mismo synset:
02383458#n car#1, autor#1, automobile#1, machine#4, motorcar#1; representa el vehículo de cuatro ruedas.
Todos los synsets incluyen una glosa a modo de definición similar a la del
diccionario tradicional, que describe el significado del concepto de forma explícita. Por
ejemplo:
02383458#n car#1; 4-wheeled motor vehicle; usually propelled by an internal combustion engine: he needs a car to get to work;
14
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Como ya se expuso anteriormente, WordNet está estructurada como una red
semántica. Además de la información que pueden proporcionar los sinónimos
(componentes del synset ) y la glosa, se establecen diferentes relaciones entre los
synsets, por ejemplo:
Hiperonimia: Es el término genérico usado para designar a una clase de
instancias específicas. Y es un hiperonimia de X, si X es una clase de Y.
tree#n#1 HYPERONYM oak#n#2
Hiponimia: Es el término específico usado para designar el miembro de una
clase, X es un hipónimo de Y, si X es una clase de Y. En el caso de los verbos se
denomina Troponimia.
oak#n#2 HYPONYM tree#n#1
Antonimia: Es la relación que enlaza dos sentidos con significados opuestos.
active#a#1 ANTONYM_OF inactive#a#2 inactive#a#2 ANTONYM_OF active#a#1
Meronimia: Es la relación que se define como componente de, substancia de, o
miembro de algo, X es merónimo de Y si X es parte de Y.
car#n#1 HAS_PART window#n#2 milk#n#1 HAS_SUBSTANCE protein#n#1 family#n#1 HAS_MEMBER child#n#2
Holonimia: Es la relación contraria a la meronimia, Y es holónimo de X si X es
una parte de Y.
window#n#2 PART_OF car#n#1 protein#n#1 SUBSTANCE_OF milk#n#1 child#n#2 MEMBER_OF family#n#2
15
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
En la tabla 3, se puede ver las estadísticas de la base de datos WordNet, de la
versión 3.0. Estos datos indican la cantidad de palabras, synsets, sentidos… que tiene
WordNet. Estos datos son del Junio del 2010.
Nombre Verbo Adjetivo Adverbio Total Palabras diferentes 117798 11529 21479 4481 155287 Synsets 82115 13767 18156 3621 117659 Pares de palabra-significado 146312 25047 30002 5580 206941 Palabras y sentidos monosémicas 101863 6277 16503 3748 128391
Palabras polisémicas 15935 5252 4976 733 26896 Sentidos polisémicos 44449 18770 14399 1832 79450 Promedio de polisemia incluyendo palabras monosémicas
1.24 2.17 1.40 1.25 -
Promedio de polisemia excluyendo palabras monosémicas
2.79 3.57 2.71 2.50 -
Tabla 3: Información sobre WordNet.
2.1.2- EuroWordNet
El éxito de Wordnet impulsó la creación de nuevos proyectos similares para
otros idiomas. De éstos el más destacado ha sido EuroWordNet6
Tras la finalización del proyecto EWN, empezaron a desarrollarse wordnets para
idiomas como el catalán, euskera, portugués, griego, búlgaro, ruso, sueco, francés,
(Vossen, 1998).
EuroWordNet (EWN) consiste en una extensión multilingüe de WN, compuesta por
bases de datos léxicas en 8 idiomas europeos. En principio se desarrollo para inglés,
holandés, castellano e italiano.
6 http://www.illc.uva.nl/EuroWordNet
16
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
alemán, etc. Actualmente, la creación de estos wordnets está coordinada por “Global
Wordnet Asociation7
En la figura 2 podemos ver cuál es la arquitectura que usa EuroWordNet, y
como se conectan los WordNets locales de diferentes idiomas a través del Índice
InterLingüa.
”.
InterLingual Index (ILI, del inglés Índice InterLingüa) es un índice general de
conceptos que permite conectar entre sí las unidades consideradas equivalentes en su
significado en bases de datos de lenguas diferentes, permitiendo así pasar de términos
de un idioma a términos de otro.
Cada wordnet local de EWN fue construido de forma independiente con los
recursos disponibles en cada lengua, formando así un conjunto de módulos
independientes. La conexión entre todos estos sistemas autónomos se hizo a través del
Índice Interlingüa.
Cada índice en el ILI es un synset con una etiqueta de categoría sintáctica, una
glosa y la referencia a su origen. Los synsets de cada wordnet particular están enlazados
a algún índice del ILI. De esta forma, EWN proporciona la posibilidad de ir de una
lexicalización de un concepto en una lengua determinada a otra lexicalización de ese
mismo concepto en otra lengua diferente. Por ejemplo, partiendo del verbo español
convertirse a través de su equivalente en el ILI, “to become”, se puede llegar a su
correspondiente en italiano, “diventare”:
convertirse (esp) Eq_Near_Synonym to become (ILI) Eq_Near_Synonym (it) diventare
7 http://www.globalwordnet.org/
17
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 2: Arquitectura de EuroWordNet
En la figura 2 se emplea el sentido drive para mostrar cómo se utilizan los
diferentes tipos de enlaces de EWN. En este caso tenemos cuatro de los wordnets
locales (ingles, holandés, italiano, castellano), para cada uno de ellos existe su
correspondiente synset para el sentido que se está utilizando de ejemplo, en español
sería conducir, en italiano “guidare”, en holandés “rijden” y en inglés “drive”. Estos
synsets se relacionan con otros dentro de sus wordnets mediante enlaces dependientes
del lenguaje (en la figura se identifican con el número romano III), por ejemplo, en el
caso del castellano, conducir estaría conectado mediante este tipo de enlaces con
“transitar”, “cabalgar”,… Por otra parte cada uno de ellos tiene un enlace desde su
lenguaje específico a su correspondiente registro del Índice Interlingüa (número II). De
este modo, al estar los cuatro synsets conectados al mismo registro ILI, podemos saber
que todos representan el mismo sentido. Además, existe otro tipo de enlace
independiente del lenguaje (número I) desde este registro ILI a la información adicional
que ofrecen las distintas ontologías sobre este sentido. Así, cada uno de los synsets de
18
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
los cuatro wordnets del ejemplo, adquieren esas características representadas en
Domain-Ontology y Top-Ontology, sin la necesidad de tener un enlace a las mismas.
2.1.3- Multilingual Central Repository (MCR)
El MCR (Multilingual Central Repository8
Meaning
) (Atserias et al., 2004) es el resultado
de la fusión de distintos recursos (diversas versiones de WordNet, ontologías y bases
del conocimiento) que se llevó a cabo dentro del proyecto MEANING. Además
mantiene el modelo utilizado en EWN, cuya arquitectura incluye InterLingual Index
(ILI), WordNet Domains y Top Concept Ontology.
9
En concreto, el proyecto se centró en los wordnets para 5 idiomas europeos:
inglés, italiano, español, catalán y euskera. Se pretendía enriquecer su estructura con
nueva información léxico-semántica extraída automáticamente de la web. Como
resultado de este trabajo se generaron varios resultados:
(Rigau et al., 2002) representa uno de los proyectos más ambiciosos
relacionados con WN y EWN. Su objetivo principal consistió en la adquisición
automática del conocimiento lingüístico (en especial, del conocimiento semántico o
conceptual) a partir de la Web y construcción de recursos léxicos más eficientes, ya que
los recursos léxicos existentes no proporcionan toda la información necesaria para poder
desambiguar con éxito la semántica de los textos.
Conjunto de herramientas para adquisición automática de conocimiento
semántico a partir de grandes colecciones de textos disponibles en la
web.
8 http://www.fi.muni.cz/gwc2004/proc/106.pdf 9 http://rua.ua.es/dspace/bitstream/10045/1565/1/PLN_31_41.pdf
19
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Herramientas para el enriquecimiento automático de EWN con el
conocimiento que una el nivel sintáctico con el semántico: aplicaciones
para la adquisición de la terminología perteneciente a un dominio
específico, la identificación y la extracción de sentidos nuevos y de
agrupaciones de sentidos relacionados, la adquisición de etiquetas de
dominio, de alternancias de diátesis, marcos de subcategorización,
restricciones selectivas y de algunas relaciones léxico-semánticas
específicas.
Un sistema de desambiguación semántica automática para las lenguas
incluidas en el proyecto basado en algoritmos de aprendizaje automático
capaces de modelar el comportamiento de cada sentido a partir de textos
semánticamente anotados y textos no anotados.
La versión final de MCR está integrada por wordnets para cinco idiomas
diferentes (inglés, italiano, español, catalán y euskera) y contiene 162384 relaciones
semánticas únicas entre conceptos. También está enriquecido con 466972 propiedades
semánticas extraídas de otras fuentes, como WordNet Domains, Top Concept Ontology
o SUMO.
Para poder interactuar con el MCR se desarrolló WEI 10
(Web EuroWordNet
Interface) que es una interfaz web que permite hacer consultas en el sistema. Se puede
ver un ejemplo de esta interfaz en la figura 3.
10 http://adimen.si.ehu.es/cgi-bin/wei/public/wei.consult.perl
20
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 3: Ejemplo de una consulta en WEI.
Esta imagen representa una consulta sobre el wordnet English_1.6 de la palabra
“study”. Los resultados corresponden a los sentidos de esa palabra en los wordnets
English_1.6 (en azul) y Spanish_1.6 (en verde). A la izquierda de los sentidos aparece el
conocimiento ontológico (WnDomains, TCO,…) asignado a cada sentido. En este caso,
como se han seleccionado las opciones Gloss y Rels, el sistema también ha devuelto una
glosa (aparece a ala derecha) y el número y tipo de relaciones que tiene cada sentido.
21
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
2.2- Latent Semantic Analysis (LSA)
Latent Semantic Analysis 11
LSA no es una técnica tradicional en el procesamiento de lenguaje natural, no
usa diccionarios escritos por los humanos, ni bases de conocimiento, ni redes
semánticas, ni gramaticales, ni morfológicas ni similares. Toma como única entrada los
documentos de un gran corpus de texto.
(LSA) es una teoría y método
matemático/estadístico usado en el procesamiento del lenguaje natural, que sirve para
extraer y deducir relaciones entre los diferentes términos de un conjunto de documentos.
La idea subyacente es que la suma de todas las palabras de los contextos en los
que aparece y en los que no aparece la palabra dada, proporciona un conjunto de interés
que determina la similitud de los significados entre las palabras y entre los conjuntos de
palabras.
LSA puede utilizar un término-documento matriz que describe las ocurrencias
de los términos en los documentos donde las filas corresponden a los términos y las
columnas corresponden a los documentos. Un ejemplo típico de la ponderación de los
elementos de la matriz es tf-idf (term frequency–inverse document frequency). El
elemento de la matriz es proporcional a la cantidad de veces que los términos aparecen
en cada documento, en términos poco usuales se ponderarán hasta reflejar su
importancia relativa.
Esta matriz también es común en los modelos estándar de semántica, aunque no
es necesario expresarlo como una matriz de manera explícita, ya que las propiedades
matemáticas de las matrices no se utilizan siempre.
11 http://en.wikipedia.org/wiki/Latent_semantic_analysis
22
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Después de la construcción de la matriz de las ocurrencias, LSA encuentra una
aproximación de bajo rango a la expresión-documento matriz. Podría haber varias
razones para estas aproximaciones:
o El plazo original de documento matriz se presume demasiado grande
para los recursos informáticos, en este caso, el rango aproximado de baja
de la matriz se interpreta como una aproximación.
o El plazo original de documento matriz se presume ruido: por ejemplo, los
casos anecdóticos de los términos tienen que ser eliminadas. Desde este
punto de vista, la aproximación de la matriz se interpreta como una
matriz mejor que el original.
o El plazo original de documento matriz se presume demasiado escasa en
relación con el "verdadero" plazo-documento matriz. Es decir, están las
listas matriz original de las palabras que están actualmente en el
documento, mientras que podrían estar interesados en todas las palabras
relacionadas con cada documento En general un conjunto mucho más
amplio debido a la sinonimia.
2.2.1- Infomap
Una de las aplicaciones que necesitaremos para desarrollar el servicio web será
Infomap. Es una herramienta que se basa en el LSA.
Dado una serie de palabras, Infomap evoca otra serie de palabras estrechamente
relacionados con la primera serie. Las nuevas palabras que obtiene Infomap, se obtienen
de un gran corpus, en este caso, British National Corpus (BNC). El funcionamiento de
Infomap se analizará más adelante.
23
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
2.2.2- British National Corpus (BNC)
El British National Corpus (BNC) es una colección de muestras tanto escritas
como habladas de 100 millones de palabras provenientes de diferentes fuentes, diseñada
para representar una amplia sección de Inglés Británico de la última parte del siglo XX,
tanto hablada como escrita.
La parte escrita del BNC (90%) incluye, por ejemplo, extractos de periódicos
regionales o nacionales, revistas especializadas y revistas para todas las edades e
intereses, libros académicos, cartas y memorandos publicados y no publicados, ensayos
de la escuela y la universidad, entre otros muchos textos. La parte hablada (10%)
consiste en la transcripción por voluntarios de diferentes edades, regiones y clases
sociales y el lenguaje hablado recogido de distintos contextos, que van desde reuniones
de negocios o reuniones gubernamentales hasta emisiones radiofónicas.
El corpus se inicio a construir en 1991, y fue terminado en 1994. No se han
añadido nuevos textos desde que se finalizará el proyecto, pero el corpus fue
ligeramente revisado antes del lanzamiento de la segunda edición BNC World (2001) y
de la tercera edición BNC XML Edition (2007). Desde que se completó el proyecto dos
sub-corpus con material procedente del BNC han sido liberados por separado: el BNC
Sampler (una colección general de un millón de palabras escritas, y un millón de
palabras de habla) y el BNC Baby (cuatro muestras de un millón de palabras de cuatro
géneros diferentes).
El BNC tiene las siguientes características:
Monolingüe: El BNC está escrito en Inglés Británico moderno, y no en
ninguna otra lengua hablada en el Reino Unido. Sin embargo, palabras de
inglés, no Británico y de diferentes idiomas, aparecen en el corpus.
24
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Sincrónico: Cubre el Inglés Británico de finales del siglo XX, más que el
desarrollo histórico que produjo.
General: Incluye muchos y variados estilos, no se limita a ningún tema
en concreto, género o registro. En particular, contiene ejemplos tanto de
lengua hablada como escrita.
2.3- Word Sense Disambiguation (WSD)
WSD es la desambiguación de los sentidos de las palabras. En nuestro caso
hemos utilizado la técnica SSI-Dijkstra.
2.3.1- SSI-Dijkstra
El software SSI-Dijkstra (Cuadros & Rigau 2008) es una versión del algoritmo
SSI (Structural Semantic Interconnections). El algoritmo SSI-Dijkstra nos va a permitir
encontrar los sentidos apropiados a cada una de las palabras obtenidas por Infomap. El
algoritmo SSI es muy simple y consiste en un paso de inicialización y en ciertos pasos
iterativos. Este algoritmo lo analizaremos más adelante.
2.4- Kyoto
El proyecto KYOTO12
12 http://www.kyoto-project.eu
(Knowledge Yielding Ontologies for Transition-based
Organization) (ICT-211423) empezó en Marzo de 2008 y tiene previsto terminar en
Marzo de 2011.
25
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
KYOTO tiene como objetivo construir un sistema de información independiente
del lenguaje para un dominio específico (medio ambiente, ecología y biodiversidad).
KYOTO está desarrollando una infraestructura wiki para a largo plazo permitir
compartir conocimiento (no necesariamente del dominio relacionado con el proyecto)
entre diferentes idiomas, culturas, ordenadores, … El wiki de medio ambiente ayudará a
los usuarios a ponerse de acuerdo sobre los conceptos y términos de interés, y servirá
para compartir conocimiento. Este proceso se basa en la extracción automática de
términos y significados sacados de documentos facilitados por los usuarios.
El resultado será una ontología compartida independiente del lenguaje que estará
vinculada a WordNets de inglés, castellano, euskera, italiano, holandés, chino y japonés.
Para cada idioma, la identificación y la extracción léxica de conceptos se llevará a cabo
por los Tybots, que también serán los encargados de introducir nuevas entradas a la
ontología. A través de las entradas de la ontología será posible relacionar términos de
diferentes idiomas.
En la figura 4 podemos ver cómo funciona este proceso.
26
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 4: Ciclo de KYOTO
En la figura 4 podemos ver el funcionamiento del sistema de información
KYOTO, que básicamente se basa en 6 pasos:
1. Personas de un dominio concreto especifican los documentos o páginas
web del dominio en múltiples idiomas.
2. El modulo de captura obtiene el texto procedente de las fuentes de
información, por ejemplo el texto “repentino aumento de las emisiones
de CO2 en 2008 en Europa”. Los procesadores lingüísticos analizan el
texto y generan una representación de la estructura lingüística.
3. Los robots terminológicos (TyBots) extraen automáticamente todos los
términos importantes y las posibles relaciones semánticas, por ejemplo,
“emisión de CO2”, y relacionaría este término con un WordNet ya
existente. Los TyBots pueden hacer este trabajo para cualquier idioma.
27
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
4. El wiki de medio ambiente (Wikyoto) permite a las personas del dominio
ponerse de acuerdo en el significado de los términos del dominio. Los
significados son formalizados en una ontología del dominio que puede
ser usada por programas de ordenador. Términos parecidos de diferentes
idiomas pueden relacionarse con un mismo concepto de la ontología. Por
ejemplo, el término Alemán “CO2-uitstoot” puede relacionarse con el
término CO2Emission de la ontología.
5. Los llamados Kybots utilizan los términos y el conocimiento para extraer
información de los textos escritos en varios idiomas. En el caso de un
hecho, tenemos una instancia específica o un caso de las emisiones de
CO2 que tuvo lugar en un determinado momento y en una región
determinada. Dada la ontología y WordNets de diferentes idiomas, los
Kybots pueden recolectar estos hechos una y otra vez, para grandes
volúmenes de datos de diferentes estados y de diferentes idiomas.
6. Los datos son indexados y pueden ser accedidos por cualquiera a través
de una búsqueda semántica, otra vez más independientemente del
idioma. Por ejemplo, datos sobre las emisiones de CO2 en Europa del
2000 al 2009.
28
2- Antecedentes PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
29
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3- DOP
3.1- Objetivo
El objetivo de este proyecto será la de elaborar un servicio web. La principal
funcionalidad de este servicio web es la de proporcionar un interfaz para la utilización
de la aplicación Infomap, que aplica el Análisis Semántico Latente (Latent Semantic
Analisis), y la de obtención de las interpretaciones de las palabra, mediante la aplicación
SSI-Dijkstra.
Este servicio web, aparte de tener información sobre las aplicaciones que utiliza,
tendrá dos operaciones principales. La primera operación será la de ofreciendo unas
palabras y definiendo de que tipo son (n, v, a, r), obtener las palabras semánticamente
más similares al aplicar la aplicación Infomap, y la de mostrar los significados más
apropiados, mediante la aplicación SSI-Dijkstra. Para la segunda operación, de la que
sería necesario registrarse, se da la oportunidad de ir paso a paso, e ir deseleccionando
las palabras no deseadas. Además, en el resultado deberíamos poder señalar las palabras
que consideramos erróneas, guardando estos datos en la base de datos.
Al crear un servicio web que utilice estas dos aplicaciones conjuntamente, se
evita la necesidad de instalar estas dos aplicaciones, creando una aplicación nueva:
evocación de conceptos.
3.2- Método de trabajo
Se utilizará el Proceso Unificado de Desarrollo (PUD) que se caracteriza por
estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e
incremental.
30
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Se realizarán 4 iteraciones:
o En la primera iteración se harán modificaciones a la versión de SSI-
Dijkstra, para que la entrada de los parámetros que recibe y el resultado
que devuelva se ajusten a las necesidades del proyecto.
o En la segunda iteración se realizará el primer prototipo de la aplicación
Web.
o En la tercera iteración se realizará la aplicación Web partiendo del
primer prototipo de la aplicación Web.
o En la cuarta iteración se realizará el servicio web que recibiendo unos
parámetros predefinidos devuelva la evocación y desambiguación de
esas palabras como resultado.
Los procesos tácticos, tales como el análisis del entorno, la gestión de las
herramientas que se utilizarán,… se harán durante el transcurso de todo el proyecto. Los
documentos que se les mandara al profesor, serán de la extensión .pdf si se trata de un
documento de texto, y de tar.gz si se trata de varios ficheros de una extensión diferente.
Los procesos formativos necesarios para la realización del proyecto, se
realizarán sobre todo al principio del proyecto. Durante el transcurso del proyecto el
alumno consultará en Internet o en la información ofrecida por el director. Aun así, si el
alumno tuviera dudas, podría consultar con el director.
Los procesos operativos, que se tomarán las decisiones sobre el proyecto, se
realizarán por objetivos. En cada iteración, se definirán una serie de objetivos que se
irán cumpliendo en los plazos, y en el modo que se ha predefinido entre el director y el
alumno. Las decisiones que se tomen entre el director y el alumno, serán tomados en las
reuniones o mediante comunicación por correo electrónico. Durante el transcurso de un
31
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
objetivo, si se necesita cambios o se quiere realizar cambios en el proyecto, se le
informará al director para redefinir los objetivos.
Las reuniones se realizarán tantas veces como haga falta. Para planificar las
reuniones se utilizará el correo electrónico, y las reuniones se realizarán en el despacho
del director.
También se realizarán copias de seguridad de los documentos del proyecto cada
10 días. Estas copias de seguridad se copiarán en un USB o en un CD.
3.3- Alcance
3.3.1- Recursos humanos
El personal que se dispone en este proyecto es del alumno y el profesor asignado
como director del proyecto. El alumno tendrá que ir haciendo los objetivos del proyecto
y la memoria.
3.3.2- Recursos materiales
El alumno cuenta con un ordenador personal para el desarrollo del proyecto. El
ordenador dispone de un sistema operativo Linux instalado, ya que para la ejecución de
las aplicaciones que se van a utilizar es necesario este sistema operativo. En concreto se
utilizará Fedora, ya que con algún otro sistema operativo, como en el caso de Ubuntu,
da algún fallo con las librerías.
El alumno dispone de Cds, y dispositivos de almacenamiento extraíble, para las
copias de seguridad que debe de realizar.
32
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
El profesor encargado del proyecto, tendrá un ordenador de sobremesa, con
acceso a internet, que hará de servidor, y este será el que contendrá el resultado final del
proyecto, es decir, será este servidor donde se estará instalado el servicio web. También
dispondrá de un despacho en la Facultad de Informática de san Sebastián donde se
harán las reuniones.
El alumno también dispondrá del material de oficina que necesite, como hojas,
bolígrafos...
3.3.3- Estructura de descomposición del trabajo (EDT)
En la figura 5 podemos ver un diagrama que expone todas las tareas que se van a
realizar en este proyecto.
33
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 5: Diagrama EDT.
34
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.3.4- PFC (Proyecto fin de carrera)
1. Procesos tácticos 1.1. Análisis de entorno
Descripción: El análisis general del proyecto, que se seleccionara las herramientas y el entorno en que se hará el proyecto.
Duración estimada: 5 horas.
1.2. Gestión de herramientas
Descripción: La instalación, copias de seguridad y mantenimiento de las herramientas que se utilizarán.
Duración estimada: 2 horas.
1.3. Planificación
Descripción: La planificación general y la gestión del proyecto, que incluye el DOP.
Duración estimada: 30 horas.
1.4. Reuniones
Descripción: Las reuniones que se realizan entre el alumno y el director del proyecto para tomar decisiones tácticas del proyecto.
Duración estimada: 10 horas.
35
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
2. Procesos formativos 2.1. Herramientas
Descripción: La formación y el tiempo que se tarda en que el alumno aprenda las funciones que necesita utilizar en esas herramientas que ha instalado.
Duración estimada: 3 horas.
2.2. Lenguaje de programación
Descripción: La formación y la consulta de dudas sobre los lenguajes de programación Perl, PHP y Javascript. También se incluye el lenguaje HTML.
Duración estimada: 10 horas.
2.3. Tecnologías
Descripción: El conocimiento que debe de saber sobre el entorno en que debe de trabajar, que será Fedora, Inofomap, SSI-Dijkstra, WEI, …
Duración estimada: 2 horas.
2.4. Memoria
Descripción: La redacción y correcciones de la memoria.
Duración estimada: 80 horas.
2.5. Presentación
Descripción: La creación de la presentación y la preparación de la defensa.
Duración estimada: 8 horas.
36
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3. Procesos operativos 3.1. Primera iteración
3.1.1. Análisis de entorno
Descripción: Se analizará el entorno en que se realizará los prototipos de la aplicación Web, el servicio Web, y las necesidades que se prevé que haya.
Duración estimada: 2 horas.
3.1.2. Captura de requisitos
Descripción: Se hará una captura de requisitos general de las necesidades de la aplicación Web y el servicio Web.
Duración estimada: 3 horas.
3.1.3. Modificar SSI-Dijkstra
Descripción: Se modificara el programa de SSI-Dijkstra para que permita coger los parámetros por url y de cómo resultado un documento XML que luego se podrá utilizar tanto por la aplicación Web y por el servicio Web.
Duración estimada: 8 horas.
3.2. Segunda iteración (aplicación Web: prototipo 1)
3.2.1. Captura de requisitos
Descripción: La captura de requisitos del primer prototipo que será una aplicación Web sencilla.
Duración estimada: 2 horas.
37
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.2.2. Análisis
Descripción: El análisis del primer prototipo.
Duración estimada: 2 horas.
3.2.3. Diseño
Descripción: El diseño del primer prototipo.
Duración estimada: 3 horas.
3.2.4. Implementación
Descripción: La implementación en PHP y HTML del primer prototipo.
Duración estimada: 10 horas.
3.2.5. Pruebas
Descripción: Las pruebas, tanto en el servidor local como en el servidor final, para verificar el funcionamiento de la aplicación Web, y encontrar fallos para no repetirlas en el segundo prototipo.
Duración estimada: 2 horas.
3.2.6. Implantación
Descripción: Los cambios que se han tenido que hacer en el primer prototipo para implantarlo en el servidor final.
Duración estimada: 30 minutos.
38
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.3. Tercera iteración (aplicación Web: prototipo 2)
3.3.1. Captura de requisitos
Descripción: La captura de requisitos del segundo prototipo de la aplicación Web que incluirá la base de datos que utilizará este prototipo.
Duración estimada: 12 horas.
3.3.2. Análisis
Descripción: El análisis del segundo prototipo.
Duración estimada: 10 horas.
3.3.3. Diseño
Descripción: El diseño del segundo prototipo.
Duración estimada: 7 horas.
3.3.4. Implementación
Descripción: La implementación del segundo prototipo que se realizara con AJAX y PHP.
Duración estimada: 90 horas.
3.3.5. Pruebas
Descripción: Las pruebas en el servidor local para obtener una versión estable para implantarlo en el servidor final. Y las pruebas en el servidor final para hacer los cambios necesarios para verificar su correcto funcionamiento.
Duración estimada: 15 horas.
39
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.3.6. Implantación
Descripción: Los cambios necesarios que se tienen que realizar para que este segundo prototipo funcione en el servidor final.
Duración estimada: 2 horas.
3.4. Cuarta iteración (servicio Web)
3.4.1. Diseño
Descripción: El diseño del servicio Web.
Duración estimada: 1 hora y 30 minutos.
3.4.2. Implementación
Descripción: La implementación del servicio web que se hará con AJAX, que será código que se ha utilizado en el segundo prototipo de la aplicación Web.
Duración estimada: 4 horas.
3.4.3. Pruebas
Descripción: Las pruebas básicas que se hagan de su correcto funcionamiento, sabiendo que parte del código utilizado ha sido probado en las pruebas realizadas al segundo prototipo de la aplicación Web.
Duración estimada: 1 hora.
3.4.4. Implantación
Descripción: La implantación del servicio Web en el servidor final.
Duración estimada: 1 hora.
40
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.4- Planificación temporal
Se utilizará el diagrama de Gantt para ver el periodo de tiempo que ha requerido
cada tarea del proyecto. Estás tareas se han explicado en la sección anterior.
3.4.1- Diagrama de Gantt
En la figura 6 se ve el periodo de tiempo en que se va a realizar cada tarea. Se ha
hecho hasta finales de Marzo, que es la fecha en que se espera terminar el proyecto. Al
no saber la fecha de la defensa del proyecto, se supone que el tiempo entre el final del
proyecto y la fecha en que se va a realizar la defensa del proyecto, la única tarea que el
alumno realizara en este proyecto será la tarea “Presentación”.
41
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 6: Diagrama de Gantt.
42
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.5- Plan de contingencia
Sabiendo que siempre existen riesgos e imprevistos que pueden causar un gran
impacto para la finalización del proyecto, es conveniente definir unas soluciones
posibles para los riesgos que se puedan dar, para minimizar estos daños.
Estos riesgos aparecen en la tabla de riesgos, y los analizaremos uno por uno
clasificados en tres grandes grupos, que son formativos, tácticos y operativos.
3.5.1- Tabla de riesgos
En la tabla 4 se muestran los riesgos y la probabilidad de que surjan junto a la
consecuencia que estimamos, tomando en cuenta las soluciones que mencionaremos a
continuación.
Riesgo Probabilidad Consecuencia Dificultad en entender Medio Bajo Pérdida de documentación Bajo Bajo Indisponibilidad para reunir Medio Muy bajo Retraso en la tarea Medio Bajo Ordenador estropeado Muy bajo Medio Perdida de datos Bajo Medio Problemas en manejar software Medio Bajo
Tabla 4: Riesgos
43
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.5.2- Riesgos formativos
Dificultad en entender
Riesgo: Dificultad del alumno para entender algo relacionado con el proyecto
que le haga perder excesivo tiempo, con lo que llevaría al riesgo de no poder realizar la
tarea a tiempo.
Solución: El alumno le informará al profesor encargado del proyecto del
problema, y acordarán realizar alguna reunión para aclarar las dudas o le informara
donde puede encontrar información añadida para solucionarlo o ampliaran el plazo de la
tarea para que tenga más tiempo para hacerlo.
Pérdida de documentación
Riesgo: El alumno pierde documentación o acceso a la documentación que
dispone para la formación que dispone.
Solución: El alumno buscará por internet en busca de información necesaria
para la realización de la tarea. En caso de no encontrarlo, le informaría al profesor
encargado si le podría facilitar o conseguir información referente al problema.
3.5.3- Riesgos tácticos
Indisponibilidad para reunir
Riesgo: El alumno o el profesor encargado no pueden acudir a una reunión
concertada por causas tales como enfermedad, causas personales, trabajo...
44
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Solución: La persona que no pueda acudir a la reunión le informará a la otra
parte de que no puede acudir a la reunión, y concertarán otra reunión en el que las dos
partes puedan acudir.
Retraso en la tarea
Riesgo: El alumno no ha conseguido realizar la tarea la tarea a tiempo.
Solución: Se ampliará el plazo de entrega de esa tarea, y se reajustarán las
restantes tareas. En el reajuste de los plazos de las tareas si se viera que no se pudiera
realizar todas las tareas, en la reunión se hablaría de si se tendría que suprimir alguna
funcionalidad del proyecto para poder finalizar el proyecto.
Ordenador estropeado
Riesgo: El ordenador del alumno sufre daños parciales o totales.
Solución: El alumno trabajaría en ordenadores de la facultad, que estén
habilitados para ello. Si el consiguiera reparar o conseguir otro ordenador personal
volvería a trabajar con su ordenador.
Pérdida de datos
Riesgo: Se pierden los datos guardados en el ordenador.
Solución: Se recuperan los datos de las copias de seguridad que se realizaron en
dispositivos externos.
45
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
3.5.4- Riegos operativos
Pérdida de datos
Riesgo: Se pierden los datos referentes al proyecto.
Solución: el alumno irá haciendo copias de seguridad en cada entrega de una
tarea, o cada un tiempo determinado, y en caso de pérdida de datos, re recuperaría de
esta copia por lo que la perdida solo sería desde la fecha de la copia de seguridad hasta
la fecha de la perdida de datos.
Problemas en manejar software
Riesgo: Problemas en el manejo del software que está utilizando el alumno,
debido al desconocimiento del mismo.
Solución: Intentar buscar toda la documentación posible por Internet, por los
libros de la biblioteca, manuales... El profesor encargado le podrá orientar al alumno
sobre que material le convendría.
3.6- Análisis de factibilidad
Se han definido las tareas que se deben de realizar para la realización del
proyecto. Los plazos parecen razonables y los riesgos asumibles. Por lo que creemos
que este proyecto se puede realizar dentro del plazo establecido.
46
3- DOP PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
47
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
4- Arquitectura del Sistema
Esté proyecto tendrá dos resultados diferentes, por lo cual, habrá dos tipos de
arquitecturas: un servicio Web y la aplicación Web. El objetivo principal es la de
conseguir una aplicación Web, pero también se creara un servicio Web para que alguna
aplicación pudiera utilizar las dos aplicaciones, Infomap y SSI-Dijkstra, conjuntamente.
La elección de una aplicación Web está motivada por la facilidad de uso de la
aplicación de Infomap y SSI-Dijkstra para el usuario. Además, se utilizará una base de
datos para gestionar a los usuarios, y los resultados obtenidos por cada usuario, para
poder ofrecer resultados personales.
4.1- Servicio Web
Existen diferentes definiciones para explicar lo que son los servicios web. Una
de ellas sería hablar de los servicios web como un conjunto de aplicaciones o
tecnologías que intercambian información entre sí con el objetivo de ofrecer un servicio.
Distintas aplicaciones de software desarrolladas en lenguajes de programación
diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web
para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad
(condición necesaria para que los usuarios tengan acceso a toda la información
disponible) se consigue mediante la adopción de estándares abiertos, estos son
gestionados por la organización W3C. El estándar de comunicación más utilizado es
HTTP (Hypertext Transfer Protocol), pero también pueden usarse SMTP (Simple Mail
Transfer Protocol), FTP (File Transfer Protocol), ... Otros estándares utilizados son
XML (Extensible Markup Language), WSDL (Web Services Description Language), ...
48
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
La figura 7 muestra cómo interactúa un conjunto de servicios web, que nos
ayudará a entender mejor qué son y cómo funcionan. Es el ejemplo de un modelo de
servicios web para una agencia de viajes.
Figura 7: Ejemplo de un servicio Web
El modelo refleja el proceso que ocurre cuando un usuario (que juega el papel de
cliente dentro del servicio web) a través de un aplicación solicita información sobre un
viaje que desea realizar a una agencia de viajes que ofrece sus servicios a través de
Internet. La agencia de viajes a su vez, para poder devolver la información necesaria a
su cliente (usuario), obtendrá información referente al vuelo y al hotel de otros recursos
(otros servicios web), en este caso la agencia de viajes jugará el papel de cliente. Una
vez recabada toda la información necesaria, la agencia de viajes le devolverá al usuario
la información solicitada. Por último, el usuario realizará el pago a través de la agencia
de viajes, esta hará de intermediaria entre el usuario y el servicio web que se encarga de
gestionar el pago.
49
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
En el proceso de intercambio de información intervienen diferentes tecnologías.
Por un lado estaría SOAP 13(Simple Object Access Protocol), esta tecnología se basa en
el formato XML 14
(Extensible Markup Language), y es capaz de transferir mensajes con
información compleja (ver figura 8). SOAP puede usar los protocolos de comunicación
HTTP, SMTP, etc. SOAP tiene un formato especifico para el envío de los mensajes,
cada mensaje estará compuesto por un envelope (sobre), cuya estructura estará formada
por un header (cabezara) y un body (cuerpo).
Figura 8: Estructura de los mensajes SOAP.
Por otro lado, tenemos WDSL (Web Service Description Languaje). WSDL es
una descripción basada en XML que hace posible la comunicación entre el usuario y el
servicio web, estableciendo los detalles necesarios para el transporte de los mensajes y
su contenido.
13 http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol 14 http://es.wikipedia.org/wiki/Extensible_Markup_Language
50
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Son varias las ventajas que ofrecen los servicios web, entre otras:
Permiten la comunicación entre diferentes aplicaciones
independientemente de sus propiedades o sobre las que se instalen.
Los servicios web fomentan el uso de estándares basados en texto, esto
hace que sea más fácil entenderlos y acceder a su contenido.
Al usar HTTP como protocolo de comunicación, pueden usarse los
sistemas de seguridad firewall sin necesidad de cambiar las reglas de
filtrado.
Permiten la interoperabilidad entre plataformas de diferentes fabricantes
usando protocolos estándares y abiertos.
Los proveedores ofrecen sus servicios como procedimientos remotos y
los usuarios solicitan un servicio llamando a estos procedimientos a
travñes de la Web.
Hemos hablado de las ventajas, pero también existen ciertos inconvenientes:
Su rendimiento es bajo si se compara con otros métodos de computación
distribuida como RMI (Remate Method Invocatíon).
Al apoyarse en HTTP, pueden esquivar medidas de seguridad basadas en
firewall, pudiendo verse en peligro ante un ataque maligno.
Para realizar transacciones no son comparables con otros estándares
abiertos de computación distribuida como CORBA (Common Object
Request Broker Architecture).
51
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Recientemente, los servicios web basados en RESTful 15
El servicio Web que crearemos necesitará un servidor Web que alojara la
aplicación Web y hará accesible a todos los usuarios que disponga de Internet.
(REpresentational State
Transfer) estan obteniendo cada vez más popularidad, sobre todo entre las compañías de
Intenet. Los servicios web basados en RESTful cumplen con la definición de la W3C, y
están mejor integrados en el protocolo HTTP que lo servicios basados en SOAP.
Además no necesitan mensajes XML ni definiciones WSDL.
Un servidor web es un programa que está diseñado para transferir hipertextos,
páginas web o páginas HTML (HyperText Markup Language): textos complejos con
enlaces, figuras, formularios, botones y objetos incrustados como animaciones o
reproductores de música. El programa implementa el protocolo HTTP (HyperText
Transfer Protocol) que pertenece a la capa de aplicación del modelo OSI.
El servicio Web que realizaremos tendrá la arquitectura que se muestra en la
figura 9. El usuario que tenga acceso a Internet podrá utilizar el servicio Web mediante
el servidor Web.
Figura 9: La arquitectura para el servicio Web
15 http://es.wikipedia.org/wiki/Representational_State_Transfer
52
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
4.2- Aplicación Web
En la ingeniería de software se denomina aplicación web a aquellas aplicaciones
que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de
una intranet mediante un navegador. En otras palabras, es una aplicación software que
se codifica en un lenguaje soportado por los navegadores web (HTML, JavaScript, Java,
asp.net,php, etc.) en la que se confía la ejecución al navegador.
Las aplicaciones web son populares debido a lo práctico del navegador web
como cliente ligero, así como a la facilidad para actualizar y mantener aplicaciones web
sin distribuir e instalar software a miles de usuarios potenciales. Véase aplicaciones
como Gmail, etc.
Es importante mencionar que una página Web puede contener elementos que
permiten una comunicación activa entre el usuario y la información. Esto permite que el
usuario acceda a los datos de modo interactivo, gracias a que la página responderá a
cada una de sus acciones, como por ejemplo rellenar y enviar formularios, participar en
juegos diversos y acceder a gestores de base de datos de todo tipo.
La aplicación Web que crearemos necesitará un servidor Web y un servidor de
base de datos. Un servidor de base de datos será necesario para guardar la base de datos
que utiliza la aplicación Web. En la elección tecnológica se definirán que tipo de
servidor se espera que tenga la arquitectura final.
En la figura 10 se puede ver la arquitectura de la aplicación Web que crearemos.
El usuario que tenga acceso a Internet podrá cargar la aplicación Web mediante el
servidor Web. Este servidor BD, según la tarea que realice el usuario, tendrá que
acceder al servidor Web para obtener o modificar datos de la base de datos. Estos dos
servidores podrán estar en una única maquina que contenga los dos servidores.
53
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 10: La arquitectura para la aplicación Web.
54
4- Arquitectura del Sistema PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
55
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
5- Elección Tecnológica
A continuación determinaremos el software específico que tendrá el sistema
final y el software que se ha utilizado en el desarrollo del proyecto.
5.1- El sistema
El sistema estará sobre un sistema operativo basada en Linux16, en concreto
Fedora17. Se utilizará Apache 18
como servidor Web. El lenguaje de programación que
se usará en el servidor Web será PHP. Como servidor de base de datos se utilizará
MySQL-Server y como sistema de gestión de base de datos usaremos MySQL.
5.1.1- Fedora
Fedora es una distribución Linux para propósitos generales basada en RPM, que
se mantiene gracias a una comunidad internacional de ingenieros, diseñadores gráficos
y usuarios que informan de fallos y prueban nuevas tecnologías. Cuenta con el respaldo
y la promoción de Red Hat.
El proyecto no busca sólo incluir software libre y de código abierto, sino ser el
líder en ese ámbito tecnológico. Algo que hay que destacar es que los desarrolladores de
Fedora prefieren hacer cambios en las fuentes originales en lugar de aplicar los parches
específicos en su distribución, de esta forma se asegura que las actualizaciones estén
disponibles para todas las variantes de GNU/Linux.
16 http://www.linux-es.org/ 17 http://fedoraproject.org/es/ 18 http://httpd.apache.org/
56
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
La elección de Fedora está basada en que Infomap y SSI-Dijsktra, software que
utiliza la aplicación Web y el servicio Web, están preparados para este sistema
operativo y no da ningún problema de librería como pudiera dar en alguna otra
distribución Linux.
5.1.2- Apache
El servidor HTTP Apache es un servidor web HTTP de código abierto para
plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que
implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su
desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero
más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quería que
tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu
Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y
en esos momentos la preocupación de su grupo era que llegasen las empresas y
"civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además
Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA.
Era, en inglés, a patchy server (un servidor "parcheado").
El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la
Apache Software Foundation. Apache presenta entre otras características altamente
configurables, bases de datos de autenticación y negociado de contenido.
5.1.3- PHP
PHP 19 lenguaje de programaciónes un interpretado, diseñado originalmente para
la creación de páginas web dinámicas. Es usado principalmente en interpretación del
19 http://php.net/index.php
57
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una
interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo
aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.
PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor
(inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por
Rasmus Lerdorf en 1994; sin embargo la implementación principal de PHP es
producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no
haber una especificación formal. Publicado bajo la PHP License, la Free Software
Foundation considera esta licencia como software libre.
5.1.4- MySQL
MySQL es un sistema de gestión de base de datos relacional, multihilo y
multiusuario con más de seis millones de instalaciones. MySQL AB —desde enero de
2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde
abril de 2009— desarrolla MySQL como software libre en un esquema de
licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta
licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos
deben comprar a la empresa una licencia específica que les permita este uso. Está
desarrollado en su mayor parte en ANSI C.
Utilizaremos MySQL para la gestión de los usuarios y guardar los resultados de
las consultas.
58
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
5.2- Desarrollo
La mayor parte del desarrollo del proyecto se ha realizado en el sistema
operativo Windows 7, ya que Windows ofrece aplicaciones que ayudan en el desarrollo
de las diferentes tareas del proyecto. También se ha utilizado Fedora para
implantaciones y realizar pruebas en el ámbito del sistema final.
Para el desarrollo de la aplicación Web se ha utilizado el programa Adobe
Dreamweaver CS4. La creación de la documentación y la memoria ha sido mediante
Microsoft Office Word 2007. Los dibujos han sido realizados mediante los programas
Adobe Photoshop CS4 y Microsoft Office Visio 2007. La contabilidad de las horas y los
gráficos mediante Microsoft Office Excel 2007. Las diapositivas de la presentación del
proyecto se han hecho con Microsoft Office PowerPoint 2007.
Para hacer las pruebas, sobre todo se ha utilizado el navegador Mozilla Firefox
ya que ofrece una extensión que se llama Firebug que es muy útil para encontrar los
fallos que ocurren en Javascript y en el envio de peticiones XmlHttpRequest. También
se ha verificado que la aplicación Web y el servicio Web funcionan correctamente en el
navegador Internet Explorer.
5.2.1- Dreamweaver
Adobe Dreamweaver 20 aplicaciónes una en forma de estudio enfocada a la
construcción y edición de sitios y aplicaciones Web basadas en estándares. Creado
inicialmente por Macromedia (actualmente producido por Adobe Systems). Es el
programa de este tipo más utilizado en el sector del diseño y la programación web, por
sus funcionalidades, su integración con otras herramientas como Adobe Flash y,
recientemente, por su soporte de los estándares del World Wide Web Consortium. Su
20 http://es.wikipedia.org/wiki/Adobe_Dreamweaver
59
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
principal competidor es Microsoft Expression Web y tiene soporte tanto para edición de
imágenes como para animación a través de su integración con otras.
5.2.2- Photoshop
Adobe Photoshop 21 aplicación informática(Tienda de Fotos) es una en forma de
taller de pintura y fotografía que trabaja sobre un "lienzo" y que está destinado para la
edición, retoque fotográfico y pintura a base de imágenes de mapa de bits (o gráficos
rasterizados).
Es un producto elaborado por la compañía de software Adobe Systems,
inicialmente para computadores Apple pero posteriormente también para plataformas
PC con sistema operativo Windows.
5.2.3- Word
Microsoft Word22 es el procesador de textos de la suite. Word posee una
posición dominante en el mercado de los procesadores de texto. Su formato propietario
DOC es considerado un estándar de facto, aunque en su más reciente versión, Word
2007 utiliza un nuevo formato basado en XML llamado .DOCX, pero también tiene la
capacidad de guardar y abrir documentos en el formato DOC. Word está también
incluido en algunas versiones de Microsoft Works. Está disponible para las plataformas
Microsoft Windows y Mac OS.
21 http://es.wikipedia.org/wiki/Photoshop 22 http://es.wikipedia.org/wiki/Microsoft_Word
60
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
5.2.4- Visio
Microsoft Visio23 software es un de dibujo vectorial para Microsoft Windows.
Las herramientas que lo componen permiten realizar diagramas de oficinas, diagramas
de bases de datos, diagramas de flujo de programas, UML, y más, que permiten iniciar
al usuario en los lenguajes de programación.
Aunque originalmente apuntaba a ser una aplicación para dibujo técnico para el
campo de Ingeniería y Arquitectura; con añadidos para desarrollar diagramas de
negocios, su adquisición por Microsoft implicó drásticos cambios de directrices de tal
forma que a partir de la versión de Visio para Microsoft Office 2003 el desarrollo de
diagramas para negocios pasó de añadido a ser el núcleo central de negocio,
minimizando las funciones para desarrollo de planos de Ingeniería y Arquitectura que se
habían mantenido como principales hasta antes de la compra.
5.2.5- Excel
Microsoft Excel24
Lotus 1-2-3
es un programa de hoja o plantilla de cálculo. Al igual que
Microsoft Word, posee actualmente un mercado dominante. Fue originalmente el más
fuerte competidor del entonces popular , y en tercera posición estuvo
Quattro Pro; pero eventualmente Excel se vendió más, se popularizó y se convirtió en el
estándar de facto. Está disponible para plataformas Windows y Mac.
23 http://es.wikipedia.org/wiki/Visio 24 http://es.wikipedia.org/wiki/Excel
61
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
5.2.6- PowerPoint
Microsoft PowerPoint25
Windows
es un muy popular programa para desarrollar y
desplegar presentaciones visuales en entornos y Mac. Es usado para crear
diapositivas multimedia, es decir, compuesta por texto, imágenes, sonido y vídeos.
Office Mobile para Windows Mobile 5.0 y versiones posteriores poseen una versión de
PowerPoint llamada PowerPoint Mobile. Esta versión reducida permite incluso agregar
vídeos y sonido a las diapositivas.
5.2.7- Firebug
Firebug26 extensión es una de Firefox creada y diseñada especialmente para
desarrolladores y programadores web. Es un paquete de utilidades con el que se puede
analizar (revisar velocidad de carga, estructura DOM), editar, monitorizar y depurar el
código fuente, CSS, HTML y JavaScript de una página web de manera instantánea e
inline. Figura 11 muestra una pantalla del entorno.
Firebug no es un simple inspector como DOM Inspector, además edita y permite
guardar los cambios, un paso por delante del conocido Web Developer. Tiene una
intuitiva interfaz, con solapas específicas para el análisis de cada tipo de elemento
(consola, HTML, CSS, Script, DOM y red), que permite al usuario un manejo fácil y
rápido. Firebug está encapsulado en forma de plug-in o complemento de Mozilla. Es
Open Source (aunque no Free Software) y de distribución gratuita.
25 http://es.wikipedia.org/wiki/Microsoft_PowerPoint 26 http://es.wikipedia.org/wiki/Firebug
62
5- Elección Tecnológica PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 11: Ejemplo de la extensión Firebug.
63
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6- Desarrollo de la aplicación Web
El objetivo de este proyecto es desarrollar una aplicación Web que permita
obtener conceptos evocados para un conjunto de palabras. Para ello, el sistema debe
integrar dos sistemas de PLN. El primero es un sistema que obtiene palabras
semánticamente relacionadas a un conjunto de palabras. Estas palabras relacionadas son
posteriormente procesadas por un segundo sistema que obtiene de un diccionario
electrónico los conceptos más apropiados.
El primer sistema es Infomap, que mediante la técnica de LSA o LSI obtiene
palabras semánticamente relacionadas a un conjunto de palabras. Dado este conjunto de
palabras, el segundo sistema que se aplica es SSI-Dijkstra. Este es un sistema de
resolución de la ambigüedad semántica de las palabras (WSD, en inglés Word Sense
Disambiguation) basado en el conocimiento.
Los resultados que se obtienen en la evocación son registradas en una base de
datos. En esta base de datos, también se guardará la información necesaria para
gestionar a los usuarios.
6.1- Captura de Requisitos
6.1.1- Modelo de Casos de Uso (MCU)
Está aplicación Web tendrá cinco casos de uso, que se ven en la figura 12. Solo
habrá un único actor que será el usuario que utilice esta aplicación Web. A continuación
se explicarán cada caso de uso uno por uno, explicando lo que hace y en qué
condiciones.
64
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 12: Diagrama de casos de uso
Registrar usuario
Un usuario que se quiera registrar, rellena el formulario que el sistema le ofrece
para registrar sus datos. Una vez que ha rellenado todos los datos, el sistema verifica
que el formato de los datos es correcto y los guarda en la base de datos.
Postcondición: se guardarán sus datos en la base de datos, y a partir de ese
momento se podrá identificar.
Escenario principal (o curso normal de los eventos):
1. Usuario: El usuario rellena el formulario para registrarse. 2. Sistema: Verifica los datos introducidos por el usuario y guarda los datos en la base
de datos.
Extensiones (o cursos alternativos):
Paso 2: No se verifica que todos los datos introducidos por el usuario son correctos.
65
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
1. Usuario: Cambia los datos del formulario. 2. Vuelve al Paso 2.
Consulta
En esta consulta el usuario introduce las palabras que quiere consultar y las
categorías (N, V, A, R) de esas palabras. Una vez escritas, y después de elegir el
numero de resultados que quiera obtener, el sistema obtiene las palabras evocadas por
Infomap y SSI-Dijkstra obtiene los conceptos subyacentes. Finalmente, este caso de uso
devuelve los conceptos evocados.
Escenario principal (o curso normal de los eventos):
1. Usuario: Introduce las palabras, los tipos correspondientes a esas palabras (N, V, R, A) y el numero de conceptos que desea evocadas.
2. Sistema: Mediante Infomap y SSI-Dijkstra obtiene el resultado y los visualiza.
Identificar
El usuario se identifica ante el sistema. Para eso el usuario introduce su correo y
la contraseña con la que se ha registrado anteriormente. El sistema, con los datos que ha
introducido el usuario, verifica que corresponden a los datos que tiene en la base de
datos. Si no es correcta la verificación se le deniega el acceso.
Postcondición: El usuario queda identificado y podrá acceder a los casos de uso
que requieren su identificación.
Escenario principal (o curso normal de los eventos):
1. Usuario: Introduce su correo y la contraseña con el que se ha registrado. 2. Sistema: Verifica que los datos introducidos son correctos e identifica al usuario.
66
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Extensiones (o cursos alternativos):
Paso 2: El sistema verifica que los datos introducidos no son correctos y deniega el acceso al usuario.
1. Usuario: Cambia los datos introducidos anteriormente. 2. Vuelve al paso 2.
Gestionar usuario
El usuario podrá gestionar su cuenta. Tendrá la posibilidad de ver los datos que
introdujo al registrarse, cambiarlos, darse de baja o la de salir y dejar de estar
identificado.
Precondición: El usuario tendrá que estar identificado.
Postcondición: Según la opción que elija el usuario, se realizarán los cambios
que se han requerido en la base de datos o el usuario dejara de estar identificado.
Escenario principal (o curso normal de los eventos):
1. Usuario: Se identifica ante el sistema y elige cambiar sus datos personales de la cuenta.
2. Sistema: Le visualiza los datos del usuario que introdujo en el registro y le da la opción de cambiarlos.
3. Usuario: Cambia los datos que desea cambiar. 4. Sistema: Verifica que los datos sean correctos y cambia los datos del usuario en la
base de datos con los nuevos datos que ha introducid.
Extensiones (o cursos alternativos):
Paso 1: Utiliza “Identificar Usuario” (USES).
Paso 1: El usuario elige ver datos.
67
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
1. Sistema: Le visualiza los datos personales que introdujo el usuario al registrarse.
Paso 1: El usuario elige salir.
1. Sistema: El usuario deja de estar identificado y le quita las opciones que tendría estando identificado.
Paso 1: El usuario elige dar de baja.
1. Sistema: Modifica la cuenta del usuario en la base de datos e indica que esa cuenta esta inactiva. El usuario deja de estar identificado y no se podrá identificar más con esa cuenta.
Ver resultados
El usuario podrá consultar los resultados que ha obtenido, en sesiones anteriores.
Podrá ver las palabras incorrectas que ha encontrado el usuario y los que se han
encontrado entre todos los usuarios registrados, buscar información sobre una palabra
que introduzca el usuario, y ver el historial de consultas que ha realizado el usuario y los
que se hayan realizado entre todos.
En las opciones que puedan dar los resultados propios del usuario y los
resultados de todos los usuarios, lo único que varia es que el resultado sea general o que
sea propio. Por eso, en las aclaraciones siguientes, no se distinguirán esos dos casos,
suponiendo que los resultados son solo los del usuario, aunque haya otra opción que de
un resultado general.
Precondición: El usuario tendrá que estar identificado.
Escenario principal (o curso normal de los eventos):
1. Usuario: Se identifica ante el sistema y elige la opción de ver el historial de consultas.
2. Sistema: Visualiza el historial de consultas que ha realizado el usuario anteriormente.
3. Usuario: Elige una consulta que quiera volver a realizar.
68
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
4. Sistema: Ofrece un formulario con las palabras de la consulta elegida con posibilidad de modificarlas, para que vuelva a realizar una consulta registrada. Eso se haría en el caso de uso de “Consulta registrada”.
Extensiones (o cursos alternativos):
Paso 1: Utiliza “Identificar Usuario” (USES).
Paso 1: Elige la opción de ver las palabras incorrectas.
1. Sistema: Visualiza las palabras incorrectas que ha encontrado el usuario en las consultas registradas realizadas con anterioridad.
Paso 1: Elige la opción de buscar información sobre una palabra.
1. Sistema: Le pide al usuario que introduzca la palabra que quiere buscar. 2. Usuario: Introduce la palabra que desea buscar y su tipo. 3. Sistema: Visualiza información referente a esa palabra.
Consulta registrada
Está consulta es parecida a la consulta anterior, la diferencia de es que esta
consulta se registra. En vez de solo dar el resultado final, dará opciones entre la
ejecución de Infomap y SSI-Dijkstra. Una vez que se introduzcan las palabras de las que
se desea obtener conceptos evocados, el sistema obtendrá el resultado de Infomap y
dará opción a seleccionar las palabras con las que desea seguir. Con esas palabras se le
aplica SSI-Dijkstra para obtener su significado correcto y se visualiza. Una vez obtenido
el resultado, el usuario tiene la opción de elegir si le parece que algún significado no es
correcto en ese contexto y guardar esa consulta. Con estas consultas se obtienen los
resultados del caso de uso “Ver resultados”.
Precondición: El usuario tendrá que estar identificado.
Postcondición: El sistema habrá guardado en la base de datos la consulta
realizada por el usuario.
69
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Escenario principal (o curso normal de los eventos):
1. Usuario: Se identifica ante el sistema y elige hacer una consulta registrada. 2. Sistema: Ofrece un formulario para que el usuario introduzca las palabras que desea
buscar. 3. Usuario: Escribe las palabras, de qué tipo es (N, V, R, A) cada palabra que ha
escrito y el número de resultados que desea obtener. 4. Sistema: Visualiza el resultado obtenido mediante Infomap. 5. Usuario: Selecciona las palabras con las que desea continuar. 6. Sistema: Visualiza el resultado de la desambiguación mediante SSI-Dijkstra de las
palabras que ha seleccionado el usuario. 7. Usuario: Puede seleccionar los conceptos incorrectos para consultar directamente el
concepto en el MCR. 8. Sistema: Guarda en la base de datos la consulta realizada por el usuario.
Extensiones (o cursos alternativos):
Paso 1: Utiliza “Identificar Usuario” (USES).
Paso 4: No se ha obtenido ningún resultado mediante Infomap.
1. Sistema: No visualiza ninguna información (Infomap no produce ningún resultado) y el usuario tiene la opción de modificar las palabras introducidas en el paso 3.
Paso 6: No se han obtenido los significados de las palabras mediante SSI-Dijkstra.
1. Sistema: No ha sido posible la desambiguación y visualiza las palabras sin su significados y el usuario tiene la opción de cambiar las palabras introducidas o la de seleccionar otras palabras del anterior resultado.
6.1.2- Modelo de Dominio (MD)
El modelo de dominio que se ha utilizado en la aplicación Web es la que se ve
en la figura 13. El usuario podrá tener un número indeterminado de consultas. Cada
consulta sólo será de un único usuario. Cada consulta tendrá múltiples palabras, y cada
palabra solo pertenecerá a una única consulta.
70
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 13: Modelo de dominio de la base de datos utilizado en la aplicación Web
La tabla “Usuario” contendrá toda la información referente al usuario, tal como
su dirección, correo, nombre, contraseña,… etc. La tabla “Consulta” tendrá el
identificador del usuario al que corresponde esa consulta, y la fecha en el que se realizo
esa consulta. La tabla “Palabra” tendrá un identificador que indica a que consulta
corresponde, y toda la información que se haya obtenido de la consulta registrada, tal
como, su significado elegido, si ha sido seleccionado, si es correcto,… etc.
Los atributos que contienen cada tipo de objetos del modelo de dominio y el
modo en que están relacionadas las tablas se explicarán más adelante, concretamente en
el diseño.
6.2- Análisis
Se definen diferentes operaciones en cada caso de uso. Para mostrar esas
funciones, por cada caso de uso se hará un Diagrama de Secuencia del Sistema (DSS) y
las especificaciones concretas (contratos) correspondiente a cada función que aparece en
el diagrama.
71
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.2.1- Registrar usuario
Figura 14: Diagrama de Secuencia del Sistema de caso de uso “Registrar usuario”
Contrato : guardarDatos(correo, contraseña, nombre, apellidos, …)
Responsabilidad: Registra el nuevo usuario con los datos recibidos por parámetro.
Excepciones: Si Usuario.correo = correo_registrado entonces ERROR. (correo existente)
Postcondición: Se ha creado una entrada en la base de datos con los datos recibidos.
Usuario.correo=correo Usuario.contraseña = contraseña Usuario.nombre = nombre …
Salida: Confirmación de que los datos se hayan guardado correctamente.
72
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.2.2- Consulta
Figura 15: Diagrama de Secuencia del Sistema de caso de uso “Consulta”
Contrato: consultarPalabras(ListaPalabras, numResultados)
Responsabilidad: Mostrar el resultado obtenido por Infomap y SSI-Dijsktra con las palabras introducidas por parámetro. ListaPalabras será una lista con las palabras que se quieran buscar con su tipo (n, r, v, a) correspondiente. NumResultados será un número entero que indique el número de resultados que se espera obtener.
Excepciones: Si no se ha obtenido ningún resultado con las palabras enviadas por parámetro, se mostrará un mensaje informando que intente con otras palabras.
Salida: ListaPalabras, será una lista de las nuevas palabras evocadas con sus correspondientes datos obtenidos en la desambiguación (peso, grado polisémico, significado, synset…). El número de palabras obtenidas en esta lista, será la misma que el parámetro numResultados.
NumeroDeResultados = numResultados
73
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.2.3- Identificar
Figura 16: Diagrama de Secuencia del Sistema de caso de uso “Identificar”.
Contrato: identificar(correo, contraseña)
Responsabilidad: Identificar al usuario observando en la base de datos si existe una cuenta con ese correo y con esa contraseña.
Excepciones: Si Usuario.correo ≠ correo, Usuario.contraseña ≠ contraseña o Usuario.activo=0, se da un mensaje de error al identificarse.
Postcondición: Se guarda el identificador del usuario y se anota que ese usuario ya está identificado.
Salida: OK: Un booleano que confirma si se ha identificado correctamente.
74
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.2.4- Gestionar usuario
Figura 17: Diagrama de Secuencia del Sistema de caso de uso “Gestionar usuario”.
Contrato: verDatos(idUsuario)
Responsabilidad: Visualiza los datos del usuario que tiene como identificador el numero enviado por parámetro.
Precondición: Existe Usuario.idUsuario = idUsaurio y el usuario está identificado.
Salida: Muestra la información del usuario que tenga Usuario.idUsuario = idUsuario.
75
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Contrato: darDeBaja(idUsuario)
Responsabilidad: Dará de baja al usuario que tenga el identificador enviado por parámetro.
Excepciones: Si no existe Usuario.idUsuario = idUsaurio, se muestra ERROR.
Precondición: El usuario está identificado.
Postcondición: El usuario dejará de estar identificado y Usuario.activo=0.
Salida: Muestra la confirmación de que si se ha dado de baja.
Contrato: cambiarDatos(idUsuario, correo, contraseña, nombre, …)
Responsabilidad: Cambiar los datos del usuario por los nuevos datos que se envian por parámetro.
Precondición: El usuario está identificado.
Postcondición: El usuario, cambiara sus datos por los nuevos valores.
Usuario.correo=correo Usuario.contraseña = contraseña Usuario.nombre = nombre …
Salida: La confirmación de que los datos han sido modificados satisfactoriamente.
76
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.2.5- Ver resultados
Figura 18: Diagrama de Secuencia del Sistema de caso de uso “Ver resultados”.
Contrato: palabrasIncorrectas()
Responsabilidad: Mostrar las palabras incorrectas que aparecen en las consultas registradas realizadas por todos los usuarios.
Excepciones: Si no existe ninguna palabra incorrecta, se indicará que no hay ninguna palabra incorrecta registrada.
Precondición: El usuario está identificado.
Salida: Mostrará una lista de las palabras incorrectas e información sobre estas.
77
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Contrato: palabrasIncorrectas(idUsuario)
Responsabilidad: Mostrar las palabras incorrectas que aparecen en las consultas registradas del usuario que su identificador coincida con el valor enviado por parámetro.
Excepciones: Si no existe ninguna palabra incorrecta en la consultas del usuario, Consulta.idUsuario = idUsuario, se indicará que no hay ninguna palabra incorrecta registrada por ese usuario.
Precondición: El usuario está identificado.
Salida: Mostrará una lista de las palabras incorrectas e información sobre estas palabras, en las consultas que tienen Consulta.idUsuario = idUsuario.
Contrato: buscarPalabra(palabra, tipo)
Responsabilidad: Mostrar información encontrada sobre la palabra y el tipo (n, v, r, a) que se envian por parámetro.
Precondición: El usuario está identificado.
Excepciones: Si no existe ningún registro que tenga Palabra.palabra = palabra y Palabra.tipo = tipo, se indicará que no hay datos sobre esa palabra.
Salida: Mostrará la información recopilada de todas las apariciones de la palabra que Palabra.palabra = palabra y Palabra.tipo = tipo.
Contrato: verHistorialConsultas()
Responsabilidad: Mostrará todas las consultas que estén registradas en la base de datos.
Excepciones: Si no existe ninguna consulta, se indicará la inexistencia de ninguna consulta registrada.
Precondición: El usuario está identificado.
78
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Salida: Mostrará una lista de consultas realizadas por todos los usuarios con posibilidad de utilizar la función de “cargarConsulta(listaPalabras)”.
Contrato: verHistorialConsultas(idUsuario)
Responsabilidad: Mostrará las consultas registradas que ha realizado el usuario que está identificado con el valor enviado por parámetro.
Excepciones: Si no existe ninguna consulta de ese usuario, Consulta.idUsuario = idUsuario, se indicará que no existe ninguna consulta registrada.
Precondición: El usuario está identificado.
Salida: Mostrará una lista de las consultas realizadas por el usuario, Consulta.idUsuario = idUsuario, con posibilidad de utilizar la función de “cargarConsulta(listaPalabras)”.
Contrato: cargarConsulta(listaPalabras)
Responsabilidad: Se irá al caso de uso de “consulta registrada”, con los valores de la lista de palabras, que se han enviado por parámetro, que han sido escritas anteriormente.
Precondición: El usuario está identificado.
79
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.2.6- Consulta registrada
Figura 19: Diagrama de Secuencia del Sistema de caso de uso “Consulta registrada”
Contrato: aplicarInfomap(listaPalabras, numRes)
Responsabilidad: Mostrar el resultado obtenido por Infomap con las palabras enviadas por parámetro.
Excepciones: Si no se ha obtenido ningún resultado con las palabras enviadas por parámetro, se mostrará un mensaje informando que puede intentarlo con otras palabras.
Precondición: El usuario está identificado.
Salida: Se mostraran las palabras resultantes con sus datos correspondientes.
NumeroDeResultados = numResultados
80
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Contrato: aplicarSSI(listaPalabras)
Responsabilidad: Mostrar el resultado obtenido por SSI-Dijsktra con las palabras enviadas por parámetro.
Excepciones: Si no se ha obtenido los significados de las palabras, se mostrará un mensaje informando que lo vuelva a intentar seleccionando otras palabras.
Precondición: El usuario está identificado.
Salida: Se mostraran los significados de las palabras obtenidas con sus datos correspondientes.
Contrato: guardarConsulta(listaPalabras, idUsuario)
Responsabilidad: Guardará en la base de datos todas las palabras con su información correspondiente que corresponden a la consulta generada por el usuario. listaPalabras, será una lista de las palabras con su correspondiente información obtenida en la consulta.
Precondición: El usuario está identificado.
Postcondición: Se habrá guardado en la base de datos la nueva consulta registrada.
Salida: Confirmación de que la consulta se ha registrado correctamente.
81
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.3- Diseño
Para explicar el diseño utilizado en la aplicación Web, se explicarán lo que
realizan todas las operaciones mencionadas en la parte del análisis con pseudocódigo y
se hablará del diseño utilizado en la base de datos, y la forma en que las tablas de las
base de datos están relacionadas.
6.3.1- Pseudocódigos
Función: guardarDatos(correo, contraseña, nombre, apellidos, …) Conectar a BD BD : Usuario.correo=correo, Usuario.contraseña= contraseña, Usuario.nombre= nombre, Usuario.apellidos=apellidos, … en Usuario error = BD: Codigo de salida Si error = error_copia_correo entonces Resultado = mensaje error de correo existente FinSi Si error = cualquier_error entonces Resultado = ERROR FinSi Resultado = OK Desconectar de BD Devolver Resultado
Función: consultarPalabras(ListaPalabras, numResultados) Repetir por cada palabra de ListaPalabras hacer paramInfomap+= Información de palabra en un formato adecuado finRepetir paramInfomap+= añadir numResultados ResInfomap = Consultar Infomap (paramInfomap) Repetir por cada palabra de ResInfomap hacer paramSSI+= Información de palabra en adecuado formato finRepetir Resultado = Consultar SSI-Dijkstra (paramSSI) Devolver Resultado
82
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Función: identificar(correo, contraseña) Conectar a BD Busqueda = BD: Seleccionar en Usuario donde Usuario.correo=correo y Usuario.contraseña=contraseña y Usuario.activo=1 Si Busqueda hay una fila entonces Resultado OK SESSION usuario = BD: Busqueda.idUsuario Sino Resultado INCORRECTO FinSi Desconectar de BD Devolver Resultado
Función: verDatos(idUsuario) Conectar a BD Resultado = BD: Seleccionar en Usuario donde Usuario.idUsuario=idUsuario Desconectar BD Devolver Resultado
Función: darDeBaja(idUsuario) Conectar a BD BD: Cambiar Usuario.activo -> 0 donde Usuario.idUsuario=idUsuario Si BD: Numero de filas afectadas = 1 entonces Resultado OK Sino Resultado INCORRECTO FinSi Desconectar BD Devolver Resultado
Función: cambiarDatos(idUsuario, correo, contraseña, nombre, …) Conectar a BD BD: Cambiar Usuario.correo->correo y Usuario.contraseña->contraseña y … donde Usuario.idUsuario=idUsuario Si BD: Numero de filas afectadas = 1 entonces Resultado OK Sino Resultado INCORRECTO FinSi Desconectar BD Devolver Resultado
83
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Función: palabrasIncorrectas() Conectar a BD Busqueda = BD: Seleccionar en Palabra donde Palabra.correcto=0 Repetir por cada fila de Busqueda hacer Resultado += Palabra de Busqueda finRepetir Si Resultado = vacio entonces Resultado = NINGUNA PALABRA FinSi Devolver Resultado Desconectar BD
Función: palabrasIncorrectas(idUsuario) Conectar a BD Busqueda = BD: Seleccionar en Palabra unida con Consulta por Palabra.idConsulta=Consulta.idConsulta donde Palabra.correcto=0 y Consulta.idUsuario=idUsuario Repetir por cada fila de Busqueda hacer Resultado += Palabra de Busqueda finRepetir Si Resultado = vacio entonces Resultado = NINGUNA PALABRA FinSi Devolver Resultado Desconectar BD
Función: buscarPalabra(palabra, tipo) Conectar a BD Busqueda = BD: Seleccionar en Palabra donde Palabra.palabra=palabra y Palabra.tipo=tipo Repetir por cada fila de Busqueda hacer Resultado += Información de Busqueda finRepetir Si Resultado = vacio entonces Resultado = PALABRA NO ENCONTRADA FinSi Devolver Resultado Desconectar BD
Función: verHistorialConsultas() Conectar a BD Busqueda = BD: Seleccionar en Consulta Repetir por cada fila de Busqueda hacer Resultado += Consulta de Busqueda
84
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
finRepetir Si Resultado = vacio entonces Resultado = NO HAY NINGUNA CONSULTA FinSi Devolver Resultado Desconectar BD
Función: verHistorialConsultas(idUsuario) Conectar a BD Busqueda = BD: Seleccionar en Consulta donde Consulta.idUsuario=idUsuario Repetir por cada fila de Busqueda hacer Resultado += Consulta de Busqueda finRepetir Si Resultado = vacio entonces Resultado = NO HAY NINGUNA CONSULTA FinSi Devolver Resultado Desconectar BD
Función: cargarConsulta(listaPalabras) Repetir por cada palabra de listaPalabras hacer Añadir palabra en formulario de consulta registrada finRepetir
Función: aplicarInfomap(listaPalabras, numRes) Repetir por cada palabra de ListaPalabras hacer paramInfomap+= Información de palabra en adecuado formato finRepetir paramInfomap+= añadir numResultados Devolver Consultar Infomap (paramInfomap)
Función: aplicarSSI(listaPalabras) Repetir por cada palabra de listaPalabras hacer paramSSI+= Información de palabra en adecuado formato finRepetir Devolver Consultar SSI-Dijkstra (paramSSI)
Función: guardarConsulta(listaPalabras, idUsuario) Conectar a BD BD: Insertar idUsuario en Consulta Correcto = SI
85
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Si BD: filas afectadas ≠ 1 entonces Correcto = NO finSi idConsulta = BD: Seleccionar Consulta.idConsulta en Consulta donde Consulta.idUsuario=idUsuario ordenado descendentemente por Consulta.fecha con limite 1 Repetir por cada palabra de listaPalabras y Correcto = SI hacer BD: Insertar datosPalabra, idConsulta en Palabra Si BD: filas afectadas ≠ 1 entonces Correcto = NO finSi FinRepetir Si Correcto = NO entonces BD: Borrar en Consulta donde Consulta.idConsulta=idConsulta Resultado NO REGISTRADO Sino Resultado OK finSi Desconectar BD Devolver Resultado
6.3.2- Tablas de la BD
La base de datos que utiliza la aplicación Web se llama “pfc”, y la esquema de
las base de datos es la que aparece en la figura 19.
86
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Figura 20: Esquema de la base de datos “pfc”.
Las consultas guardan un identificador, “idUser”, que le identifica al usuario que
ha generado esa consulta. Todas las consultas pertenecerán a un único usuario. Las
palabras tienen un identificador de consulta, “idConsult”, que indicara a que consulta
corresponde esa palabra. Todas las palabras pertenecerán a una única consulta.
Los índices que tienen las tablas, consult para identificar user, y words para
identificar consult, tienen una restricción de integridad de actualización y de borrado en
forma de cascada (CASCADE). Con esto, se evita que haya palabras o consultas
incoherentes. Así, por ejemplo, al registrar una consulta, y una vez que se registra la
consulta y la mitad de las palabras, si se surge un problema y se interrumpe el registro,
solo con borrar esa consulta en la tabla “consult”, borraría también todas las palabras de
esa consulta.
En las tablas 5,6 y 7 se ven todos los atributos con una breve descripción de las
tablas Consult, User y Words de la base de datos.
87
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Campo Tipo Nulo Predeterminado Comentarios idConsult int(11) No El identificador de la consulta idUser int(11) No Es la identificación del usuario al que le
corresponde está consulta date timestamp No CURRENT_TIMESTAMP La fecha de la consulta Tabla 5: La tabla Consult de la base de datos.
Campo Tipo Nulo Predeterminado Comentarios idUser int(11) No El identificador del usuario email varchar(100) No El email del usuario que no se
podrá repetir (UNIQUE) password varchar(50) No La contraseña del usuario, que
estará codificado name varchar(20) No El nombre del usuario surnames varchar(40) No Los apellidos del usuario country varchar(20) No El país donde reside el usuario date_create timestamp No CURRENT_TIMESTAMP La fecha de creación de este
usuario active tinyint(1) No 1 Si está activo o no Tabla 6: La tabla User de la base de datos.
Campo Tipo Nulo Predeterminado Comentarios idWords int(11) No Identificador de palabra idConsult int(11) No Identificador de consulta al que
corresponde está palabra word varchar(30) No Palabra pos varchar(1) No Tipo order int(11) No Orden new? tinyint(1) No 0 Si es una palabra que ha introducido el
usuario o no derived? tinyint(1) No 0 Si ha sido derivado por Infomap o no selected? tinyint(1) No 0 Si ha sido seleccionado por el usuario o
no weight double No 0 El peso que tiene en la derivación offset_synset varchar(20) No Identificador de significado reliability double No El peso que tiene en la desambiguación polysemy_degree int(11) No El grado polisémico gloss varchar(20) No Significado del "offset_synset" correct? tinyint(1) No 0 Si la desambiguación es correcta en el
contexto o no
Tabla 7: La tabla Words de la base de datos.
88
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.4- Implementación
La implementación de la aplicación Web se ha hecho con AJAX. En el lado del
servidor, como se ha comentado antes, se ha hecho con el lenguaje de programación
PHP y en el lado del cliente con JavaScript.
Ajax es una combinación de cuatro tecnologías ya existentes:
XHTML (o HTML) y hojas de estilos en cascada (CSS) para el diseño
que acompaña a la información.
Document Object Model (DOM) accedido con un lenguaje de scripting
por parte del usuario, especialmente implementaciones ECMAScript
como JavaScript y JScript, para mostrar e interactuar dinámicamente con
la información presentada.
El objeto XMLHttpRequest para intercambiar datos de forma asíncrona
con el servidor web. En algunos frameworks y en algunas situaciones
concretas, se usa un objeto iframe en lugar del XMLHttpRequest para
realizar dichos intercambios.
XML es el formato usado generalmente para la transferencia de datos
solicitados al servidor, aunque cualquier formato puede funcionar,
incluyendo HTML preformateado, texto plano, JSON y hasta EBML.
Respecto a las aplicaciones Infomap y SSI-Dijkstra, que se utilizan como
aplicaciones externas, se darán algunos detalles para ver su funcionamiento.
89
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.4.1- Infomap
El comando associate
El software Infomap se basa en el concepto de modelo; cada modelo consta de
archivos en un directorio conocido como "directorio del modelo" o "directorio de datos
del modelo". El software Infomap realiza dos funciones básicas: la construcción de
modelos basándose en textos de corpus usando parámetros dados por el usuario, y la
búsqueda de un modelo existente para encontrar palabras o documentos más
relacionados con la consulta realizada a ese modelo.
La construcción del modelo y la búsqueda se realiza utilizando un algoritmo
similar a Latent Semantic Analysis (LSA). Una vez construido el modelo, la búsqueda
se realiza usando el comando “associate”.
Para poder usar el comando “associate”, es necesario establecer ciertos valores
en algunas variables de entorno, por ejemplo, la variable de entorno INFOMAP
MODEL PATH contiene una lista de directorios separados por dos puntos, en los que
los directorios de datos de Infomap puedes ser encontrados.
Otra de las variables de entorno que hay establecer es INFOMAP_
WORKJNG_DIR, esta variable de entorno es usada por el programa de construcción de
Infomap para determinar donde se crearan los directorios de datos cuando los modelos
se creen. Se llama directorio de trabajo porque es el lugar donde están almacenados los
modelos que se están construyendo.
Una vez ajustados los valores en las variables de entorno, podemos hacer la
consulta, que se hará de la siguiente manera:
associate -n 20 -c BNCpos3prova tropicalpa speciespn
90
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
La parte tropicalpa speciespn es la consulta en sí, “tropical” y “species” son las
dos palabras que queremos buscar en nuestro corpus. Como podemos observar, estas
palabras tienen unos caracteres al final de cada una de ellas. Estos caracteres se utilizan
para indicar el POS de las palabras (n, v ,a, r). La opción -c nos sirve para determinar
cuál va a ser el corpus sobre el que vamos a realizar la búsqueda, en este caso será
BNCpos3prova.
El comando associate devuelve como salida una lista de palabras o documentos
que mejor se ajustan a la consulta realizada, en orden descendente de relevancia. Cada
línea de la salida consiste en una palabra o el identificador de un documento, seguido
por dos puntos, y seguido por un número que indica la proximidad de esa palabra
respecto a las palabras utilizadas en la consulta. En el caso de recuperación de
documentos, el identificador del documento puede utilizarse para obtener el documento
en sí.
Por defecto, el comando associate devuelve una lista de 10 palabras o
documentos que mejor coinciden con la consulta realizada. La opción -n de la línea de
comando puede utilizarse para cambiar este valor y especificar el número de líneas de
salida que se desean.
Ejemplos de uso
En la figura 21 podemos ver un ejemplo de cómo se puede realizar una consulta.
Esta consulta se realiza desde la consola de comandos de Unix. Lo primero que
debemos hacer es ajustar los valores de las variables de entorno, después introduciremos
la consulta que deseamos realizar y el programa nos dará su respuesta.
91
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
INFOMAP_MODEL_PATH=/home/cuadros/corpus/models INFOMAP_WORKING_DTR=/home/cuadros/corpus/models export INFOMAP_MODEL_PATH export INFOMAP_WORKING_DIR [rigau@adimen infomap]$ associate -n 20 -c BNCpos3prova tropicalpa specíespn tropicalpa:O.953014 speciespn:0.953014 birdspn:0.926641 mammalspn:0.908901 invertebratespn:0.889433 breedingpn:0.881263 temperatepa:O.876306 preypn:0.873921 birdpn:O.869077 whalespn:0.865983 insectspn:0.861247 habitatpn:O.854986 predatorspn:O.853619 butterfliespn: 0.845556 frogspn:O.827578 genuspn:O.827000 faunapn:O.822362 arcticpa:O.821317 habitatspn:O.820968 sealspn:O.818886
Figura 21: Ejemplo de uso del comando associate.
6.4.2- SSI-Dijkstra
En la figura 22 se puede ver el algoritmo SSI. Dada W, una lista ordenada de
palabras que deben ser desambiguadas, el algoritmo SSI funciona de la siguiente
manera: En el paso de inicialización, todas las palabras monosemicas son incluidas en
una lista I que contiene las palabras que ya están interpretadas, mientras que las palabras
polisémicas son incluidas en la lista P, donde estarán todas las palabras pendientes de
desambiguar. En cada paso, la lista I se usa para desambiguar una palabra de la lista P,
seleccionando el sentido de la palabra que más se aproxima entre las palabras ya
desambiguadas de la lista I. Una vez seleccionado el sentido, esa palabra la quitamos de
92
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
la lista P y la incluimos en la lista I. El algoritmo termina cuando ya no quedan más
palabras pendientes de desambiguar en la lista P.
SSI (T: list ofterms)
for each {t ϵ T} do l[t] = 0 if t is monosemous then
l[t] := the only sense of t eIse
P:= P U {t} end if
end for repeat P' := P for each {t ϵ P} do
BestSense := Ø MaxValue := 0 for each {sense s of t} do
W[s] := O N[s] := O for each {sense s' ϵ I} do
w := DijkstraShortestPath(s,s') if w>0 then
W[s] := W[s] + (l/w) N[s] := N[s] + 1
end if end for if N[s] > 0 then
NewValue := W[s]/N[s] If NewValue > MaxValue then
MaxValue := NewValue BestSense := s
end if end if
end for if MaxValue > 0 then
l[t] := BestSense P := P \ {t}
end if end for until P≠P' return (I,P);
Figura 22: Algoritmo SSI-Dijkstra
93
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Inicialmente, la lista de palabras interpretadas en I debería incluir los sentidos de
las palabras monosemicas de W.
En relación a la proximidad de un synset con el resto de synset de 1, se usa el
conocimiento que ya tenemos disponible para construir un grafo que contiene 99,635
nodos (synset) y 636,077 arcos obtenido del MCR. Este grafo incluye una serie de
relaciones directas sacadas WordNet y eXtended WordNet. Dijkstra es un algoritmo
muy eficiente para calcular cuál es la distancia más corta entre dos nodos del grafo.
SSI-Dijkstra tiene unas propiedades muy interesantes, por ejemplo, es capaz de
calcular de forma eficiente cuál es la distancia más corta entre dos nodos del grafo. Esto
es, el algoritmo nos proporciona una respuesta sobre si la distancia mínima entre dos
nodos es corta o larga. De hecho, el algoritmo compara las distancias entre los synsets
de una palabra con los synsets de las palabras ya interpretadas en I.
Además, esta aproximación es independiente del lenguaje. El mismo grafo se
puede usar para diferentes idiomas si existen palabras conectadas a WordNet para ese
lenguaje.
6.4.3- Detalles técnicos
Se explicará un poco algunos detalles de la implementación para que se pueda
saber cómo están hechos, y en qué lugar se pueden encontrar para futuras
modificaciones.
Para que la aplicación Web pueda funcionar en Fedora, se han dividido las
paginas entre los que son para interpretar (perl, php) y las que sin interpretar (jpg, gif,
css, js). Los que se pueden interpretar estarán en /var/www/cgi-bin/ y los que no en
/var/www/html/. Para que las páginas interpretadas puedan enlazar con los otros
archivos se han utilizado rutas relativas.
94
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
En el lado del servidor, vamos a tener cuatro páginas principales, que serán
BD.php, formulario.php, información.php y menú.php. BD.php gestiona las operaciones
que utilizan la base de datos, formulario.php nos devuelve los formularios que
queramos cargar, información.php nos devuelve la parte de la información que nos
interesa, y menu.php da el menú que tiene la aplicación Web.
Estas páginas, primero miran en qué idioma quieren que se dé el resultado.
Depende que idioma sea carga una u otra página de definiciones, que contienen todas
las variables que se utilizan con su correspondiente traducción. Estos ficheros están en
la carpeta constantes, teniendo como nombre, el idioma que representan ( euskera.php,
castellano.php, ingles.php o catalán.php). En esta carpeta también hay un fichero de
variables que tiene algunos parámetros que se pueden modificar.
En el lado del usuario, se utilizan los archivos de JavaScript (.js). La mayoría de
las funciones los contiene funciones.js. Aquí hay funciones generales que se utilizan
muchas veces para cargar los contenidos, o para que mande datos por xmlHttpRequest,
y otros más concretos. También hay el fichero encript.js que contiene dos funciones,
que son sha1 y md5 que se usan para codificar las contraseñas de los usuarios. Antes de
mandar las contraseñas a la parte del servidor se le aplica primero la función de md5, y
después sha1, y se manda la contraseña codificada.
Todos los ficheros necesarios para la barra de menú que tienen la aplicación
Web están en la carpeta de nombre “ddlevelsfiles”. Todas las imágenes están en la
carpeta de imágenes y el diseño de las páginas se hace mediante pagina.css, que es una
hoja de estilo que le da formato a los diferentes etiquetas de las páginas.
En definitiva, los cambios básicos que serian la de cambiar las traducciones de
los diferentes idiomas y la de cambiar parámetros como son datos de acceso a la base de
datos, o la ruta donde se localiza el software de infomap y SSI-Dijsktra, están en la
carpeta de constantes que antes hemos mencionado. Estos son ficheros PHP, que se
pueden cambiar las definiciones sin afectar en el funcionamiento de la aplicación Web.
95
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Las tablas de la base de datos son de tipo InnoDB que su característica principal
es que soporta transacciones de tipo ACID y bloqueo de registros e integridad
referencial. Y utilizan cotejamiento de utf8_spanish.
6.5- Pruebas
Las primeras pruebas se realizaron en el ordenador local con el sistema
operativo de Fedora, Infomap y SSI-Dijkstra, y también el servidor de Web Apache y
PHP. Una vez instalado todo, se realizó una primera iteración básica, consistió en unas
páginas PHP que utilizaban Infomap y SSI-Dijkstra y comprobar que se obtenía
correctamente los resultados.
Una vez comprobado esta primera versión, se hizo una segunda iteración más
compleja en Windows, sin utilizar Infomap y SSI-Dijsktra. Una vez terminada, se pasó
a Fedora, y se integró con Infomap y SSI-Dijsktra para verificar que el funcionamiento
era el esperado.
Las pruebas de la aplicación Web final, se realizarón en el ordenador local. Estás
pruebas se hicieron simulando la situación del servidor final, en el ordenador local.
Estas pruebas consistían en realizar todos los casos de uso, incluyendo situaciones
excepcionales. Estas pruebas se realizarón con dos navegadores, Internet Explorer y
Mozilla Firefox.
Una vez hecho las pruebas en el servidor local, se implantaron en el servidor
final, y se tendrá un periodo de prueba de dos semanas, para que, con el funcionamiento
habitual, se detectaran los posibles fallos que puedan existir, y realizar una nueva
versión de la aplicación Web evitando estos posibles fallos.
96
6- Desarrollo de la aplicación Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
6.6- Implantación
Se han realizado 3 implantaciones básicas en el servidor final: primer prototipo
de la aplicación web27, el segundo prototipo28 y el servicio Web29
Cambios principales que se han tenido que hacer en la implantación de la
aplicación Web (prototipo 2) en el servidor final son estas:
. El segundo prototipo
de la aplicación Web, al ser la versión final que debe de corregir posibles fallos de
funcionamiento, ha tenido actualizaciones que han ocasionado que se tenga que
implantar en más de una ocasión.
1. Cambiar los permisos de los ficheros para que todos los usuarios tengan derecho de leer y ejecutar estos ficheros.
2. Cambiar los ficheros que se interpretan (archivos PHP) al directorio
/var/www/cgi-bin/, y los ficheros que no se interpretan cambiarlos a /var/www/html, teniendo que cambiar las rutas que se hayan utilizado en los enlaces entre ficheros.
Las implantaciones de primer prototipo de la aplicación Web y el servicio Web,
al ser más simples, no se tuvo realizar ningún cambio importante en la implantación.
27 http://adimen.si.ehu.es/cgi-bin/WSDbyEvocation.v1/index.php 28 http://adimen.si.ehu.es/cgi-bin/WSDbyEvocation/index.php 29 http://adimen.si.ehu.es/WSDbyEvocation/infomap+ssi.html
97
7- Desarrollo del servicio Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
7- Desarrollo del servicio Web
Este servicio Web, combina Infomap y SSI-Dijsktra en uno. Así, al llamar a este
servicio Web introduciendo una serie de palabras y el numero de resultados que se
quieran obtener, se obtendrá un documento XML que da como resultado una serie de
palabras, evocadas mediante Infomap, y con sus respectivos significados,
desambiguados mediante SSI-Dijsktra.
7.1- Diseño
Esté servicio Web solo tendrá una función, que pasadas una serie de palabras
con su correspondiente tipo, y el numero de resultados que se quiera obtener, devolverá
el resultado de aplicar Infomap y posteriormente SSI-Dijkstra. A continuación se
pondrá la función en pseudocódigo para que se vea lo que hace:
Función: infomap+SSI(listaPalabras, numResultados) Repetir por cada palabra pasado por url hacer paramInfomap+= Información de palabra en formato adecuado finRepetir paramInfomap+= añadir numResultados resultado_infomap = Consultar Infomap (paramInfomap) Repetir por cada palabra de resultado_infomap hacer paramSSI+= Información de palabra en adecuado formato finRepetir resultado_ssi = Consultar SSI-Dijkstra (paramSSI) Repetir por cada palabra resuleto hacer resultado += poner en formato XML finRepetir Devolver resultado
98
7- Desarrollo del servicio Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Para introducir los parámetros y sus valores, se hará mediante URL del servicio
Web. Tendrá dos tipos de parámetros:
n=numero: El numero de resultados que se quiere obtener.
w=palabra-tipo: Este parámetro contendrá la palabra que se quiere buscar.
“palabra” será la palabra que se quiere buscar y “tipo”, que es la letra que identifica el
tipo de la palabra (n:nombre, a:adjetivo, r:adverbio, v:verbo). Este parámetro se repite
por cada palabra que se quiera buscar.
El resultado de este servicio Web, será un documento XML que tendrá la
información obtenida de Infomap y SSI-Dijkstra. Tendrá este formato:
<result>
<token> <word>palabra</word> <pos>tipo</pos> <new>Si ha sido introducido</new> <derived>Si ha sido derivado</derived> <weight>Fiabilidad en evocación</weight> <order>Orden</order> <selected>Si ha sido seleccionado</selected> <offset_synset>Significado elegido por el contexto</offset_synset> <reliability>Fiabilidad en desambiguación</reliability> <polysemy_degree>Grado polisémico</polysemy_degree> <gloss>Significado</gloss> <correct>Si su significado es correcto en el contexto</correct>
</token> …
</result>
Por ejemplo, al querer 3 resultados de las palabras teach(verbo) y
student(nombre):
Infomap+ssi.html?n=3&w=teach-v&w=teacher-n
99
7- Desarrollo del servicio Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Parte del resultado de eso sería este:
<result> <token>
<word>teach</word> <pos>v</pos> <new>true</new> <derived>true</derived> <weight>0.947589</weight> <order>2</order> <selected>true</selected> <offset_synset>00829107-v</offset_synset> <reliability>0.483333333333333</reliability> <polysemy_degree>10</polysemy_degree> <gloss>impart skills or knowledge to</gloss> <correct>true</correct>
</token> <token>
<word>teacher</word> <pos>n</pos> <new>true</new> <derived>true</derived> <weight>0.947589</weight> <order>1</order> <selected>true</selected> <offset_synset>10694258-n</offset_synset> <reliability>0.398148148148148</reliability> <polysemy_degree>9</polysemy_degree> <gloss>a person whose occupation is teaching </gloss> <correct>true</correct>
</token> <token>
<word>teaching</word> <pos>n</pos> <new>false</new> <derived>true</derived> <weight>0.906887</weight> <order>3</order> <selected>true</selected> <offset_synset>00883297-n</offset_synset> <reliability>0.5</reliability>
100
7- Desarrollo del servicio Web PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
<polysemy_degree>11</polysemy_degree> <gloss>the activities of educating or instructing; activities that impart knowledge or skill</gloss> <correct>true</correct>
</token> </result>
7.2- Implementación
Solo es un fichero html que coge por parámetros del url las palabras introducidas
y devuelve el resultado en XML. No está vinculado a ninguna página.
Se ha implementado en Javascript, usando xmlhttprequest para mandar
peticiones al software de Infomap y SSI-Dijkstra, y luego tratando el resultado obtenido
con este lenguaje de programación.
7.3- Pruebas
Ya qué utiliza líneas de código utilizado en la aplicación Web, las pruebas
realizadas en él han servido para verificar qué parte del código funciona correctamente
en el servidor final. Después de las modificaciones se han hecho pruebas en el servidor
local.
7.4- Implantación
En la implantación, se ha tenido que modificar dos variables del servicio Web,
en el que estos variables definen donde está localizado el software de Infomap y SSI-
Dijkstra.
101
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
8- Gestión
En la tabla 8 se ve la comparativa entre la duración de las tareas que se ha
estimado en el DOP y el tiempo real que se ha durado en realizarse. También veremos
una pequeña conclusión que sacamos viendo las comparativas en las conclusiones.
8.1- Comparativa por tareas
Tabla 8: Comparativa por tareas.
Tarea Duración estimado (h) Duración real (h) Diferencia (%) Procesos tácticos 47 57 121%
Análisis de entorno 5 4 80% Gestión de herramientas 2 3 150% Planificación 30 36 120% Reuniones 10 14 140%
Procesos formativos 103 107 104% Herramientas 3 6 200% Lenguajes de programación 10 6 60% Tecnologías 2 3 150% Memoria 80 92 115% Presentación 8 0%
Procesos operativos 176 213 121% Primera iteración 13 8 62%
Análisis de entorno 2 2 100% Captura de requisitos 3 3 100% Modificar SSI-Dijkstra 8 3 38%
Segunda iteración 19,5 22 113% Captura de requisitos 2 1 50% Análisis 2 2 100% Diseño 3 2 67% Implementación 10 15 150% Pruebas 2 1,5 75% Implantación 0,5 0,5 100%
Tercera iteración 136 179 132% Captura de requisitos 12 8 67% Análisis 10 7 70% Diseño 7 8 114% Implementación 90 135 150% Pruebas 15 20 133% Implantación 2 1 50%
Cuarta iteración 7,5 4 53% Diseño 1,5 0,5 33% Implementación 4 2,5 63% Pruebas 1 0,5 50% Implantación 1 0,5 50%
TOTAL 326 377 116%
102
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
En la tabla 8 vemos la duración estimada, duración real y la diferencia que hay
entre ambas duraciones. La diferencia indica que porcentaje de la duración estimado se
ha utilizado realmente.
8.2- Comparativa entre procesos
En la figura 23, se ve la diferencia que ha habido entre el tiempo planificado y el
tiempo durado en cada proceso.
Figura 23: Gráfico que refleja la comparativa entre procesos.
El mayor esfuerzo ha sido en los procesos operativos, siendo más esfuerzo del
que esperábamos.
8.3- Comparativa por procesos
Para ver la comparativa entre las tareas de cada proceso, se ilustrara mediante
gráficos que indicas los porcentajes de tiempo utilizado en el esfuerzo planificado y el
esfuerzo real.
Procesos tácticosProcesos formativos
Procesos operativos
47 103176
57 107213
Duración estimado (h) Duración real (h)
103
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
8.3.1- Procesos tácticos
Los gráficos 24 y 25 muestran el esfuerzo planificado y el esfuerzo real en
procesos tácticos.
Figura 24: Gráfico que refleja el esfuerzo planificado en procesos tácticos.
Figura 25: Gráfico que refleja el esfuerzo real en procesos tácticos.
El mayor esfuerzo en los procesos tácticos ha sido la de planificación, seguido
de las reuniones.
11%4%
64%
21%
Esfuerzo planificado en procesos tácticos
Análisis de entorno
Gestión de herramientas
Planificación
Reuniones
7%5%
63%
25%
Esfuerzo real en procesos tácticos
Análisis de entorno
Gestión de herramientas
Planificación
Reuniones
104
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
8.3.2- Procesos formativos
Los gráficos 26 y 27 muestran el esfuerzo planificado y el esfuerzo real en
procesos formativos.
Figura 26: Gráfico que refleja el esfuerzo planificado en procesos formativos.
Figura 27: Gráfico que refleja el esfuerzo real en procesos formativos.
Como estaba previsto, la tarea que requiere bastante más esfuerzo es la memoria.
3%
10%2%
77%
8%
Esfuerzo planificado en procesos formativos
Herramientas
Lenguajes de programación
Tecnologías
Memoria
Presentación
5%6% 3%
86%
Esfuerzo real en procesos formativos
Herramientas
Lenguajes de programación
Tecnologías
Memoria
Presentación
105
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
8.3.3- Procesos operativos
Los gráficos 28 y 29 muestran la diferencia entre el esfuerzo planificado y el
esfuerzo real en procesos operativos.
Figura 28: Gráfico que refleja el esfuerzo planificado en procesos operativos.
Figura 29: Gráfico que refleja el esfuerzo real en procesos operativos.
La tercera iteración, es decir, el segundo prototipo de la aplicación Web es el
que más tiempo ha supuesto.
8% 11%
77%
4%
Esfuerzo planificado en procesos operativos
Primera iteración
Segunda iteración
Tercera iteración
Cuarta iteración
4%
10%
84%
2%
Esfuerzo real en procesos operativos
Primera iteración
Segunda iteración
Tercera iteración
Cuarta iteración
106
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Ya que los procesos operativos tienen subtareas, se muestran los gráficos 30 y
31 que indican entre las tareas repetidas en las diferentes iteraciones, los cambios que
hay entre el tiempo planificado y el tiempo real.
Figura 30: Gráfico que refleja el esfuerzo planificado de las tareas en los procesos
operativos.
Figura 31: Gráfico que refleja el esfuerzo planificado de las tareas en los procesos
operativos.
2 3
82
2 3 10 2 0,5
1210 7 90 15
2
1,5 4 11
Esfuerzo planificado de las tareas en los procesos operativos
Primera iteración Segunda iteración Tercera iteración Cuarta iteración
2 3
31
2 2 15 1,5 0,5
8 7 8 135 20 1
0,5 2,5 0,50,5
Esfuerzo real de las tareas en los procesos operativos
Primera iteración Segunda iteración Tercera iteración Cuarta iteración
107
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
En los gráficos 30 y 31 se pueden observar dos cosas. La primera es que la
tercera iteración es el que ha conllevado más tiempo, que también se veía en los
gráficos 28 y 29. Y el segundo la implementación ha sido el que más tiempo ha
requerido.
8.4- Conclusiones de la gestión
Viendo estos gráficos, se ve que las tareas que más tiempo han requerido son la
planificación, la memoria y la tercera iteración.
La mayor diferencia entre el esfuerzo planificado y el real es en la tercera
iteración. La tercera iteración ha conllevado más tiempo del planificado con lo que ha
supuesto que se haya incrementado la diferencia entre el planificado y el real. Aun así,
tampoco hay una diferencia abismal, y se puede decir que la planificación inicial se
ajusta al tiempo real utilizado en el proyecto.
108
8- Gestión PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
109
9- Conclusiones PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
9- Conclusiones
Este proyecto se ha desarrollado satisfactoriamente, dentro de los plazos
establecidos y sin haber habido ningún contratiempo reseñable.
Este proyecto ha servido para crear una aplicación Web que proporciona una
capa de presentación, y gestión de consultas y usuarios a las aplicaciones de evocación
y desambiguación de palabras.
Está aplicación Web puede ayudar a detectar potenciales mejoras en todo el
procesos incluyendo posibles fallos de los programas de Infomap y SSI-Dijkstra.
9.1- Mejoras
Como en todas las cosas, siempre existen infinidad de mejoras que se pueden
realizar. En este caso, algunas mejoras posibles que se podrían hacer son estás:
1. Al obtener el resultado final, crear un grafo que presente las relaciones que existen entre cada palabra que aparece en el resultado.
2. La utilización de procedimientos almacenados en la base de datos. Así, en el caso de registrar las consultas registradas, utilizando transacciones, se registraran todas las palabras o ninguno.
3. Posibilidad de que los usuarios dejen comentarios personales en las
consultas, de manera que los otros usuarios lo puedan leer, y así, poder entender mejor su selección y elección de significados incorrectos.
4. Utilización de cookies para recordar el idioma que utiliza y cargar ese
idioma desde el principio.
110
9- Conclusiones PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
9.2- Valoración personal
Creó que la aplicación Web que se ha creado es muy robusta e intuitiva.
Al utilizar mucho código en la parte del cliente, no creo que sea una aplicación
muy pesada para el servidor, ya que se ha intentado que moleste lo menos posible al
servidor que contenga está aplicación Web.
Personalmente me ha servido, para realizar todas las tareas que se tienen que
realizar para gestionar un proyecto desde el principio hasta el final y para adquirir
conocimiento sobre las aplicaciones existentes de evocación y desambiguación de
palabras. También me ha servido para la realización de una página Web completo en
AJAX, y así poder conocer que tipos de problemas suelen surgir y qué tipo de
soluciones se pueden aplicar en estos casos.
111
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
10- Manual de usuario
10.1- Aplicación Web
En este manual de usuario se pretende guiar para que el usuario sepa utilizar las
principales funcionalidades de la aplicación Web.
10.1.1- Información general
Todas las opciones están localizadas en la parte de arriba. Desde este menú se
accede a todas las funcionalidades de la página Web.
1. Menú: Donde están todas las opciones. 2. Ir atrás: Para ir a la página anterior donde hayas estado. 3. Inicio: Para volver a la página inicial.
112
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
4. Información: Aparecerá un submenú donde tendrás información relacionada a las aplicaciones que se han utilizado en la aplicación Web.
5. Evocación: Tiene un submenú que permite realizar una consulta. Si el usuario se registra, este submenú se amplia y permite hacer consultas registradas, ver palabras incorrectas, buscar una palabra, y ver historial de consultas.
6. Usuarios: Tiene un submenú que permite al usuario entrar o registrar un nuevo usuario. Si es usuario esta registrado, se cambian las opciones y da posibilidad de ver datos, cambiar datos, dar de baja o salir.
7. Enlaces: Muestra unos enlaces que se han utilizado para obtener información que hay en la aplicación Web o porque tiene relación con el proyecto.
8. Contacto: Muestra información referente a la creación de la pagina Web. 9. Manual Web: Tendrá un manual en el que explica el funcionamiento de la
Web. 10. Idioma: Tendrá un submenú que posibilita cambiar de idioma. 11. Ir adelante: Si se ha utilizado “ir atrás”, el usuario podrá volver a la página
que antes ha estado yendo una página adelante.
10.1.2- Identificar usuario
113
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
El usuario rellena este formulario para identificarse.
1. Email (1): El usuario introduce su email. 2. Contraseña (2): Introduce su contraseña. 3. Entrar (3): Pulsa este boton para que se verifique sus datos y poder entrar.
10.1.3- Cambiar datos
En este formulario el usuario modifica los datos o introduce los datos que desee
cambiar.
1. Email: El email del usuario. 2. Contraseña: La contraseña del usuario. 3. Repetir contraseña: La repetición de la contraseña. 4. Nombre: Nombre del usuario. 5. Apellidos: Apellidos del usuario. 6. Provincia: Provincia del usuario. 7. Ciudad: Ciudad del usuario. 8. Cambiar: Envia la petición de modificar los datos.
114
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
10.1.4- Consulta registrada
115
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
Si el usuario quiere hacer una consulta, sea consulta normal o registrada, deberá
de rellenar el primer formulario que aparece en la figura (1 rojo). Las partes que tiene
este formulario son los siguientes:
1. Palabra: En estos campos se introducirán las palabras que se quieren buscar. 2. Tipos: Se elige el tipo al que corresponde la palabra de esa fila. 3. Borrar: Borra el contenido de la fila. 4. Insertar: Inserta una nueva fila para que se pueda meter una nueva palabra. 5. Quitar: Eliminar una fila del formulario. 6. Numero: Se escribe el número de resultados que se quiere obtener. 7. Mandar: Para obtener el resultado de esa consulta mediante Infomap.
Una vez enviado la petición, aparecerá su resultado (2 rojo) y tendrá otro
formulario con:
8. Selección: Se pulsa en las casillas donde se quiere elegir esa palabra. 9. Continuar: Para obtener el resultado de aplicar SSI-Dijkstra.
El siguiente resultado (3 rojo) tendrá un último formulario para rellenar, muy
parecida al anterior:
10. No correcto: Selecciona esta casilla en las palabras que veas que su significado no se corresponde en el contexto de la consulta realizada.
11. Guardar: Pulsa para que se registre esa consulta.
116
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
10.1.5- Buscar palabra
En este formulario se introduce la palabra y el tipo de la palabra que se quiera
buscar.
1. Palabra: Se introduce la palabra. 2. Tipo: Se selecciona el tipo de la palabra. 3. Buscar: Se pulsa para obtener el resultado.
117
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
10.2- Servicio Web
Este servicio Web, funciona con los parámetros que se le pasan por URL. Estos
parámetros son de dos tipos:
n: número de resultados que se quiera obtener.
w: Las palabras que se quieran utilizar (palabra-{n,v,r,a}). Se puede repetir hasta
introducir todas las palabras deseadas.
118
10- Manual de usuario PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
119
<11- Referencias PPFFCC:: XXAABBIIEERR AARRAAMMEENNDDII AAMMEENNAABBAARR
11- Referencias
Agirre, E., & Edmonds, P. -E. (2007). Word Sense Disambiguation: Algorithms and applications. Softcover ISBN: 978-1-4020-6870-6.
Cuadros M. and Rigau G. Bases de Conocimiento Multilíngües para el Procesamiento Semántico a Gran Escala. Procesamiento del Lenguaje Natural. (SEPLN). Vol. 40, 3.-4. I.-5. ( 2008).