pfc: xabier aramendi amenabar -...
TRANSCRIPT
Desarrollo de aplicación Web para la desambiguación de sentidos de palabras por
evocación
TITULACIÓN: Ingeniería técnica en informática de sistemasFACULTAD: Facultad de InformáticaFECHA: Abril de 2010
ALUMNO: Xabier Aramendi AmenabarDIRECTOR: German Rigau Claramunt
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Índice
ÍNDICE_______________________________________________________________________________2
INTRODUCCIÓN_______________________________________________________________________4
MARCO DE TRABAJO___________________________________________________________________8
REDES SEMÁNTICAS_____________________________________________________________________8WordNet_________________________________________________________________________9EuroWordNet____________________________________________________________________11
PROYECTO MEANING___________________________________________________________________12Multilingual Central Repository (MCR)________________________________________________13Wei____________________________________________________________________________14
KYOTO____________________________________________________________________________14INFOMAP___________________________________________________________________________16
Latent Semantic Analysis (LSA)______________________________________________________17British National Corpus____________________________________________________________17Infomap: El comando associate______________________________________________________18Ejemplos de uso__________________________________________________________________19
SSI-DIJKSTRA________________________________________________________________________20SERVICIOS WEB______________________________________________________________________22APLICACIÓN WEB_____________________________________________________________________25
ARQUITECTURA DEL SISTEMA___________________________________________________________26
APLICACIÓN WEB_____________________________________________________________________26SERVICIO WEB_______________________________________________________________________27
ELECCIÓN TECNOLÓGICA_______________________________________________________________28
EL SISTEMA_________________________________________________________________________28Fedora_________________________________________________________________________28Apache_________________________________________________________________________28PHP____________________________________________________________________________29MySQL_________________________________________________________________________29
DESARROLLO________________________________________________________________________30Dreamweaver____________________________________________________________________31Photoshop______________________________________________________________________31Word__________________________________________________________________________31Visio___________________________________________________________________________31Excel___________________________________________________________________________32PowerPoint______________________________________________________________________32Firebug_________________________________________________________________________32
DESARROLLO DE LA APLICACIÓN WEB____________________________________________________34
CAPTURA DE REQUISITOS________________________________________________________________34Modelo de Casos de Uso (MCU)______________________________________________________34Modelo de Dominio (MD)___________________________________________________________39
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
ANÁLISIS___________________________________________________________________________40Registrar usuario_________________________________________________________________40Consulta________________________________________________________________________41Identificar_______________________________________________________________________42Gestionar usuario_________________________________________________________________43Ver resultados___________________________________________________________________45Consulta registrada_______________________________________________________________47
DISEÑO____________________________________________________________________________48Pseudocódigos___________________________________________________________________49Tablas de la BD___________________________________________________________________53
IMPLEMENTACIÓN_____________________________________________________________________55Detalles técnicos_________________________________________________________________56
PRUEBAS___________________________________________________________________________57IMPLANTACIÓN_______________________________________________________________________58
DESARROLLO DEL SERVICIO WEB________________________________________________________59
DISEÑO____________________________________________________________________________59IMPLEMENTACIÓN_____________________________________________________________________61PRUEBAS___________________________________________________________________________61IMPLANTACIÓN_______________________________________________________________________62
GESTIÓN____________________________________________________________________________63
COMPARATIVA POR TAREAS______________________________________________________________64COMPARATIVA ENTRE PROCESOS___________________________________________________________65COMPARATIVA POR PROCESOS_____________________________________________________________65
Procesos tácticos_________________________________________________________________66Procesos formativos_______________________________________________________________67Procesos operativos_______________________________________________________________68
CONCLUSIONES DE LA GESTIÓN____________________________________________________________70
CONCLUSIONES______________________________________________________________________71
MEJORAS___________________________________________________________________________71VALORACIÓN PERSONAL_________________________________________________________________72
APÉNDICE___________________________________________________________________________73
DOP______________________________________________________________________________73Objetivo________________________________________________________________________73Método de trabajo________________________________________________________________73Alcance_________________________________________________________________________74Planificación temporal_____________________________________________________________83Plan de contingencia______________________________________________________________85Análisis de factibilidad_____________________________________________________________87
MANUAL DE USUARIO__________________________________________________________________87Información general_______________________________________________________________87Identificar usuario________________________________________________________________88Cambiar datos___________________________________________________________________89Consulta registrada_______________________________________________________________90Buscar palabra___________________________________________________________________91
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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 Natural (PLN).
La desambiguación de sentidos de las palabras (WSD: Word Sense Disambiguation) es tradicionalmente considerado uno de los problemas complejos de la IA. 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 un mismo software.
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 Corpus (BNC), estos términos que se producen están estrechamente relacionados con las palabras consultadas por el usuario.
Latent Semantic Analysis (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, produciendo una serie de conceptos relacionados con los términos y los documentos.
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.
El software SSI-Dijkstra es una versión del algoritmo SSI (Structural Semantic Interconnections), que basándose en el conocimiento iterativo está orientado a la desambiguación de la las palabras (WSD: Word Sense Disambiguation).
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Para ver el funcionamiento de la aplicación Web, vamos a proponer un ejemplo. En el ejemplo, el usuario quiere descubrir de qué se trata un término. En concreto el usuario quiere averiguar esté término, “structural semantic interconnection”, por lo que el usuario introduce las palabras especificando cada palabra de qué tipo de palabra se trata, y especificando cuantas palabras relacionadas quiere obtener.
Structural (Adjetivo) Semantic (Adjetivo) Interconnection (Nombre)
Mediante Infomap, la aplicación Web obtendrá una serie de palabras relacionadas con las palabras introducidas. En nuestro ejemplo queremos obtener las 15 palabras más relacionadas a esas tres palabras. El resultado sería este:
1. variant (Nombre)2. structural (Adjetivo)3. formalism (Nombre)4. spatial (Adjetivo)5. structure (Nombre)6. signification (Nombre)7. discrete (Adjetivo)8. elaborate (Verbo)9. associative (Adjetivo)10. schematic (Adjetivo)11. semantic (Adjetivo)12. generative (Adjetivo)13. complex (Adjetivo)14. kinship (Nombre)15. probabilistic (Adjetivo)
Como vemos, en este ejemplo no aparece el nombre “Interconnection”. Eso se debe a que Infomap busca las palabras que más tienen que ver con el término que se busca, y los devuelve ordenados. Por eso “Interconnection” no aparece, ya que hay otras palabras que están más relacionados. Si en este ejemplo pusiéramos que nos devolviera más resultados, no aparecería la palabra “Interconnection” en el puesto 42.
Una vez obtenidos los resultados de Infomap podremos deseleccionar alguna palabra 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 seleccionadas, la aplicación Web analizara este conjunto de palabras mediante SSI-Dijkstra.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Una palabra puede tener varios sentidos posibles, depende en qué contexto hablemos, por lo que la función de SSI-Dijkstra es la de obtener los significados correctos que corresponden al contexto en que se dan las palabras. Los significados se identifican con un numero y el tipo del que se trata (n: nombre, a: adjetivo, v: verbo, r: adverbio) que corresponden a un sentido en concreto, que se llama “Synset”. En el caso del ejemplo obtendríamos este resultado:
Palabra Synset Significadovariant 05971621-n (philosophy) the philosophical theory that formal (logical or
mathematical) statements have no meaning but that its symbols (regarded as physical entities) exhibit a form that has useful applications
structural 05840650-n something a little different from others of the same typeformalism 02842042-a of or relating to meaning or the study of meaningspatial 00955601-v add details, as to an account or idea; clarify the meaning of
and discourse in a learned way, usually in writingstructure 06601327-n the message that is intended or expressed or signifiedsignification 02841066-a pertaining to or involving or having the nature of spacediscrete 04931965-n the manner of construction of something and the
arrangement of its partselaborate 01867295-a having the ability to produce or originateassociative 02897158-a relating to or having or characterized by structureschematic 03103058-a of or relating to the Roman Catholic philosophy of probabilismsemantic 02110778-a constituting a separate entity or partgenerative 02176178-a complicated in structure; consisting of interconnected partscomplex 00157389-a characterized by or causing or resulting from the process of
bringing ideas or events together in memory or imaginationkinship 13812607-n (anthropology) relatedness or connection by blood or
marriage or adoptionprobabilistic 01980796-a represented in simplified or symbolic form
El usuario al tener una serie de palabras con sus significados correspondientes, se podrá hacer una idea de qué se trata el término que ha introducido inicialmente. Puede haber alguna palabra que su significado no corresponda al contexto, por lo que el usuario tiene la posibilidad de registrar esa consulta e indicar que el significado que da SSI-Dijkstra en el contexto actual no es correcto.
Con las consultas que se hayan registrado, habrá la posibilidad de ver las palabras que en la consulta realizada no se ha obtenido un significado satisfactorio, para una posible corrección en el software SSI-Dijkstra o donde haya podido fallar, siempre sabiendo que el usuario haya podido catalogar como incorrecto y poder ser correcto.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
El objetivo de este proyecto será la de elaborar una aplicación web. La principal funcionalidad de este servicio web es la de proporcionar un interfaz para la utilización de la aplicación Infomap, que se basa en LSA, y la de obtención de las interpretaciones de las palabras basado en el conocimiento, mediante la aplicación SSI-Dijkstra.
Esta aplicación Web, también tendrá información necesaria para entender la funcionalidad de la aplicación Web, del software que utiliza, y también se hará una gestión de los usuarios. El ejemplo puesto anteriormente, se trata de una consulta registrada que solo lo podrá realizar un usuario que se haya registrado e identificado, pero también hay otra consulta que introduciendo las palabras que se quieran buscar, directamente da la solución final.
Al crear una aplicación web que utilice estas dos aplicaciones conjuntamente, se evita la necesidad de instalar estas dos aplicaciones, y la de facilitar un estudio sobre estas aplicaciones.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Marco de Trabajo
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.
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.
Figura 1: Ejemplo de red semántica
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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 nodo (mamífero, animal, oso, pez,…), las relaciones (es un, tiene, vive en) y las distancias.
Existen diversos tipos d 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 WordNet.
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 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 (PartofSpeech); que puede ser (n) para nombres, (v) para verbos, (a) para adjetivos y (r) para adverbios:
02152053#n fish#101926311#v run#102545023#a funny#400005567#r automatically#1
El número que aparece después de cada palabra indica el número de sentido que representa el synset. 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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;
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, tenemos que tener en cuenta los arcos de la red semántica, estos 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 hyperónimia 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#2inactive#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#2milk#n#1 HAS_SUBSTANCE protein#n#1family#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#1protein#n#1 SUBSTANCE_OF milk#n#1
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
child#n#2 MEMBER_OF family#n#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 EuroWordNet (Vossen, 1998). EuroWordNet (EWN) consiste en una extensión multilingüe de WN, compuesta por bases de datos léxicas para 8 idiomas (inglés, holandés, español, italiano, francés, alemán, checo y estonio).
Tras la finalización del proyecto EWN, empezaron a desarrollarse wordnets para idiomas como el catalán, euskera, portugués, griego, búlgaro, ruso y sueco. Actualmente, la creación de estos wordnets está coordinada por “Global Wordnet Organization”.
El Í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 difrentes, 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 Intellingü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
En la siguiente figura 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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, español), 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 español, 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 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.
Proyecto Meaning
Meaning (Rigau et al., 2002) representa uno de los proyectos más ambiciosos relacionados con EWN y WN. Su objetivo principal consiste en la adquisición automática del conocimiento lingüístico (en especial, del conocimiento semántico o conceptual) a partir de la Web y
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
construcción de recursos léxicos más eficiente, 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.
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:
Conjunto de herramientas para adquisición automática de conocimiento semántico a partir de grandes colecciones de textos disponibles en la web.
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.
El Repositorio Central Multilingüe (MCR), fue desarrollado como parte de este proyecto. Su principal objetivo fue el de mantener la compatibilidad entre los diferentes wordnets y poder exportar, de forma consistente, el conocimiento adquirido para un idioma en particular al resto de idiomas. Actualmente constituye probablemente la base de conocimiento léxico multilingüe más extenso y más rico jamás construido.
Multilingual Central Repository (MCR)
El MCR (Multilingual Central Repository) (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.
Su versión final 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Wei
Para poder interactuar con el MCR se desarrolló WEI (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.
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.
Kyoto
El proyecto KYOTO (Knowledge Yielding Ontologies for Transition-based Organization) (ICT-211423) empezó en Marzo de 2008 y tiene previsto terminar en Marzo de 2011.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
KYOTO tiene como objetivo construir un sistema de información independiente del lenguaje para un dominio específico (medio ambiente, ecología y biodiversidad). Este sistema será una ontología compartida independiente del lenguaje que estará vinculada a WordNets de 7 idiomas diferentes. Para cada idioma, la identificación y la extracción léxica de conceptos se llevará a cabo por los Kybots, 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.
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. En la figura 4 podemos ver cómo funciona este proceso.
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 lugares de diferentes y variadas fuentes de información de múltiples idiomas.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
4. El wiki de medio ambiente (Wikyoto) permite a las personas del dominio a mantener los términos y conceptos y a ponerse de acuerdo en su significado, sin depender del idioma. 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 detectar datos en 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 Tybots 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.
Infomap
Una de las aplicaciones que necesitaremos para desarrollar el servicio web será Infomap, este programa 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 Corpus (BNC), estos términos que se producen están estrechamente relacionados con las palabras consultadas por el usuario.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Latent Semantic Analysis (LSA)
Latent Semantic Analysis (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, produciendo una serie de conceptos relacionados con los términos y los documentos.
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 palabras de los pasajes más significativos de un gran corpus de texto, tales como párrafos u oraciones.
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.
British National Corpus
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 completo 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).
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
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.
Ejemplo: Para las fuentes escritas, se toman muestras de 45.000 palabras de diferentes textos de un solo autor. Los textos más breves se incluyen al completo (45.000 palabras como máximo), como artículos de revistas o periódicos. La toma de muestras permite una cobertura más amplia de los textos, y evita la sobre-representación de la idiosincrasia de textos.
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 liberados de corpus usando parámetros de aprendizaje dados por el usuario, y la búsqueda de un modelo existente para encontrar palabras o documentos que mejor coincidan con la consulta realizada a ese modelo. Después de construir el modelo, también puede ser instalado para hacer la búsqueda más conveniente, y para permitir que otros usuarios puedan realizar sus búsquedas.
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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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
La parte tropicalpa speciespn es la consulta en sí, tropical y species son las dos palabras que queremos buscar en nuestro corpus, pero como podemos observar, estas palabras tienen unos caracteres al final de cada una de ellas, estos caracteres se utilizan para dar un formato correcto a las palabras a buscar. 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 20 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 el siguiente ejemplo podemos ver como 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
INFOMAP_MODEL_PATH=/home/cuadros/corpus/modelsINFOMAP_WORKING_DTR=/homei/cuadros/corpus/modelsexport INFOMAP_MODEL_PATHexport INFOMAP_WORKING_DIR[rigau@adimen infomap]$ associate -n 20 -c BNCpos3prova tropicalpa specíespn tropicalpa:O.953014speciespn:0.953014birdspn:0.926641mammalspn:0.908901 invertebratespn:0.889433 breedingpn:0.881263 temperatepa:O.876306 preypn:0.873921 birdpn:O.869077whalespn:0.865983 insectspn:0.861247 habitatpn:O.854986 predatorspn:O.853619 butterfliespn: 0.845556 frogspn:O.827578 genuspn:O.827000faunapn:O.822362arcticpa:O.821317 habitatspn:O.820968sealspn:O.818886
Figura 5: Ejemplo de uso del comando associate
SSI-Dijkstra
El software SSI-Dijkstra es una versión del algoritmo SSI (Structural Semantic Interconnections), que basándose en el conocimiento iterativo está orientado a la desambiguación de la las palabras (WSD: Word Sense Disambiguation). El algoritmo SSI es muy simple y consiste en un paso de inicialización y en ciertos pasos iterativos (ver figura 6).
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 1. Una vez seleccionado el sentido, esa palabra la quitamos de la lista P y la incluimos en la lista 1. El algoritmo termina cuando ya no quedan más palabras pendientes de desambiguar en la lista P.
SSI (T: list ofterms)
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
for each {t ϵ T} dol[t] = 0if t is monosemous then
l[t] := the only sense of teIse
P:= P U {t}end if
end forrepeatP' := Pfor each {t ϵ P} do
BestSense := ØMaxValue := 0for each {sense s of t} do
W[s] := ON[s] := Ofor 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 ifend for if N[s] > 0 then
NewValue := W[s]/N[s]If NewValue > MaxValue then
MaxValue := NewValueBestSense := s
end ifend if
end for if MaxValue > 0 then
l[t] := BestSenseP := P \ {t}
end ifend foruntil P≠P'return (I,P);
Figura 6: Algoritmo SSI-Dijkstra
Inicialmente, la lista de palabras interpretadas 1 debería incluir los sentidos de las palabras monosemicas de W, o un conjunto parcial de estos sentidos.
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. Este grafo incluye una serie de relaciones directas sacadas WordNet y eXtended
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
WordNet. Dijkstra es un algoritmo muy eficiente para calcular cual 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 cual 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 1.
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.
Servicios 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), ...
A continuación se muestra un gráfico en el que se muestra cómo interactúa un conjunto de servicios web, este nos ayudará a entender mejor qué son y cómo funcionan:
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Figura 7: Ejemplo de un servicio Web
La figura 7 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.
En el proceso de intercambio de información intervienen diferentes tecnologías. Por un lado estaría SOAP (Simple Object Access Protocol), esta tecnología se basa en el formato XML, y es capaz de transferir mensajes con información compleja (ver figura 8). 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).
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
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:
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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).
Recientemente, los servicios web basados en RESTful (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.
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.
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.
Arquitectura del Sistema
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Esté proyecto tendrá dos resultados diferentes, por lo cual, habrá dos tipos de arquitecturas. Estos resultados son la aplicación Web y un servicio 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.
Aplicación Web
La aplicación Web necesitará un servidor Web y un servidor de base de datos. El servidor Web alojara la aplicación Web y hará accesible a todos los usuarios que haya en Internet. 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.
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.
Un servidor de base de datos es un sistema de gestión de bases de datos que es un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.
Una base de datos (BD) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso.
Como se puede observar en la figura 9, el usuario que tiene 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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Figura 9: La arquitectura para la aplicación Web
Servicio Web
El servicio Web no utiliza ningún tipo de base de datos, por lo que la arquitectura será idéntico a la arquitectura de la aplicación Web, restando el servidor BD y la base de datos, como se puede apreciar en la figura 10.
Figura 10: La arquitectura para el servicio Web
Elección Tecnológica
Se han utilizado varios software en el desarrollo de este proyecto y para generar los resultados obtenidos en este proyecto. 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
El sistema
El sistema estará sobre un sistema operativo basada en Linux, en concreto Fedora. Se utilizará Apache como servidor Web. El lenguaje de programación que se usará en el servidor Web será PHP. Como servidor de base de datos se utilizara MySQL-Server y como sistema de gestión de base de datos usaremos MySQL.
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.
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 librearía como pudiera dar en algún otro distribución Linux.
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").
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
PHP
PHP es un lenguaje de programación interpretado, diseñado originalmente para la creación de páginas web dinámicas. Es usado principalmente en interpretación del 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.
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.
Es una base de datos es una colección estructurada de tablas que contienen datos. Esta puede ser desde una simple lista de compras a una galería de pinturas o el vasto volumen de información en una red corporativa. Para agregar, acceder a y procesar datos guardados en un computador, usted necesita un administrador como MySQL Server. Dado que los computadores son muy buenos manejando grandes cantidades de información, los
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
administradores de bases de datos juegan un papel central en computación, como aplicaciones independientes o como parte de otras aplicaciones.
Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.
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 diferentes tareas del proyecto. También se han utilizado el software del sistema, 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.
Dreamweaver
Adobe Dreamweaver es una aplicación 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 principal competidor es Microsoft Expression Web y tiene
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
soporte tanto para edición de imágenes como para animación a través de su integración con otras.
Photoshop
Adobe Photoshop (Tienda de Fotos) es una aplicación informática 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.
Word
Microsoft Word 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.
Visio
Microsoft Visio es un software 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Excel
Microsoft Excel 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 Lotus 1-2-3, 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.
PowerPoint
Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales en entornos Windows 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.
Firebug
Firebug es una extensión 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. Se puede ver una muestra en la figura 11.
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. Su atractiva e intuitiva interfaz, con solapas específicas para el análisis de cada tipo de elemento (consola, HTML, CSS, Script, DOM y red), 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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Figura 11: Ejemplo de la extensión Firebug.
Desarrollo de la aplicación Web
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
La aplicación Web que obtendremos en este proyecto es un sistema que se usará principalmente para la desambiguación de significados de palabras por evocación. Está tarea se realizará mediante Infomap y SSI-Dijsktra, tal como se ha explicado anteriormente.
Los resultados que se obtienen en la desambiguación, el sistema los registrara en una base de datos, con toda la información de esa consulta. Al tener esas consultas registradas en la base de datos, el sistema también visualizara algunos resultados relacionados con esas consultas.
El sistema, también realizara una gestión de los usuarios para poder realizar las consultas registradas, y para poder ver sus resultados concretos sobre las consultas registradas que ha realizado con anterioridad.
Captura de Requisitos
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.
Figura 12: Diagrama de casos de uso
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Registrar usuario
Un usuario que se quiera registrar, rellena el formulario que el sistema le ofrece para guardar sus datos. Una vez que ha rellenado todos los datos, el sistema verifica que los datos son correctos 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.
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 elige de qué tipo de letras se trata. Una vez escritas, y después de elegir el numero de resultados que quiera obtener, el sistema evalúa esas palabras con Infomap y SSI-Dijkstra para obtener el numero de resultados que tengan relación con las palabras introducidas por el usuario, y sus correspondientes significados y los visualizara.
Escenario principal (o curso normal de los eventos):
1. Usuario: Introduce las palabras, los tipos correspondientes a esas palabras y el numero de resultados que desea obtener.
2. Sistema: Mediante Infomap y SSI-Dijkstra obtiene el resultado y los visualiza.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Identificar
El usuario se identifica ante el sistema. Para eso el usuario introduce su correo y la contraseña con el 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 es correcto la verificación, el usuario se queda registrado, en caso contrario, se deniega el acceso.
Postcondición: El usuario queda identificado y podrá acceder a los casos de uso que dependan de estar identificado.
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.
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 sus datos que introdujo al registrarse, de cambiarlos, dar 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 tendrán que realizar 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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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 la cuenta 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.
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 algunos resultados que ha obtenido, y las que han obtenido al realizar las consultas registradas. 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.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, con la diferencia de 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 que se desean buscar, el sistema obtendra 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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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 son cada palabra que ha escrito y el numero de
resultados que desea obtener.4. Sistema: Visualiza el resultado obtenido mediante Infomap.5. Usuario: Selecciona las palabras, que están en el resultado, con las que desea continuar.6. Sistema: Visualiza el resultado obtenido mediante SSI-Dijkstra de las palabras que ha
seleccionado el usuario.7. Usuario: Selecciona, o no, alguna palabra que vea que su significado no sea el apropiado
para ese contexto.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 y el usuario tiene la opción de modificar las palabras introducidas.
Paso 6: No se han obtenido los significados de las palabras mediante SSI-Dijkstra.
1. Sistema: 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.
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á no tener consultas o varias consultas. Cada consulta solo será de un único usuario. Cada consulta tendrá más de una palabra, y cada palabra solo pertenecerá a una única consulta. Podrá haber palabras distintas con la misma palabra y del mismo tipo, pero se diferencian porque la información de si ha sido seleccionado, orden,… en esas dos palabras será totalmente diferente.
Figura 13: Modelo de dominio de la base de datos utilizado en la aplicación Web
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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 columna y el modo en que están relacionadas las tablas se explicarán más adelante, concretamente en el apartado de las tablas de la base de datos.
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.
Registrar usuario
Figura 14: Diagrama de Secuencia del Sistema de caso de uso “Registrar usuario”
Contrato : guardarDatos(correo, contraseña, nombre, apellidos, …)
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Responsabilidad: Registra el nuevo usuario con los datos recibidos por parámetro.
Excepciones: Si Usuario.correo = correo entonces ERROR.
Postcondición: Se ha creado una entrada en la base de datos con los datos recibidos.
Usuario.correo=correoUsuario.contraseña = contraseñaUsuario.nombre = nombre…
Salida: Confirmación de que los datos se hayan guardado correctamente.
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.
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: Se mostraran las palabras resultantes con sus datos correspondientes.
NumeroDeResultados = numResultados
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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: Confirmación de que se ha identificado correctamente.
Gestionar usuario
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
Contrato: darDeBaja(idUsuario)
Responsabilidad: Dara 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, …)
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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=correoUsuario.contraseña = contraseñaUsuario.nombre = nombre…
Salida: La confirmación de que los datos han sido modificados satisfactoriamente.
Contrato: salir()
Responsabilidad: El usuario que está identificado dejará de estar identificado.
Precondición: El usuario está identificado.
Postcondición: El usuario no estará identificado.
Salida: Confirmación de que ya no está identificado.
Ver resultados
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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 enviado por parámetro.
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.
Precondición: El usuario está identificado.
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.
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)”.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
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
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
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.
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.
Pseudocódigos
Función: guardarDatos(correo, contraseña, nombre, apellidos, …)
Conectar a BDBD : Usuario.correo=correo, Usuario.contraseña= contraseña, Usuario.nombre= nombre, Usuario.apellidos=apellidos, … en Usuario
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
error = BD: Codigo de salidaSi error = error_copia_correo entonces
Resultado = mensaje error de correo existenteFinSiSi error = cualquier_error entonces
Resultado = ERRORFinSiResultado = OKDesconectar de BDDevolver Resultado
Función: consultarPalabras(ListaPalabras, numResultados)
Repetir por cada palabra de ListaPalabras hacerparamInfomap+= Información de palabra en adecuado formato
finRepetirparamInfomap+= añadir numResultadosResInfomap = Consultar Infomap (paramInfomap)Repetir por cada palabra de ResInfomap hacer
paramSSI+= Información de palabra en adecuado formatofinRepetirResultado = Consultar SSI-Dijkstra (paramSSI)Devolver Resultado
Función: identificar(correo, contraseña)
Conectar a BDBusqueda = BD: Seleccionar en Usuario donde Usuario.correo=correo y Usuario.contraseña=contraseña y Usuario.activo=1Si Busqueda hay una fila entonces
Resultado OKSESSION usuario = BD: Busqueda.idUsuario
SinoResultado INCORRECTO
FinSiDesconectar de BDDevolver Resultado
Función: verDatos(idUsuario)
Conectar a BDResultado = BD: Seleccionar en Usuario donde Usuario.idUsuario=idUsuarioDesconectar BDDevolver Resultado
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Función: darDeBaja(idUsuario)
Conectar a BDBD: Cambiar Usuario.activo -> 0 donde Usuario.idUsuario=idUsuarioSi BD: Numero de filas afectadas = 1 entonces
Resultado OKSino
Resultado INCORRECTOFinSiDesconectar BDDevolver Resultado
Función: cambiarDatos(idUsuario, correo, contraseña, nombre, …)
Conectar a BDBD: Cambiar Usuario.correo->correo y Usuario.contraseña->contraseña y … donde Usuario.idUsuario=idUsuarioSi BD: Numero de filas afectadas = 1 entonces
Resultado OKSino
Resultado INCORRECTOFinSiDesconectar BDDevolver Resultado
Función: salir()
SESSION usuario = vacioDevolver OK
Función: palabrasIncorrectas()
Conectar a BDBusqueda = BD: Seleccionar en Palabra donde Palabra.correcto=0Repetir por cada fila de Busqueda hacer
Resultado += Palabra de BusquedafinRepetirSi Resultado = vacio entonces
Resultado = NINGUNA PALABRAFinSiDevolver ResultadoDesconectar BD
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Función: palabrasIncorrectas(idUsuario)
Conectar a BDBusqueda = 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 BusquedafinRepetirSi Resultado = vacio entonces
Resultado = NINGUNA PALABRAFinSiDevolver ResultadoDesconectar BD
Función: buscarPalabra(palabra, tipo)
Conectar a BDBusqueda = BD: Seleccionar en Palabra donde Palabra.palabra=palabra y Palabra.tipo=tipo Repetir por cada fila de Busqueda hacer
Resultado += Información de BusquedafinRepetirSi Resultado = vacio entonces
Resultado = PALABRA NO ENCONTRADAFinSiDevolver ResultadoDesconectar BD
Función: verHistorialConsultas()
Conectar a BDBusqueda = BD: Seleccionar en ConsultaRepetir por cada fila de Busqueda hacer
Resultado += Consulta de BusquedafinRepetirSi Resultado = vacio entonces
Resultado = NO HAY NINGUNA CONSULTAFinSiDevolver ResultadoDesconectar BD
Función: verHistorialConsultas(idUsuario)
Conectar a BD
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Busqueda = BD: Seleccionar en Consulta donde Consulta.idUsuario=idUsuarioRepetir por cada fila de Busqueda hacer
Resultado += Consulta de BusquedafinRepetirSi Resultado = vacio entonces
Resultado = NO HAY NINGUNA CONSULTAFinSiDevolver ResultadoDesconectar BD
Función: cargarConsulta(listaPalabras)
Repetir por cada palabra de listaPalabras hacerAñadir palabra en formulario de consulta registrada
finRepetir
Función: aplicarInfomap(listaPalabras, numRes)
Repetir por cada palabra de ListaPalabras hacerparamInfomap+= Información de palabra en adecuado formato
finRepetirparamInfomap+= añadir numResultadosDevolver Consultar Infomap (paramInfomap)
Función: aplicarSSI(listaPalabras)
Repetir por cada palabra de listaPalabras hacerparamSSI+= Información de palabra en adecuado formato
finRepetirDevolver Consultar SSI-Dijkstra (paramSSI)
Función: guardarConsulta(listaPalabras, idUsuario)
Conectar a BDBD: Insertar idUsuario en ConsultaCorrecto = SISi BD: filas afectadas ≠ 1 entonces
Correcto = NOfinSiidConsulta = BD: Seleccionar Consulta.idConsulta en Consulta donde Consulta.idUsuario=idUsuario ordenado descendentemente por Consulta.fecha con limite 1Repetir por cada palabra de listaPalabras y Correcto = SI hacer
BD: Insertar datosPalabra, idConsulta en Palabra
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Si BD: filas afectadas ≠ 1 entoncesCorrecto = NO
finSiFinRepetirSi Correcto = NO entonces
BD: Borrar en Consulta donde Consulta.idConsulta=idConsultaResultado NO REGISTRADO
SinoResultado OK
finSiDesconectar BDDevolver Resultado
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 se ve en la figura 20.
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
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
(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.
Las tablas 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. A continuación se informará de que tipo son todos los atributos de las tablas:
La tabla consult
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
La tabla user
Campo Tipo Nulo
Predeterminado Comentarios
idUser int(11) No El identificador del usuarioemail varchar(100
)No El email del usuario que no se
podrá repetir (UNIQUE)password varchar(50) No La contraseña del usuario, que
estará codificadoname varchar(20) No El nombre del usuariosurnames varchar(40) No Los apellidos del usuarioprovince varchar(20) No La provincia del usuariocity varchar(20) No La ciudad del usuariodate_create
timestamp No CURRENT_TIMESTAMP
La fecha de creación de este usuario
active tinyint(1) No 1 Si está activo o no
La tabla words
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Campo Tipo Nulo
Predeterminado
Comentarios
idWords int(11) No Identificador de palabraidConsult int(11) No Identificador de consulta al que
corresponde está palabraword varchar(30
)No Palabra
pos varchar(1) No Tipoorder int(11) No Ordennew? tinyint(1) No 0 Si es una palabra que ha
introducido el usuario o noderived? tinyint(1) No 0 Si ha sido derivado por Infomap o
noselected? tinyint(1) No 0 Si ha sido seleccionado por el
usuario o noweight double No 0 El peso que tiene en la derivaciónoffset_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
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
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
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 hacer posibles 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.
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. A estas páginas les pasamos lo que deseamos hacer, mediante GET, y estos nos darán el resultado de lo que deseamos hacer. 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 información que le hayamos pedido, y menu.php da el menú que tiene la aplicación Web.
Estas páginas, lo primero miran en qué idioma quieren que se dé el resultado. Esto lo miran en GET, que es un parámetro que se le manda a estas páginas. 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. 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 valen para codificar. 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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Todos los ficheros necesarios para la barra de menú que tienen la aplicación Web están en la carpeta 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.
Pruebas
Las primeras pruebas fueron en instalar en el ordenador local el sistema operativo de Fedora con el software que se utilizan, infomap y SSI-Dijkstra, y también el servidor de Web Apache y PHP. Una vez instalado todo, hacer una primera iteración básica, que eran unas páginas PHP que utilizaban Infomap y SSI-Dijkstra y comprobar que se obtenía correctamente los resultados.
Una vez comprobado eso, se hizo una segunda iteración más compleja en Windows, sin utilizar Infomap y SSI-Dijsktra, y una vez terminado, pasarlo a Fedora, y utilizando Infomap y SSI-Dijsktra, verrificar que el funcionamiento es el esperado.
Teniendo la aplicación Web final en el ordenador local, de la forma de que irá en el servidor final, hacer la prueba con todos los casos de uso comprobando que su funcionamiento y la utilización de la base de datos son correctos. Ya que esta aplicación Web está pensada para los navegadores Web de Internet Explorer y Mozilla Firefox, estas pruebas se realizaran en estos dos navegadores.
Una vez hecho las pruebas en el servidor local, se implantará en el servidor final, y se tendrá un periodo de prueba de dos semanas, para que en el funcionamiento habitual, detectar los posibles fallos que se puedan recoger, y realizar una nueva versión de la aplicación Web evitando estos posibles fallos.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Implantación
Al implantar la aplicación Web, de tener en funcionamiento en Windows a Fedora, se han tenido que hacer algunas modificaciones como:
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 iterpretan 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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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 de cómo resultado una serie de palabras, evocadas mediante Infomap, y con sus respectivos significados, desambiguados mediante SSI-Dijsktra.
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 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 hacerparamInfomap+= Información de palabra en formato adecuado
finRepetirparamInfomap+= añadir numResultadosresultado_infomap = Consultar Infomap (paramInfomap)
Repetir por cada palabra de resultado_infomap hacerparamSSI+= Información de palabra en adecuado formato
finRepetirresultado_ssi = Consultar SSI-Dijkstra (paramSSI)
Repetir por cada palabra resuleto hacerresultado += poner en formato XML
finRepetirDevolver resultado
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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 10 resultados de las palabras teach(verbo) y teacher(nombre):
Infomap+ssi.html?n=10&w=teach-v&w=teacher-n
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>
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
<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><polysemy_degree>11</polysemy_degree><gloss>the activities of educating or instructing; activities that impart knowledge or skill</gloss><correct>true</correct>
</token></result>
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.
Pruebas
Ya qué utiliza líneas de código utilizado en la aplicación Web, las pruebas realizadas en él han servido para verificar que parte del código funciona correctamente y qué ese código funciona
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
correctamente en el servidor final ya que se ha probado, en parte, en el servidor final. Después de las modificaciones se han hecho pruebas en el servidor local.
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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Gestión
Vamos a ver las comparativas 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Comparativa por tareas
Tarea Duración estimado (h) Duración real (h)Procesos tácticos 47 54
Análisis de entorno 5 4Gestión de herramientas 2 3Planificación 30 34Reuniones 10 13
Procesos formativos 103 106Herramientas 3 6Lenguajes de programación 10 6Tecnologías 2 1Memoria 80 83Presentación 8 10
Procesos operativos 176 175Primera iteración 13 8
Análisis de entorno 2 2Captura de requisitos 3 3Modificar SSI-Dijkstra 8 3
Segunda iteración 19,5 16Captura de requisitos 2 1Análisis 2 2Diseño 3 2Implementación 10 7,5Pruebas 2 3Implantación 0,5 0,5
Tercera iteración 136 147Captura de requisitos 12 8Análisis 10 7Diseño 7 8Implementación 90 105Pruebas 15 18Implantación 2 1
Cuarta iteración 7,5 4Diseño 1,5 0,5Implementación 4 2,5Pruebas 1 0,5Implantación 1 0,5
TOTAL 326 335
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Comparativa entre procesos
En la figura 21, se ve la diferencia que ha habido entre el tiempo planificado y el tiempo durado en cada proceso.
Proces
os tácti
cos
Proces
os form
ativo
s
Proces
os opera
tivos
47 10317654 106
175
Comparativa entre procesos
Duración estimado (h) Duración real (h)
Figura 21: Gráfico que refleja la comparativa entre procesos.
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Procesos tácticos
Los gráficos que indican la diferencia entre el esfuerzo planificado y el esfuerzo real en procesos tácticos.
11% 4%
64%
21%
Esfuerzo planificado en procesos tácticos
Análisis de entornoGestión de herramientasPlanificaciónReuniones
Figura 22: Gráfico que refleja el esfuerzo planificado en procesos tácticos.
7% 6%
63%
24%
Esfuerzo real en procesos tácticos
Análisis de entornoGestión de herramientasPlanificaciónReuniones
Figura 23: Gráfico que refleja el esfuerzo real en procesos tácticos.
Procesos formativos
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Los gráficos que indican la diferencia entre el esfuerzo planificado y el esfuerzo real en procesos formativos.
3%10% 2
%
78%
8%
Esfuerzo planificado en procesos formativos
HerramientasLenguajes de programaciónTecnologíasMemoriaPresentación
Figura 24: Gráfico que refleja el esfuerzo planificado en procesos formativos.
6%6%
1%
78%
9%
Esfuerzo real en procesos formativos
HerramientasLenguajes de programaciónTecnologíasMemoriaPresentación
Figura 25: Gráfico que refleja el esfuerzo real en procesos formativos.
Procesos operativos
Los gráficos que indican la diferencia entre el esfuerzo planificado y el esfuerzo real en procesos operativos.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
7% 11%
77%
4%
Esfuerzo planificado en procesos operativos
Primera iteraciónSegunda iteraciónTercera iteraciónCuarta iteración
Figura 26: Gráfico que refleja el esfuerzo planificado en procesos operativos.
5% 9%
84%
2%
Esfuerzo real en procesos operativos
Primera iteraciónSegunda iteraciónTercera iteraciónCuarta iteración
Figura 27: Gráfico que refleja el esfuerzo real en procesos operativos.
Ya que los procesos operativos tienen subtareas, se ilustra otro grafico que indica entre las tareas repetidas en las diferentes iteraciones, los cambios que hay entre el tiempo planificado y el tiempo real.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Análisis d
e entorno
Modificar SS
I-Dijks
tra
Captura
de req
uisitos
Análisis
Diseño
Implem
entac
ión
Prueb
as
Implan
tación
2 3
8
2
2 310 2 0.5
1210 7 90 15
2
1.5 4 11
Esfuerzo planificado de las tareas en el procesos operativos
Primera iteración Segunda iteración Tercera iteración Cuarta iteración
Figura 28: Gráfico que refleja el esfuerzo planificado de las tareas en los procesos operativos.
Análisis d
e entorno
Modificar SS
I-Dijks
tra
Captura
de req
uisitos
Análisis
Diseño
Implem
entac
ión
Prueb
as
Implan
tación
2 3
3
1
2 27.5 3 0.5
8 7 8 105 18 1
0.5 2.5 0.50.5
Esfuerzo real de las tareas en el procesos operativos
Primera iteración Segunda iteración Tercera iteración Cuarta iteración
Figura 29: Gráfico que refleja el esfuerzo planificado de las tareas en los procesos operativos.
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
La duración real de la tarea que más se distancia del tiempo real es la tercera iteración, que ha conllevado más tiempo del planificado, pero al haber utilizado menos tiempo en otras tareas, entre la planificación realizada y el tiempo real que se ha utilizado no ha habido tanta diferencia, por lo que podemos decir que la planificación inicial se ajusta bastante al tiempo real utilizado en el proyecto.
Conclusiones
Este proyecto se ha desarrollado satisfactoriamente, dentro de los plazos establecidos y sin haber habido ningún contratiempo reseñable.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Este proyecto ha servido para crear una aplicación Web que acomoda bastante la utilización de programas que se utilizan en la evocación y desambiguación de las palabras.
Está aplicación Web puede ayudar a detectar posibles fallos de significados en la base de datos WordNet, o posibles fallos de los programas de Infomap y SSI-Dijkstra. También sirve, mediante este software, cualquier usuario que tenga dudas de que se trata un término de palabras, poder analizarlo en esta aplicación Web y entender más de que se trata.
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 con las relaciones que existen entre cada palabra que aparece en el resultado.
2. Ofrecer más tipos de resultados mirando la base de datos de las consultas registradas.
3. La utilización de la base de datos, realizarlo con procedimientos almacenados, y en caso registrar consulta registrada hacerlo con transacciones para que se registren todas las palabras o ninguno.
4. Para estos resultados que se obtienen mirando la base de datos del proyecto, enlazarlos con la base de datos que utiliza WordNet para obtener información más compleja.
5. Ya que los usuarios se identifican mediante email, estaría bien que se pidiera confirmación una vez que se registra, para verificar que el usuario es dueño de esa dirección, y de que no se ha equivocado.
6. En las consultas registradas que el usuario tenga mucho interés, tener la posibilidad de que se le mande a su correo electrónico.
7. 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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
8. Utilización de cookies para recordar el idioma que utiliza y cargar ese idioma desde el principio.
Valoración personal
Creó que la aplicación Web que se ha creado se le puede dar mucho uso, y en la parte funcional, es bastante cómodo de utilizar.
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.
Apéndice
DOP
Objetivo
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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 se basa en el Análisis Semántico Latente (Latent Semantic Analisis), y la de obtención de las interpretaciones de las palabras basado en el conocimiento, 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 metiendo unas palabras y definiendo de que tipo son, obtener las palabras resultantes al aplicar la aplicación Infomap, y la de mostrar sus respectivos significados, 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, y en el resultado pudiendo señalar las palabras que consideras 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, y la de facilitar un estudio sobre estas aplicaciones.
Método de trabajo
Durante el transcurso del proyecto, el método de trabajos será la de ir definiendo unos objetivos parciales del proyecto, que se definirán entre el alumno y el profesor. También se define un tiempo estimado en el que ese objetivo tendría que estar realizado.
Una vez realizado ese objetivo, mediante un correo electrónico o mediante una reunión, el alumno le mandará el objetivo, y el profesor estimará si ese objetivo cumple con los requisitos necesarios para avanzar a un nuevo objetivo. Si se estimará que no cumple los requerimientos necesarios, el profesor le intentara guiar al alumno, y este en otro tiempo de plazo lo tendría que volverlo a realizar.
Cada vez que se realiza satisfactoriamente un objetivo, se estimara un nuevo objetivo mediante una reunión entre profesor y alumno. Así se hará hasta la finalización del proyecto.
En el transcurso de un objetivo, si el alumno no consiguiera avanzar en el objetivo, le podría mandar un correo electrónico explicando la duda y el profesor le contestaría cuando pudiera. Si con eso no bastaría, concertarían una reunión para la aclaración de la duda.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Se definirá la fechar y la hora de la reunión mediante un correo electrónico, una vez que el alumno tenga finalizado el objetivo, y estas reuniones se realizaran en el despacho del profesor, que se sitúa en la facultad de informática de san Sebastián.
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.
El alumno se tendrá que encargar de realizar copias de seguridad, en cada entrega de objetivos. Si la duración de un objetivo es mayor que 10 días, el alumno tendrá que realizar una copia de seguridad de los ficheros que está utilizando para dicho objetivo.
El alumno trabajará en Windows con programas útiles en las diferentes tareas del proyecto que ayudaran en el desarrollo del proyecto. También tendrá que trabajar con Fedora, que es el sistema operativo que estará en el servidor final para poder realizar las pruebas necesarias para verificar un correcto funcionamiento en el servidor final.
Alcance
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.
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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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...
Estructura de descomposición del trabajo (EDT)
En la figura de abajo podemos ver un diagrama que expone todas las tareas que se van a realizar en este proyecto.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Figura: Diagrama EDT
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 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.
2. Procesos formativos
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Duración estimada: 2 horas.
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
3.4.4.Implantación
Descripción: La implantación del servicio Web en el servidor final.
Duración estimada: 1 hora.
Planificación temporal
Para realizar el proyecto se utilizará el proceso unificado de desarrollo de software (PDU) con un ciclo de vida iterativo e incremental. A continuación se verá el diagrama de Gantt que indicará en que periodo de tiempo se espera realizar cada tarea antes mencionados.
Diagrama de Gantt
En la siguiente figura 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”.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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 los clasificaremos en tres grandes grupos que son formativos, tácticos y operativos.
Riesgos formativos
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.
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.
Riesgos tácticos
Riesgo: El alumno o el profesor encargado no pueden acudir a una reunión concertada por causas tales como enfermedad, causas personales, trabajo...
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.
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
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
la reunión se hablaría de si se tendría que suprimir alguna funcionalidad del proyecto para poder finalizar el proyecto.
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.
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.
Riegos operativos
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.
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.
Tabla de riesgos
A continuación mostraremos una tabla con los riesgos antes mencionados y la probabilidad de que surjan junto a la consecuencia que estimamos tomando en cuenta las soluciones antes mencionadas:
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
Riesgo Probabilidad ConsecuenciaDificultad en entender Medio BajoPerdida de documentación Bajo BajoIndisponibilidad para reunir Medio Muy bajoRetraso en la tarea Medio BajoOrdenador estropeado Muy bajo MedioPerdida de datos Bajo MedioProblemas en manejar software Medio Bajo
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.
Manual de usuario
En este manual de usuario se pretende guiar para que el usuario sepa utilizar las principales funcionalidades de la aplicación Web.
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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.
Identificar usuario
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.
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
Consulta registrada
Desarrollo de la aplicación Web PFC: XABIER ARAMENDI AMENABAR
54
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.
Buscar palabra
Desarrollo de la aplicación WebPFC: XABIER ARAMENDI AMENABAR
53
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.