Sistema Inteligente de Resumen Automático Basado en Relaciones Causales

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Sistema Inteligente de Resumen Automático Basado en Relaciones Causales"

Transcripción

1 INGENIERO EN INFORMÁTICA Sistema Inteligente de Resumen Automático Basado en Relaciones Causales Autor: Eduardo César Garrido Merchán Directora: Cristina Puente Águeda Codirector: José Ángel Olivas Varela Madrid Mayo 2013

2

3 AUTORIZACIÓN PARA LA DIGITALIZACIÓN, DEPÓSITO Y DIVULGACIÓN EN ACCESO ABIERTO ( RESTRINGIDO) DE DOCUMENTACIÓN 1º. Declaración de la autoría y acreditación de la misma. El autor D.Eduardo César Garrido Merchán, como Alumno de la UNIVERSIDAD PONTIFICIA COMILLAS (COMILLAS), DECLARA que es el titular de los derechos de propiedad intelectual, objeto de la presente cesión, en relación con la obra Sistema Inteligente de Resumen Automático Basado en Relaciones Causales, que ésta es una obra original, y que ostenta la condición de autor en el sentido que otorga la Ley de Propiedad Intelectual como titular único o cotitular de la obra. En caso de ser cotitular, el autor (firmante) declara asimismo que cuenta con el consentimiento de los restantes titulares para hacer la presente cesión. En caso de previa cesión a terceros de derechos de explotación de la obra, el autor declara que tiene la oportuna autorización de dichos titulares de derechos a los fines de esta cesión o bien que retiene la facultad de ceder estos derechos en la forma prevista en la presente cesión y así lo acredita. 2º. Objeto y fines de la cesión. Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la Universidad y hacer posible su utilización de forma libre y gratuita ( con las limitaciones que más adelante se detallan) por todos los usuarios del repositorio y del portal e-ciencia, el autor CEDE a la Universidad Pontificia Comillas de forma gratuita y no exclusiva, por el máximo plazo legal y con ámbito universal, los derechos de digitalización, de archivo, de reproducción, de distribución, de comunicación pública, incluido el derecho de puesta a disposición electrónica, tal y como se describen en la Ley de Propiedad Intelectual. El derecho de transformación se cede a los únicos efectos de lo dispuesto en la letra (a) del apartado siguiente. 3º. Condiciones de la cesión. Sin perjuicio de la titularidad de la obra, que sigue correspondiendo a su autor, la cesión de derechos contemplada en esta licencia, el repositorio institucional podrá:

4 (a) Transformarla para adaptarla a cualquier tecnología susceptible de incorporarla a Internet; realizar adaptaciones para hacer posible la utilización de la obra en formatos electrónicos, así como incorporar metadatos para realizar el registro de la obra e incorporar marcas de agua o cualquier otro sistema de seguridad o de protección. (b) Reproducirla en un soporte digital para su incorporación a una base de datos electrónica, incluyendo el derecho de reproducir y almacenar la obra en servidores, a los efectos de garantizar su seguridad, conservación y preservar el formato.. (c) Comunicarla y ponerla a disposición del público a través de un archivo abierto institucional, accesible de modo libre y gratuito a través de Internet. 1 (d) Distribuir copias electrónicas de la obra a los usuarios en un soporte digital. 2 4º. Derechos del autor. El autor, en tanto que titular de una obra que cede con carácter no exclusivo a la Universidad por medio de su registro en el Repositorio Institucional tiene derecho a: a) A que la Universidad identifique claramente su nombre como el autor o propietario de los derechos del documento. b) Comunicar y dar publicidad a la obra en la versión que ceda y en otras posteriores a través de cualquier medio. c) Solicitar la retirada de la obra del repositorio por causa justificada. A tal fin deberá ponerse en contacto con el vicerrector/a de investigación d) Autorizar expresamente a COMILLAS para, en su caso, realizar los trámites necesarios para la obtención del ISBN. 1 En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría redactado en los siguientes términos: (c) Comunicarla y ponerla a disposición del público a través de un archivo institucional, accesible de modo restringido, en los términos previstos en el Reglamento del Repositorio Institucional 2 En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría eliminado.

5 d) Recibir notificación fehaciente de cualquier reclamación que puedan formular terceras personas en relación con la obra y, en particular, de reclamaciones relativas a los derechos de propiedad intelectual sobre ella. 5º. Deberes del autor. El autor se compromete a: a) Garantizar que el compromiso que adquiere mediante el presente escrito no infringe ningún derecho de terceros, ya sean de propiedad industrial, intelectual o cualquier otro. b) Garantizar que el contenido de las obras no atenta contra los derechos al honor, a la intimidad y a la imagen de terceros. c) Asumir toda reclamación o responsabilidad, incluyendo las indemnizaciones por daños, que pudieran ejercitarse contra la Universidad por terceros que vieran infringidos sus derechos e intereses a causa de la cesión. d) Asumir la responsabilidad en el caso de que las instituciones fueran condenadas por infracción de derechos derivada de las obras objeto de la cesión. 6º. Fines y funcionamiento del Repositorio Institucional. La obra se pondrá a disposición de los usuarios para que hagan de ella un uso justo y respetuoso con los derechos del autor, según lo permitido por la legislación aplicable, y con fines de estudio, investigación, o cualquier otro fin lícito. Con dicha finalidad, la Universidad asume los siguientes deberes y se reserva las siguientes facultades: a) Deberes del repositorio Institucional: - La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no garantiza ni asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior de las obras no conforme con la legislación vigente. El uso posterior, más allá de la copia privada, requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio comercial, y que no se realicen obras derivadas. - La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la responsabilidad exclusiva del autor y no estará obligada a ejercitar acciones legales en nombre del autor en el supuesto de infracciones a derechos de propiedad intelectual derivados del depósito y archivo de las obras. El autor renuncia a cualquier

6 reclamación frente a la Universidad por las formas no ajustadas a la legislación vigente en que los usuarios hagan uso de las obras. - La Universidad adoptará las medidas necesarias para la preservación de la obra en un futuro. b) Derechos que se reserva el Repositorio institucional respecto de las obras en él registradas: - retirar la obra, previa notificación al autor, en supuestos suficientemente justificados, o en caso de reclamaciones de terceros. Madrid, a.. de... de. ACEPTA Fdo

7 Proyecto realizado por el alumno/a: Eduardo César Garrido Merchán Fdo.: Fecha: / / Autorizada la entrega del proyecto cuya información no es de carácter confidencial EL DIRECTOR DEL PROYECTO Cristina Puente Águeda Fdo.: Fecha: / / José Ángel Olivas Varela Fdo.: Fecha: / / Vº Bº del Coordinador de Proyectos Israel Alonso Martínez Fdo.: Fecha: / /

8 Agradecimientos: A mi Madre: Por su vital e inigualable apoyo, por su amor constante, por su sabio consejo, por su infinita confianza, por su empatía total, por su sacrificio con mi persona, por su valiosa compañía. Sin ella esta memoria hubiera sido imposible, te quiero mucho, gracias. A mi Padre: Por su calidez sin igual, por su tierno cariño, por su paciencia conmigo, por su trabajo diario, por su determinación y esfuerzo, por su inigualable espíritu de lucha contra la adversidad. Sin ti tampoco hubiese sido posible llegar hasta aquí, te querré siempre, gracias. A Juan Merchán Ramos: Por tu ejemplo, por tus ideales, por tu lucha, tu espíritu corre por mis venas, siempre te tendré presente, llegaré alto para estar contigo, porque estás en el cielo. DEP. Al resto de mi familia, en especial: Antonia Asensio, por tu cariño, amor y aprecio. Antonio Garrido, haré que te sientas orgulloso de mí, sé que me querías mucho y te recuerdo, DEP. Carmen Garrido, gracias por tu cariño, DEP. Lorenza Santos, gracias a ti también, DEP. A Claudia Torralbo: Por servir de inspiración para el proyecto. Por ampliar mis horizontes. Por su comprensión, compañía, paciencia y amor. Por hacer que siempre quiera superarme sin límite. Nunca me rendiré, las grandes cosas requieren tiempo. A mis directores de proyecto, Cristina Puente y José Ángel Olivas: Por depositar su confianza en mí y recibirme para hacer este proyecto. A David Sánchez: Por su amistad, por su alegría, por su comprensión, por su paciencia, por haberme transmitido la importancia del componente técnico, espero todo lo mejor para ti. A Alejandro Prado Montes: Por su nobleza, por estar siempre ahí, por su gran vocación, por su sensibilidad, por su compañía, espero que la vida te sonría y encuentres tu felicidad. A Roberto Seisdedos Armbruster: Por su sabiduría, por su constancia, por siempre dar ejemplo, vas a llegar muy alto, espero que pueda continuar viendo como no dejas de superar tus metas. A Jesús Arias: Por su amistad, por su forma de ser, por su apoyo, por siempre estar ahí para pasar un buen rato. Espero que siempre seas muy feliz. A todo el resto de mis compañeros de clase por estos 5 años, en especial, a Alberto Arranz, por su insuperable espíritu de trabajo y su genial compañía, a Andrea Morato, por saber escucharme, y a Carlos Balduz, porque en muchas cosas me siento muy identificado contigo.

9 SISTEMA INTELIGENTE DE RESUMEN AUTOMÁTICO BASADO EN RELACIONES CAUSALES Autor: Garrido Merchán, Eduardo César. Director: Puente Águeda, Cristina. Codirector: Olivas Varela, José Ángel. Entidad Colaboradora: ICAI - Universidad Pontificia Comillas RESUMEN DEL PROYECTO Introducción En nuestros días, el crecimiento de la información no es el único motivo que preocupa, sino la capacidad para discernir cual es la información más relevante entre toda la información que una organización gestiona, y cuál es la información que merece la pena observar para extraer conclusiones que puedan ser útiles en una toma de decisiones. Para ello hay que analizar toda la información disponible, discernir cual de esta es conocimiento y extraer el más relevante de forma concisa y sin redundancias. Este proyecto propone el diseño y el desarrollo de una herramienta capaz de resumir textos a partir de las relaciones causales presentes en dichos textos. Se trata de la continuación del trabajo hecho de reconocimiento de relaciones causales propuesto por Cristina Puente y José Ángel Olivas en el cual se obtenía el siguiente grafo:

10 Figura 1. Grafo causal. La salida final será el resumen de dicha información presentado en lenguaje natural para que sea entendido por cualquier usuario, que supone una simplificación del grafo visto en la figura. Tecnología El sistema está compuesto y desarrollado principalmente por tecnología JavaSE. Dentro de esta tecnología se utilizan numerosas librerías necesarias para el funcionamiento del sistema, de entre las cuales cabe destacar en este resumen la ontología Wordnet sobre la que se hacen consultas para averiguar el significado semántico de los significantes presentes, la herramienta SimpleNLG que cuenta con una gramática generativa con la que se genera texto en lenguaje natural, la librería EzGraph para la ejecución de distintos algoritmos de colocación en grafos, el framework de pruebas TestNG para la ejecución de la plataforma de testing del proyecto y el uso de xml para la configuración del sistema que hace variar su comportamiento. El gestor de base de datos utilizado sobre el que se soporta la aplicación es MySQL. De forma adicional, se incluye una interfaz

11 gráfica desarrollada utilizando el entorno de usuario Netbeans IDE y que se comunica con la aplicación general y sus librerías mediante una serie de comandos que permiten la convivencia de ambas aplicaciones. Sistema Desarrollado Mediante distintos análisis, la herramienta es capaz de seleccionar la información más relevante. El análisis de relevancia de cada concepto contenido en el texto clasificado por el trabajo anterior es capaz de inferir la importancia de dicho concepto mediante distintos algoritmos de colocación como el SALSA y enfoques tradicionales. Se elabora un análisis de redundancia semántica mediante consultas a ontologías y ejecución de algoritmos de semejanza como el propuesto por Leacock & Chodorow. Se propone un algoritmo capaz de perder la menor información de las relaciones causales entre conceptos y calcular el grado borroso que une dichos conceptos en función a la semejanza y relevancia con un enfoque totalmente innovador propuesto especialmente para este problema. Tras ejecutar todas estas acciones, el sistema hace uso de una gramática generativa con un algoritmo mediante el cual se genera texto en lenguaje natural similar al escrito por un ser humano gracias a la creación de frases coordinadas y estructuras sintácticas complejas. La configuración de entrada le dice al sistema que algoritmos usar y con qué peso en los distintos análisis. A continuación se puede ver una muestra de ellos.

12 Figura 2. Esquema con fracción de la configuración del sistema. La salida es un resumen que se adapta a las necesidades del usuario. Desafíos técnicos El sistema hace uso de una amplia gama de técnicas pertenecientes a las áreas del Procesamiento del Lenguaje Natural y la Inteligencia Artificial que se ejecutan con distinto peso en función a un complejo módulo de configuración y a las palabras clave pertenecientes a cada uno de los contextos a los que puede pertenecer el texto. Esto incluye la tasa de compresión deseada por el usuario que hará que varíe la longitud del resumen. El principal desafío técnico presente en este proyecto es trasladar todo ese conocimiento teórico sobre el que se ha investigado a material práctico sobre el que se puedan obtener una serie de resultados y hacer que todo el sistema sea dinámico en función a la configuración que se le quiera introducir, obteniendo por ejemplo distinta longitud en el resumen

13 en función a la tasa de compresión. Ciertos algoritmos a utilizar como el tratamiento del grado borroso se han diseñado por primera vez para este proyecto por lo que comprobar su funcionamiento supone otro desafío. Conclusiones Se incluye un robusto módulo de evaluación y pruebas que permite hacer un control de calidad automatizado de diversas métricas que hacen que el resumen sea catalogado como válido. El tratamiento del grado borroso funciona bien al combinar ambos análisis, el de redundancia y relevancia, de forma iterativa, lo cual en principio tampoco se sabía a ciencia cierta cómo funcionaría, pero los resultados son bastante optimistas. La generación de lenguaje natural gracias a la herramienta SimpleNLG y al algoritmo de creación de frases coordinadas y subordinadas funciona bien, dando una sensación de que los textos los puede haber escrito una persona. Se puede seguir mejorando la creación de texto en este sentido.

14 Referencias [1] C. Khoo, J. Kornfilt, R. N. Oddy, S. H. Myaeng, Automatic extraction of cause-effect information from newspaper text without knowledge-based inferencing. Literary and Linguistic Computing. Vol 13(4), pp (1998). [2] C. S. G. Khoo, S. Chan, Y. Niu, Extracting causal knowledge from a medical database using graphical patterns. In ACL Proceedings of the 38 th Annual Meeting on Association for Computational Linguistics, pp , Morristown, USA. (2000). [3] C. Puente, A. Sobrino, J. A. Olivas, R. Merlo, Extraction, Analysis and Representation of Imperfect Conditional and Causal sentences by means of a Semi-Automatic Process. Proceedings IEEE International Conference on Fuzzy Systems (FUZZ-IEEE 2010). Barcelona, Spain, pp , [4] R. Mihalcea. Graph-Based Ranking Algorithms for Sentence Extraction, Applied to Text Summarization. Proceedings of the ACL on Interactive poster and demonstration sessions. University of North Texas. USA. (2004). [5] A. Esuli, F. Sebastiani. PageRanking WordNet Synsets: An Application to Opinion Mining. Proceedings of the 45th Annual Meeting of the Association of Computational Linguistics, pages , Prague, Czech Republic, June (2007). [6] Marc Najork Comparing The Effectiveness of HITS and SALSA. CIKM 07 Proceedings of the sixteenth ACM conference on Conference on information and knowledge management. November 6 8, 2007, Lisboa, Portugal. (2007). [7] G. Jeh, J. Widom. SimRank: A Measure of Structural-Context Similarity. Proceedings of the eighth ACM SIGKDD international conference on Knowledge discovery and data mining. Pages New York, NY, USA. (2002). [8] A. Bawakid and M. Oussalah. A Semantic Summarization System. University of Birmingham at TAC. Proceedings of the First Text Analysis Conference (TAC) United Kingdom. (2008) [9] V. Gupta, G. Singh Lehal A Survey of Text Summarization Extractive Techniques. Journal of emerging technologies in web intelligence, vol. 2, no. 3, Panjab University Chandigarh, India. August (2010). [10] G. Varelas, E. Voutsakis, P. Raftopoulou, G. M. Petrakis E., E. Milios. Semantic Similarity Methods in WordNet and their Application to Information Retrieval on the Web. WIDM 05, Bremen, Germany. November 5, (2005). [11] D. Das, F.T. Martins A. A Survey on Automatic Text Summarization. Language Technologies Institute Carnegie Mellon University. Pennsylvania, United States. November 21, (2007)

15 AUTOMATIC SUMMARIZATION SYSTEM BASED ON CAUSAL RELATIONS. Author: Garrido Merchán, Eduardo César. Supervisor: Puente Águeda, Cristina. Supervisor: Olivas Varela, José Ángel. Affiliation: ICAI - Universidad Pontificia Comillas ABSTRACT Introduction Nowadays, the growth of information is not the only reason of concern, but the ability to discern what is the most relevant information from all the information that an organization manages, the information which is worth watching to draw conclusions that may be useful in decision making. To this we must analyze all available information, discern what of this information is knowledge and extract the most relevant knowledge in a concise way and without redundancies. This project proposes the design and development of a tool which purpose is to summarize texts from the causal relationships present in these texts. This is the continuation of the work done in recognition of causal relationships by Cristina Puente and Jose Angel Olivas in which we obtained the following graph:

16 Figure 1. Causal graph. The final output will be a summary of the information presented in natural language to be understood by any user, a simplification of the graph seen in the figure. Technology The technology of the system is mainly developed in JavaSE. Within this technology numerous libraries necessary for operation of the system are being used, among which stands out Wordnet ontology to which inquiries are made to determine the semantic meaning of the signifiers present in the text, SimpleNLG tool that has a generative grammar that generates text in natural language, the EzGraph library to implement different placement algorithms on graphs, the TestNG testing framework for the implementation of the project testing platform and the use of XML for the configuration system that varies the behavior of the general system. The database manager used on which the application is supported is MySQL. Additionally, it includes a graphical interface developed using Netbeans IDE user environment and communicating with the general application

17 and its libraries through a series of commands that allow the coexistence of both applications. Developed System Through various analysis the tool is able to select the most relevant information. The analysis of relevance of each concept contained in the text classified by previous work is able to infer the relevance of this concept using different placement algorithms such as SALSA and traditional approaches. It develops a semantic redundancy analysis by querying ontologies and similarity algorithms implementations as the one proposed by Leacock & Chodorow. It is proposed an algorithm that is able to lose as little information of the causal relationships between concepts and calculating the fuzzy degree linking these concepts in terms of the similarity and relevance with a completely new approach proposed specifically for this problem. After performing all these actions, the system makes use of a generative grammar with an algorithm by which generates natural language text that seems to have been written by a human being through the creation of coordinated sentences and complex sentence structures. The input setting tells the system which algorithms are used and how different analysis weight, in the next figure an example of a part of this setting is shown:

18 Figure 2. Scheme with a part of the system configuration. The output is a summary to suit user needs. Technical Challenges The system makes use of a wide range of techniques belonging to the areas of Natural Language Processing and Artificial Intelligence that run with different weight according to a complex configuration and module keywords belonging to each of the contexts to which the text may belong. This includes the compression rate desired by the user that will vary the length of the summary. The main technical challenge present in this project is to move all that theoretical knowledge which has been investigated into practical material on which a series of results can be obtained and to make the whole system dynamic according to the configuration that is introduced, for example different lengths obtained in the summary according to the compression ratio. Certain algorithms used as the fuzzy

19 degree treatment that were firstly designed for this project are other challenges. This application represents the end point of the directors work related to this area. Conclusions It includes a robust evaluation and testing module that allows automated quality control of various metrics that make the summary listed as valid. The fuzzy degree treatment works well to combine both analyzes, the redundancy and relevance, iteratively, which in principle is not known for sure how it would work, but the results are quite optimistic. The natural language generation through SimpleNLG tool and creating sentences algorithm coordinate and subordinate works well, giving a feeling that the texts may have written a person. Anyway, you can still continue to improve the creation of text in this regard.

20 References [1] C. Khoo, J. Kornfilt, R. N. Oddy, S. H. Myaeng, Automatic extraction of cause-effect information from newspaper text without knowledge-based inferencing. Literary and Linguistic Computing. Vol 13(4), pp (1998). [2] C. S. G. Khoo, S. Chan, Y. Niu, Extracting causal knowledge from a medical database using graphical patterns. In ACL Proceedings of the 38 th Annual Meeting on Association for Computational Linguistics, pp , Morristown, USA. (2000). [3] C. Puente, A. Sobrino, J. A. Olivas, R. Merlo, Extraction, Analysis and Representation of Imperfect Conditional and Causal sentences by means of a Semi-Automatic Process. Proceedings IEEE International Conference on Fuzzy Systems (FUZZ-IEEE 2010). Barcelona, Spain, pp , [4] R. Mihalcea. Graph-Based Ranking Algorithms for Sentence Extraction, Applied to Text Summarization. Proceedings of the ACL on Interactive poster and demonstration sessions. University of North Texas. USA. (2004). [5] A. Esuli, F. Sebastiani. PageRanking WordNet Synsets: An Application to Opinion Mining. Proceedings of the 45th Annual Meeting of the Association of Computational Linguistics, pages , Prague, Czech Republic, June (2007). [6] Marc Najork Comparing The Effectiveness of HITS and SALSA. CIKM 07 Proceedings of the sixteenth ACM conference on Conference on information and knowledge management. November 6 8, 2007, Lisboa, Portugal. (2007). [7] G. Jeh, J. Widom. SimRank: A Measure of Structural-Context Similarity. Proceedings of the eighth ACM SIGKDD international conference on Knowledge discovery and data mining. Pages New York, NY, USA. (2002). [8] A. Bawakid and M. Oussalah. A Semantic Summarization System. University of Birmingham at TAC. Proceedings of the First Text Analysis Conference (TAC) United Kingdom. (2008) [9] V. Gupta, G. Singh Lehal A Survey of Text Summarization Extractive Techniques. Journal of emerging technologies in web intelligence, vol. 2, no. 3, Panjab University Chandigarh, India. August (2010). [10] G. Varelas, E. Voutsakis, P. Raftopoulou, G. M. Petrakis E., E. Milios. Semantic Similarity Methods in WordNet and their Application to Information Retrieval on the Web. WIDM 05, Bremen, Germany. November 5, (2005). [11] D. Das, F.T. Martins A. A Survey on Automatic Text Summarization. Language Technologies Institute Carnegie Mellon University. Pennsylvania, United States. November 21, (2007)

21 Índice de contenidos 1. Introducción Introducción Hipótesis y Objetivos Metodología de Trabajo Marco de Trabajo Organización del Trabajo Aportaciones Aportaciones Teóricas Aportaciones Prácticas Estado del Arte Matemática Aplicada a la Lingüística Técnicas de Procesamiento del Lenguaje Natural e Inteligencia Artificial Técnicas de Procesamiento de Lenguaje Natural Técnicas de Inteligencia Artificial Ontologías Algoritmos de Gestión del Conocimiento en Grafos Técnicas de Generación de Lenguaje Natural Características de Resúmenes Automáticos Metodologías para Construir un Sistema de Resumen Automático Conclusiones Propuesta de un Sistema de Resumen basado en relaciones causales Justificación y Viabilidad del Proyecto Descripción General del Problema y la Solución Descripción del Problema Descripción de la Solución Identificación de las Necesidades Análisis de los Requisitos Análisis y Diseño del Sistema Análisis Contextual Flujo de Datos entre Procesos Definición de los Procesos Diseño Lógico BBDD Diseño de la Interfaz Gráfica y Configuración del Sistema Algoritmo de Relevancia Estructura del Algoritmo Descripción de Módulos de Relevancia...135

22 4.5 Algoritmo de Detección de Redundancia Estructura del Algoritmo Matriz de Comparación Proceso de Desambigüación de Conceptos Descripción de Relaciones de Redundancia Semántica Descripción de Algoritmos de Semejanza entre Conceptos Algoritmo de Reconstrucción de la Base de Datos Descripción y Funcionamiento del Algoritmo Cálculo del Grado Borroso de las Implicaciones entre Conceptos Algoritmo de Creación del Resumen Propuesta para la Creación de Lenguaje Nuevo Análisis Morfológico Análisis Sintáctico Algoritmo de Generación del Lenguaje Natural Implementación del Sistema de Resumen Basado en Causales SIDRA: Sistema Inteligente de Resumen Automático Configuración e Interfaz Gráfica Herramientas Formato del Fichero de Configuración Interfaz Gráfica del Sistema Librerías Externas de SIDRA e Invocación Remota Persistencia de Ficheros de Configuración Algoritmo de Relevancia Herramientas Implementación Algoritmo de Análisis de Redundancia Semántica Herramientas Implementación Algoritmo de Reconstrucción de Base de Datos Herramientas Implementación Algoritmo de Generación de Lenguaje Natural Herramientas Implementación Conclusiones Evaluación y Pruebas Metodología de Pruebas Evaluación basada en Criterios de Expertos...267

23 6.3 Colecciones de Prueba Plan de Pruebas Conclusiones Conclusiones y Trabajo Futuro Análisis de la Consecución de Objetivos Análisis de las Aportaciones Trabajo Futuro Creación de un Resumen Multi-Documento Algoritmo Genético para calcular valor óptimo de las constantes Modelos Ocultos de Markov para Clasificación de Contextos Creación de Ontología Borrosa Creación de un Chatter-Bot para Interactuar con el Usuario Final Ejecución de Diagnósticos basados en Inferencia Probabilística Interfaz Web para la Ejecución del Servicio Planificación y Presupuesto Planificación Presupuesto Bibliografía...299

24

25 Índice de figuras Figura 1: Crecimiento del Mercado del Big Data...3 Figura 2: Áreas cubiertas por el Natural Language Understanding...5 Figura 3: Clasificación del resumen automático de textos...5 Figura 4: Gramática de Chomsky...8 Figura 5: Modelo oculto de Markov...8 Figura 6: Metodología XP...15 Figura 7: Etapas de la metodología de investigación y desarrollo...17 Figura 8: Partes de la memoria del proyecto fin de carrera...25 Figura 9: Paradigma de los sistemas cognitivos...30 Figura 10: Productos e infraestructura de IBM Watson...31 Figura 11: Teorema de Bayes y Teorema de Probabilidad Total...33 Figura 12: Maximum Likelihood...34 Figura 13: Laplace Smoothing...34 Figura 14: Ejemplo de consulta a un sistema bayesiano...35 Figura 15: Teorema de Bayes y de Probabilidad Total...35 Figura 16: Desarrollo de expresión con Maximum Likelihood...36 Figura 17: Logotipo de Google Translate...37 Figura 18: Ejemplo de expresión de asignación de relevancia a conceptos...37 Figura 19: Triángulo significante-significado-referente...39 Figura 20: Ajuste de los vectores según el modelo FIS-CRM...44 Figura 21: Análisis morfológico y sintáctico de un texto...45 Figura 22: Noam Chomsky y su jerarquía de gramáticas...45 Figura 23: Gramáticas de estructura y dependencia...46 Figura 24: Diagrama de flujo con la relación entre Flex y Bison...47 Figura 25: Ejemplo de un árbol de decisión...51 Figura 26: Clusters calculados por algoritmo k-means...53 Figura 27: Logo de SPSS...54 Figura 28: Pantalla de inicio de R...54 Figura 29: Pantalla de inicio de S-PLUS...55 Figura 30: Logo de WEKA...55 Figura 31: Logotipo de DARPA...57 Figura 32: Ejemplo de una ontología...58 Figura 33: Metodología de construcción de Ontologías METHONTOLOGY...59 Figura 34: WebODE...60

26 Figura 35: Logotipo de RDF...61 Figura 36: Logotipo de W3C...61 Figura 37: Logotipo de WSML...61 Figura 38: Instancia de Wordnet en Árabe...62 Figura 39: Logotipo original de Wordnet...63 Figura 40: UMLS...63 Figura 41: Información disponible en ConceptNET...64 Figura 42: Logotipo de ConceptNET...65 Figura 43: Puntuación PageRank utilizada por Google...68 Figura 44: Nodos Hub y Autoridad...69 Figura 45: Gráfico que simboliza el rol de los sistemas NLG y NLU...74 Figura 46: Timeline de herramientas para la generación de lenguaje natural...75 Figura 47: Listado de herramientas de generación de lenguaje natural actuales...76 Figura 48: Alan Turing y su test para distinguir entre máquina y ser humano...77 Figura 49: Conversación real con el Chat Bot A.L.I.C.E...78 Figura 50: Arquitectura del Sistema COMMONS...84 Figura 51: Arquitecturas de sistemas de resumen automático...86 Figura 52: Complejidad de problemas...95 Figura 53: Grafo causal...99 Figura 54: Organigrama del Proyecto Figura 55: Etapas analizadas en este apartado Figura 56: Análisis Contextual de la Herramienta Figura 57: Diagrama de flujo de datos Figura 58: Extensión del proceso de análisis de relevancia y redundancia Figura 59: Diagrama RER de la base de datos Figura 60: Diagrama de Flujo de Configuración para la herramienta Figura 61: Gráfico con la estructura del fichero XML Figura 62: Expresión peso-valor Figura 63: Nodo del cáncer de pulmón Figura 64: Expresión del PageRank Figura 65: Expresión del HITS Figura 66: Expresión del SimRank Figura 67: Detalle del algoritmo de redundancia semántica Figura 68: Parte del algoritmo estudiada en este apartado Figura 69: Expresión del cálculo de grado de sinonimia Figura 70: Relaciones semánticas entre conceptos Figura 71: Expresión de Hirst & St-Onge...162

27 Figura 72: Expresión de Leacock & Chodorow Figura 73: Expresión de Resnik Figura 74: Expresión de Lin Figura 75: Diagrama del algoritmo de reconstrucción de la base de datos Figura 76: Parámetros que intervienen en el cálculo borroso Figura 77: Ejemplo del cálculo borroso Figura 78: Ejecución del cálculo borroso Figura 79: Ejemplo real para el cálculo Figura 80: Cálculo borroso realizado sobre ejemplo real Figura 81: Diagrama de flujo de datos del generador de texto Figura 82: Diagrama de flujo de datos del análisis morfológico y sintáctico Figura 83: Gramática Inglesa en modo de Chomsky Figura 84: Orden parcial Figura 85: Metodología para la documentación de la memoria Figura 86: Interfaz gráfico de Eclipse, para el desarrollo de la herramienta Figura 87: Logo del lenguaje de programación Java Figura 88: Logo de Python y referencia de NLP con Python Figura 89: Esquema de Configuración e Interfaz Gráfica Figura 90: Menú principal de la interfaz gráfica Figura 91: Entorno de Programación utilizado en el desarrollo de la interfaz Figura 92: Icono del software libre Dom4j Figura 93: Algoritmos presentes en el sistema Figura 94: Módulos presentes en el sistema Figura 95: Formulario de Configuración Figura 96: Formulario de preparación del resumen Figura 97: Formulario de Presentación de Resultados Figura 98: Librerías Java referenciadas desde el Sistema de Resumen Figura 99: Estructura de Carpetas en la que se persiste la información Figura 100: Log de Relevancia de ejecución con configuración aleatoria Figura 101: Esquema de Algoritmo de Relevancia Figura 102: Clases contenidas en la librería EzGraph Figura 103: Log de Relevancia para una ejecución aleatoria Figura 104: Esquema de Algoritmo de análisis de redundancia semántica Figura 105: Logotipo de JWNL Figura 106: Peter Norvig, Director de Investigación en Google Figura 107: Logotipo de ws4j Figura 108: Fichero de configuración de JWNL Figura 109: Esquema de Algoritmo de reconstrucción de la base de datos...235

28 Figura 110: Logos de las utilidades elegidas Figura 111: Interfaz gráfica para la gestión de tablas de phpmyadmin Figura 112: Esquema de Algoritmo de Creación de Resumen Figura 113: Tutorial Online de SimpleNLG Figura 114: Gráfico disponible en la web del Lexical Systems Group Figura 115: Grafo de relaciones causales de entrada al proceso Figura 116: Grafo de relaciones causales obtenido con una combinación Figura 117: Ciclo de vida clásico. Etapa de Pruebas y Evaluación Figura 118: Ejemplos de evaluación de resúmenes Figura 119: Diagrama del módulo con entradas y salidas Figura 120: Logo de TextClassification Figura 121: Resultado de ROUGE Figura 122: Expresión matemática del Rouge-N Figura 123: Formulario de Presentación de Resultados Figura 124: Expresión de la F-Measure Figura 125: Planificación del Proyecto...295

29 Índice de algoritmos Algoritmo 1: Orden topológico...71 Algoritmo 2: Query Based Sentence Extraction Algorithm...87 Algoritmo 3: Matriz de comparación Algoritmo 4: Código que vincula la ejecución de ambas aplicaciones Algoritmo 5: Estadísticas básicas Algoritmo 6: Fragmento del código de análisis de relevancia Algoritmo 7: Busca de hiperónimos de un término usando Wordnet Algoritmo 8: Código que invoca a Wordnet::Similarities desde Java Algoritmo 9: Código del algoritmo de reconstrucción de la base de datos Algoritmo 10: Método con la funcionalidad de procesar la entidad Algoritmo 11: Constructor que utiliza el léxico por defecto Algoritmo 12: Grados usados para el orden parcial Algoritmo 13: Parámetros adicionales para la creación de frases Algoritmo 14: Código Java que invoca a LanguageTool Algoritmo 15: Batería de tests estándar Algoritmo 16: Función ejecuta sistema Algoritmo 17: Generación de configuración dinámica Algoritmo 18: Ejecuta Sistema Algoritmo 19: Función Limpiar BBDD Algoritmo 20: Test Análisis Sintáctico...278

30

31 Índice de tablas Tabla 1: Listado de campos para una red neuronal...80 Tabla 2: Requisitos del proyecto Tabla 3: Parámetros del algoritmo de relevancia Tabla 4: Peso para desambigüación del concepto Tabla 5: Pesos y combinaciones para resultado final Tabla 6: Resultado de semejanza usando diversos algoritmos...268

32

33 Capitulo 1. Introducción. A lo largo de los últimos tiempos, el volumen de información contenida en diversos medios informáticos como por ejemplo las redes sociales ha crecido exponencialmente, imposibilitando la capacidad para extraer conocimiento relevante de forma sencilla. Por cada nuevo día que transcurre dicha información se multiplica, nuevas noticias en periódicos digitales, nuevos usuarios en nuevas redes sociales, nueva información en las distintas bolsas del mundo para ser analizada, etc. En el sector judicial podemos observar como cada vez aparecen nuevos casos que deben ser archivados para su posterior análisis, en el sector médico aparecen nuevos historiales de pacientes para ser analizados, en el sector de la educación aparecen nuevos expedientes de los que se podrían extraer conclusiones en función de su contenido. No es por tanto el crecimiento de la información el único motivo que preocupa, sino la capacidad para discernir cuál es la información relevante entre toda la información que una organización tiene, cuál es la información que merece la pena observar para extraer conclusiones que pueden ser útiles en una toma de decisiones. Sobre este tema se fundamenta la ciencia a la que en la actualidad se ha denominado como Big Data, que trata de extraer la información relevante de un conjunto de datos que aparentemente no tienen una organización sobre la que se puedan extraer conclusiones útiles. Es importante considerar tres parámetros fundamentales al tratar con grandes volúmenes de datos: -1-

34 El volumen de los datos a analizar, para saber si es conveniente el uso de diferentes estrategias el principal parámetro a considerar es la cantidad de información que va a ser analizada. La velocidad con la que necesitan ser analizados. Sistemas de tiempo real frente a otros sistemas de gestión batch. La variedad de estos datos, que pueden ser o no estructurados. En función a la estructura de los datos a analizar será necesario aplicar un repertorio diferente de técnicas para discernir cual es la información relevante y poder analizar dicha información. Para adquirir conciencia del gran volumen de datos que se trata en la actualidad lo más sencillo es aportar cifras de valor cuantitativo sobre la cantidad de información sobre la que se puede trabajar hoy en día millones de nuevos contenidos son añadidos a Facebook actualmente cada mes por 600 millones de usuarios. Zynga, plataforma popular de juego online, procesa 1 petabyte de contenido para sus jugadores en cada nuevo día. Un volumen de datos sin antecedentes en la industria del juego online. Más de 2000 millones de vídeos son vistos en Youtube cada día. Un 90 % de los datos existentes en la actualidad han sido creados en los dos últimos años. Estos hechos permiten inferir de forma sencilla que el mercado de soluciones relativas al tratamiento de grandes volúmenes de datos está creciendo acorde al crecimiento de la cantidad de información que analizan. Efectivamente podemos ver en la siguiente gráfica de Reuters como este hecho es cierto: -2-

35 Figura 1. Crecimiento del Mercado del Big Data. Si analizamos la gráfica podemos observar como esta industria no ha hecho más que comenzar, por lo que en teoría es una buena decisión estratégica el que una empresa se ocupe de este sector. En la gráfica de la izquierda, se puede observar el crecimiento esperado de información en los próximos años. Como se puede observar, el volumen de información actual representa aproximadamente un 10% de la información que se hallará disponible en el 2020, por lo que el desarrollo de soluciones que aporten nuevas vías de progreso en esta área es inminente. En la gráfica de la derecha podemos ver la distribución de los datos por zonas geográficas. Dentro de las técnicas del Big Data encontramos aquellas pertenecientes al área denominada como Procesamiento del Lenguaje Natural, área también perteneciente a la Inteligencia Artificial y que pretende aportar enfoques a esta disciplina que analicen los datos directamente en su formato original al ser escritos sin necesidad de estructurar la información previamente. -3-

36 Lamentablemente el enfrentarse a este problema no es una tarea sencilla, dado que cada contexto sobre el que se puede analizar la información tiene propiedades únicas que le distinguen del resto. Por ejemplo, a priori lo que puede ser relevante para ser analizado en el contexto legal puede no serlo en el contexto médico y viceversa. Para agravar la dificultad del problema, en el Procesamiento del Lenguaje Natural se tiene que tomar en cuenta el hecho de que se va a analizar un texto no estructurado, es decir, escrito por un ser humano sin ningún propósito de ser apto para un análisis de datos. Cada contexto tiene sus propios tecnicismos, las palabras que podemos encontrar se pueden referir a significados diferentes en función de este contexto, incluso dependiendo de la zona geográfica del autor que las escribe encontramos las llamadas variedades diatópicas. El Procesamiento del Lenguaje Natural y dentro de él, el entendimiento del lenguaje natural por parte de los ordenadores ( Natural Language Understanding, NLU ) es un área que exige un cuidadoso tratamiento y análisis de la información y que está siendo investigada mediante diversos mecanismos que proporcionan un análisis objetivo sobre un mundo que a lo largo de los años ha sido categorizado como subjetivo y de imposible análisis. El NLU analiza distintas áreas de la lingüística como por ejemplo la morfología o la semántica con el objetivo de hacer útil la información emitida por un ser humano para un ordenador. Tanto a nivel escrito como a nivel hablado en el cual la información es procesada por medio de sensores. Un resumen de las distintas áreas cubiertas por el NLU y los procesos que en ellas se ejecutan se puede ver a continuación: -4-

37 Figura 2. Áreas cubiertas por el Natural Language Understanding. En este proyecto fin de carrera de investigación se va a proponer el diseño y la implementación de una herramienta que opera en una de las áreas más populares del NLU, el resumen automático de textos, sobre la que se está investigando mucho en los últimos tiempos. La siguiente figura permite observar una estructura que engloba a todas las ciencias sobre las que se ha escrito en esta introducción: Figura 3. Clasificación del resumen automático de textos. -5-

38 Debido a la información expuesta en esta introducción, está claro que se hace necesario elaborar un sistema que sepa configurarse en función al contexto que trata, y que de forma dinámica adapte su comportamiento al mismo para ser capaz de extraer la información vital en cada contexto diferente. No se trata de una tarea sencilla pero en esta memoria se comentan diversos enfoques que pueden ser tratados con el propósito de discernir cual es la información más relevante y presentarla al usuario como si fuese un resumen escrito por un ser humano. -6-

39 1.1 Introducción al resumen de textos automático. Es necesario que si se va a analizar el paradigma del resumen automático de textos se tenga una idea firme de lo que simboliza un resumen de texto. A continuación se proponen diversas definiciones. Se define un resumen como una síntesis de un texto que reúne las principales propiedades del mismo con una longitud inferior. Otra posible definición de resumen es una exposición breve de lo esencial sobre un asunto o materia. Esto puede llevarnos a una discusión sobre si un procedimiento automático puede lidiar con el carácter subjetivo que esta materia posee. Resumir textos puede considerarse una tarea meramente subjetiva, en la cual unas personas considerarían un extracto como apto y otras lo desecharían. Alejándonos de esa pregunta de carácter filosófico, lo que sí es cierto es que existen ciertos patrones y conexiones entre entidades que pueden determinar su mayor importancia en un texto frente a otra información. Es un hecho verificado que estos patrones y conexiones pueden ser reconocidos usando distintos mecanismos como puede ser una gramática de Chomsky para estructurar el texto o un modelo oculto de Markov para inferir si merece la pena de ser clasificado como resumido o no en función a las observaciones vistas. -7-

40 Figura 4. Gramática de Chomsky. Figura 5. Modelo oculto de Markov. Este tipo de técnicas se han utilizado durante los últimos años con gran frecuencia para un múltiple número de aplicaciones por lo que esto es un buen argumento que sentencia la duda inicial sobre la viabilidad del resumen automático de textos. Este tipo de técnicas serán analizadas a todo detalle en el estado del arte de esta memoria. Dentro del resumen automático de textos existen múltiples técnicas y enfoques claramente diferenciados que se analizarán a todo detalle en el estado del arte, en función a las necesidades que se desean satisfacer, a la información que se quiere extraer o a la información con la que se trabaja. En este proyecto se propone un sistema que hace una combinación de distintas técnicas pertenecientes a los ámbitos de la Inteligencia Artificial y el -8-

41 Procesamiento del Lenguaje Natural para sintetizar la información contenida en un texto y presentar un resumen del mismo a un usuario final. -9-

42 -10-

43 1.2 Hipótesis y objetivos. Como ya se ha explicado anteriormente el objetivo principal del proyecto gira en torno a obtener un resumen que contenga la menor extensión posible y contenga el mayor contenido informativo del texto original. Para ello se define un contexto de investigación en el cual se obtendrán las diferentes técnicas que se pueden aplicar con este fin. Este resumen debe tener las siguientes características: Debe ser especialmente eficaz en el contexto médico y judicial pero se puede aplicar a cualquier otro contexto. Debe ser por tanto independiente de contexto. Debe centrarse en un único documento. Debe generar nuevo lenguaje a partir del ya existente. No se limitará en ningún caso a extraer información. El usuario podrá establecer como entrada una tasa de compresión o un tópico del resumen si así lo quisiese. Se deberá crear un nuevo algoritmo específico para este proyecto para establecer como relevantes las entidades del grafo de entrada por sus conexiones y por su contenido semántico. Se podrá investigar en esta tarea y publicar algún informe relativo a ello. Investigar sobre todas las tecnologías ya existentes e informar sobre ellas. El idioma del texto a resumir será lengua inglesa. Las hipótesis que se pretenden corroborar en el alcance de este proyecto son las siguientes: -11-

44 Es posible asignar una medida de relevancia a los distintos términos que se han estructurado del texto con el que se está trabajando? Como se verá en posteriores capítulos, el punto de partida a este proyecto se basa en un grafo que contiene las relaciones causales que se encuentran en un texto. Mediante técnicas de extracción de la información se obtiene dicho grafo que constituye una representación formal del texto a analizar. En el grafo se encuentran nodos que simbolizan a los distintos conceptos que se encuentran en el texto. Un primer enfoque para hacer un resumen sería ejecutar distintos algoritmos que determinen cuales de estos conceptos son los más relevantes para que figuren en el resumen final. Se hace necesario calcular esta medida de relevancia puesto que sin ella no se tendría un criterio para discriminar que conceptos son susceptibles de aparecer y por lo tanto no se tendría una justificación objetiva para incluir unos u otros conceptos en el resumen. Es posible comparar a los términos contenidos en estas estructuras con el fin de poder encontrar una redundancia semántica entre ellos? Desde otro enfoque totalmente diferente al previamente comentado, sería interesante elaborar un mecanismo para encontrar redundancia semántica entre dos términos que se vayan a comparar. Por ejemplo, si encontramos que los términos tobacco use y smoking poseen una relación como en este caso es una sinonimia, en función a la relevancia calculada previamente se puede determinar cual de estos términos va a aparecer en el resumen y cual no puesto que el significado que aportan estos términos es el mismo. Esta tarea es además más difícil de lo anteriormente comentado debido al hecho de la palabra que analicemos por si sola no nos da información sobre su -12-

45 contenido. Una palabra polisémica, es decir, que tiene múltiples acepciones cuyos significados no tienen nada que ver entre sí, Como se comentará en futuros capítulos de esta memoria, existen mecanismos para encontrar estas relaciones y por tanto es posible establecer una comparación entre los significados de cada término. Es posible conservar el significado subyacente a un texto eliminando un gran porcentaje de la información que le define? Es importante no confundir el significado de esta pregunta con respecto a la anterior. Puede ser posible el establecer un mecanismo para encontrar relaciones entre términos pero al eliminar uno de estos términos podemos perder todas las relaciones causales que contiene con respecto a los otros conceptos con los que tiene relaciones. Para evitar este hecho se diseñará en este proyecto un algoritmo que contemple cualquier posibilidad para no perder el significado que la causal simboliza aunque se pierdan algunos de los conceptos del grafo que no serán incluidos en el resumen final. Es posible construir un texto en lenguaje natural de tal forma que parezca que un humano y no una máquina ha sido la autora del texto? No sirve de nada el cumplir los anteriores puntos si es imposible crear un texto en lenguaje natural que parezca escrito por un ser humano. Como se verá en posteriores apartados al tener la información estructurada en muchos de los procesos del sistema se pierden restricciones sintácticas que el texto pueda tener. La construcción de lenguaje natural será un tema tratado en el estado del arte y el alcance de este proyecto puesto que simboliza un problema a nivel morfológico y -13-

46 sintáctico. Para construir una frase en función a los términos con los que se cuenta hay que considerar variables de cada término como pueden ser el idioma, género, el hecho de que el sustantivo sea propio o común, singular o plural... Todas estas condiciones harán que la construcción del texto sea distinta, y hay que considerarlas a la hora de plantear un proceso de construcción de lenguaje natural. Es posible diseñar un plan de evaluación que constituya una medida objetiva de una tarea subjetiva como es la del resumen de textos? En el caso de que todas las preguntas anteriores sean verificadas como ciertas, aún así nos enfrentaríamos a una problemática en el caso de que no se pueda valorar cuantitativamente el resultado de este sistema. En cualquier tarea subjetiva, al no existir un criterio de evaluación claro, cualquier resultado puede darse por válido luego es imposible calificar el resultado final. Debido a este hecho, es absolutamente necesario que se establezca un mecanismo de evaluación lo más objetivo posible que pueda calificar el resumen de salida y cada uno de los criterios que se ejecutan en este sistema. Como se podrá ver en los futuros apartados el alcance del proyecto incluye una visión teórica de este apartado en el que se detallarán diversas metodologías y enfoques destinados a la evaluación de los algoritmos y el resumen final. -14-

47 1.3 Metodología de trabajo. Dada la gran envergadura y labor de investigación que estas tareas necesitan, no se puede seguir una metodología convencional como puede ser seguir un ciclo de vida en cascada puesto que es muy difícil pronosticar el tiempo que cada tarea llevaría y consume excesivo tiempo en la documentación, si no hacer un gran número de prototipos para probar las distintas tecnologías. Es por ello que se necesita definir una metodología específica para proyectos de investigación con alto riesgo de viabilidad en cada una de sus etapas. La metodología comentada a continuación se inspira en metodologías ágiles como pueden Scrum o Extremme Programming dada su alta adaptabilidad al cambio, necesario en esta tarea junto al clásico método científico que se ha llevado a cabo a lo largo de la historia para la investigación. Figura 6. Metodología XP. Se toma la rapidez de desarrollo que aporta esta metodología usada para proyectos tradicionales en el ámbito de las TI añadiéndole un componente de investigación sobre las tareas a desarrollar dado que las actividades que se desarrollan en este proyecto son a priori desconocidas. Ello implica que el abordar la implementación -15-

48 de un proceso que se pueda encontrar pueda terminar en fracaso por la imposibilidad de adaptar esa técnica al sistema. Se juega con un alto riesgo de fracaso por cada técnica elegida. Por ello se propone una metodología de trabajo que se podría aplicar a cualquier otro proyecto de investigación en el cual exista como en este una alta probabilidad de cambio en cualquiera de las etapas del proyecto: Por un lado, se sigue la metodología XP y Scrum para todo lo relativo a la construcción de la arquitectura del sistema, dado que es conocido el resultado que van a aportar las acciones emprendidas. A partir de una metáfora del sistema recogida en diagramas de flujo, se analiza y codifica la herramienta de forma iterativo-incremental. Una vez terminado cada sprint se contrasta con el análisis de los requisitos para ver si el resultado obtenido cubre los requisitos que se le demandaban. Una vez emprendidas todas estas acciones se terminará el ciclo de vida de las actividades tradicionales con una batería de test que valide la codificación efectuada. Para las actividades de investigación, sobre las que no se tiene conocimiento previo, se debe efectuar una metodología diferente, más pausada, que analice en detalle la técnica que se va a integrar en el sistema antes de ser implementada bajo un análisis exhaustivo para contrastar su valía para el sistema. Como se verá más adelante, la arquitectura del sistema permite añadir nuevos módulos y configurarlo para que se comporte en función a una configuración externa. La metodología descrita a continuación es aplicable tanto a técnicas que se encuentran en el estado del arte como a nuevos desarrollos que se plantean para solucionar un problema encontrado debido a que no se han desarrollado por nadie con anterioridad. Para cada nuevo módulo que se integra en el sistema se emprenden las siguientes acciones: -16-

49 Figura 7. Etapas de la metodología de investigación y desarrollo. En primer lugar, al no saber nada sobre las acciones o algoritmos que se van a integrar en el sistema, se hace necesaria una exploración del estado del arte de las técnicas más relevantes del área de resumen automático. Esta exploración, u observación como se propone en el método científico, se basa en efectuar búsquedas en literatura e Internet de las técnicas que se pueden implementar y contrastar opiniones sobre la experiencia que otras personas han obtenido al implantar estas técnicas. Para tal fin, se han descargado artículos sobre el área de resumen automático y se ha suscrito a grupos de investigación que hablan sobre este paradigma, sobre los que se ha conseguido un mayor conocimiento en el área. -17-

50 Una vez explorados las distintas técnicas y algoritmos existentes se describe con todo detalle las características de los mismos con el objetivo de comprender su funcionamiento de cara a una posible implementación. Tras ello, se analizan estas descripciones con el objetivo de averiguar si es adecuada la implementación de los algoritmos que describen en el sistema. Es necesario que se efectúe una comparación de los nuevos algoritmos con los que ya están integrados para averiguar si el uso de los mismos no es redundante con los ya implementados. Hasta este punto puede ser que la adecuación de la nueva técnica sea plausible pero se deniegue por el hecho de ser redundante con las ya implementadas. Si se aprueba que no hay ningún algoritmo que efectúe esas acciones en el sistema, se propone una explicación teórica de la aplicación de ese algoritmo en la práctica, prediciendo los resultados que se van a obtener con el mismo. De esta fase se extrae un documento de propuesta de implantación de la técnica estudiada, que contiene el análisis y diseño detallado para trasladar el conocimiento teórico a una implementación real, modificando aquellas características del algoritmo necesarias para su implementación y adecuación en el sistema. Terminada la fase de análisis y diseño, en este punto se retoma la metodología Scrum y XP y se implementa la solución en un ciclo iterativo e incremental, puesto que ya es conocida la estructura y consecuencias de la técnica a implantar. Con la fase de implementación terminada, se codificarían planes de prueba específicos para obtener los resultados de la codificación del algoritmo destinados a obtener una confirmación y evaluación del mismo. -18-

51 En cada fase de la metodología puesta se documenta por separado cada etapa adaptándola a la estructura del documento del proyecto fin de carrera. En ocasiones, para ciertos módulos se proponen artículos de investigación que profundizan más en la materia. Al igual que la investigación, el diseño, análisis e implementación la documentación se ha elaborado siguiendo una metodología iterativo-incremental, rellenando cada apartado según se han obtenido los resultados de cada etapa de la metodología en cada módulo del sistema. -19-

52 -20-

53 1.4 Marco de trabajo. Dado que el alcance de resumir un texto desde cero es desproporcionado para un Proyecto Fin de Carrera de esta escuela es importante acotar el marco de trabajo sobre el que se va a actuar en este proyecto. Este proyecto se propone con el propósito de elaborar un resumen sobre la información de un texto donde ya han sido elaboradas las siguientes acciones de cara a obtener un resumen automático: Se ha clasificado la información en forma de causales, relaciones que tienen uno o varios precedentes y ellos concluyen en un consecuente a través de un concepto en forma de relación que los une. Esta relación puede ser más o menos fuerte en función a términos encontrados en el texto, lo que motiva a la construcción de un sistema experto que utilice lógica borrosa para el análisis semántico de las causales. Estas causales han sido representadas por un grafo que une todas las unidades de contexto citadas previamente. Ha sido utilizado el framework Flex para el preprocesamiento inicial del texto. Ha sido probado con éxito sobre el campo legal y médico dado que estos sectores se amoldan bien a relaciones causa-efecto. En el ámbito legal es lógico pensar que los condicionantes sean los delitos que puedan ser cometidos o los hechos que disparan ciertas leyes y en el contexto médico sean las enfermedades las causantes de ciertas dolencias, o las acciones de un individuo las que ocasionen el contagio de alguna enfermedad. El artículo en el que se recogen y detallan estas tareas y que representa el marco de este proyecto fin de carrera es el siguiente: -21-

54 C. Puente, A. Sobrino, J. A. Olivas, R. Merlo, Extraction, Analysis and Representation of Imperfect Conditional and Causal sentences by means of a Semi-Automatic Process. Proceedings IEEE International Conference on Fuzzy Systems (FUZZ-IEEE 2010). Barcelona, Spain, pp , El proyecto pretende ampliar este marco y las investigaciones de estos artículos dentro del alcance comentado en el apartado de hipótesis y objetivos. -22-

55 1.5 Organización del trabajo. El cuerpo fundamental de este documento se organiza de la siguiente manera: I. Capítulo 2. Estado del Arte. En este capítulo se detallará con toda precisión las múltiples áreas relativas al resumen automático de textos y el avance que cada una aporta a esta tarea. Se pretende elaborar una síntesis del trabajo efectuado en los últimos tiempos en lo que respecta a este fin. Se elaborará un listado de todas las técnicas que aportan estas áreas junto a una explicación de las mismas y las aplicaciones actuales que las soportan. Se realizará un apartado de conclusiones en el que se comentará el uso que se hará de este estado del arte. II. Capítulo 3. Propuesta del Sistema. Comprendido el estado del arte de lo referente a esta materia se elabora una propuesta del sistema que se va a diseñar e implementar en este proyecto fin de carrera. Se analiza formalmente la justificación y viabilidad del proyecto, tratando una exposición técnica del problema y la solución que se plantea. Se termina el capítulo con una identificación de las necesidades a cubrir en este proyecto y un análisis de los requisitos que se exigirán en el proyecto. III. Capítulo 4. Análisis y Diseño. Esta parte del documento aborda ya un análisis y diseño completos del sistema que se propone para satisfacer las distintas necesidades y requisitos planteados en el apartado anterior. Se inicia el apartado con una serie de diagramas de análisis de alto nivel del sistema que aportan una visión generalista sobre las distintas partes en las que se divide el sistema. Una vez estudiadas se profundiza en cada proceso para reflejar con detalle el diseño que se plantea de todas las partes que intervienen en el sistema. Se pretende explicar el funcionamiento de todo el sistema de cara a una futura implementación. -23-

56 IV. Capítulo 5. Implementación. Se propone una implementación que satisfaga el análisis y diseño desarrollados en el apartado anterior. En este capítulo se comenta la codificación hecha para el sistema implementado en este proyecto fin de carrera. Para cada proceso se detallan las herramientas que se han utilizado para llevar a cabo la tarea. Se adjuntan resultados y la interfaz gráfica de la herramienta implementada. En un último apartado de conclusiones se comentan las dificultades encontradas, logros conseguidos y resultados obtenidos. V. Capítulo 6. Evaluación y pruebas. Adquiere especial importancia en el ámbito del resumen automático una evaluación y pruebas del sistema codificado. El alcance del proyecto no cubre la totalidad de esta tarea pero se comentan los distintos mecanismos y metodologías que cubren esta tarea de cara a un trabajo posterior. Se diseña y comenta la implementación y herramientas de un plan de pruebas que califique a la herramienta implementada en su totalidad. VI. Capítulo 7. Conclusiones y trabajo futuro. Se analizan los resultados generales de todo el proyecto en un apartado de conclusiones. Se comentan las principales dificultades encontradas a lo largo del proyecto. El apartado de trabajo futuro muestra las ideas que se pueden desarrollar tomando como entrada los resultados obtenidos en este proyecto. Para cada idea o aplicación que utilice este trabajo se comenta un diseño de alto nivel junto a una propuesta de las herramientas que se pueden utilizar para implementar el trabajo en caso de ser oportuno. De forma adicional se efectúa la planificación y presupuesto para este proyecto. La siguiente figura resume las distintas partes de este documento: -24-

57 Figura 8. Partes de la memoria del proyecto fin de carrera. -25-

58 -26-

59 1.6 Aportaciones. Dentro del contexto de este trabajo se elaboran una serie de aportaciones a la comunidad científica que pueden proporcionar una fuente de conocimiento para trabajos que se puedan derivar de este. En este apartado se propone un listado de las diferentes aportaciones que ofrece este proyecto para el interesado en el área del resumen automático de textos. Se dividen las aportaciones en teóricas o prácticas en función a su naturaleza Aportaciones teóricas. Se han publicado diversos artículos a partir de la base de este proyecto: C. Puente, J. A. Olivas, E. Garrido Compression and Redundancy Elimination in Causal Graphs. NAFIPS North American Fuzzy Information Processing Society. Comillas Pontifical University. De forma adicional, se ha aportado una expresión matemática para el cálculo del grado borroso de una relación causal entre dos entidades que referencian a una tercera cuando una de las dos primeras desaparece. Se aportan ejemplos que demuestran su utilidad y valía Aportaciones prácticas. Desde una perspectiva práctica, se comentan las distintas aplicaciones vinculadas a la implementación de este proyecto en las siguientes líneas: -27-

60 Se ha desarrollado el software SIDRA, Sistema Inteligente de Resumen Automático en el contexto de este proyecto. SIDRA da plena cobertura a todo el componente teórico descrito en este documento. SIDRA necesita relacionarse con el trabajo previo de los directores para operar en pleno funcionamiento. Se ha implementado un plan de pruebas y configuración que certifica el correcto funcionamiento de la herramienta implementada. -28-

61 Capítulo 2. Estado del Arte. La capacidad de sintetizar información para la rápida asimilación de la misma perdiendo la menor información posible de un texto ha sido objeto de estudio de varias disciplinas a lo largo de la historia. En este ámbito es destacada la clásica labor de la lingüística, la lógica y la estadística. Tras la aparición de la informática, un gran número de áreas de estudio se han centrado de nuevo en esta materia, desde aquellas de carácter más técnico como el Procesamiento del Lenguaje Natural, la Inteligencia Artificial, Matemática Discreta o la Minería de Datos hasta otras completamente desplazadas de estas primeras como el Periodismo o la Filología. Al contrario de lo que puede parecer, este proyecto se fundamenta en ideas que ya han sido llevadas a la práctica, no en conceptos teóricos que no han sido implementados, en todo momento se intenta desarrollar un conocimiento teóricopráctico de todos los algoritmos y técnicas que se van a explicar en este estado del arte. Se han desarrollado sistemas de resúmenes automáticos en diversos campos, en éstos últimos años ha cobrado especial importancia la síntesis de la información en la Web. Google News incorpora uno de estos sistemas para presentar titulares a partir de grandes conjuntos de información, en Twitter se pueden usar estos sistemas para adaptar un texto a 140 caracteres. Este sistema de resumen automático intenta estar a la vanguardia en el paradigma de la ingeniería informática y está muy inspirado en el sistema cognitivo Watson, de IBM. Una nueva era para la ingeniería informática: -29-

62 Figura 9. Paradigma de los sistemas cognitivos. Aunque el alcance de Watson es superior, Watson y el sistema comparten un gran número de técnicas para poseer la capacidad de procesar el lenguaje natural y discernir de él mediante un número diferente de técnicas de Procesamiento del Lenguaje Natural e Inteligencia Artificial cual es la información relevante y guardarla para un procesamiento posterior de la misma o para aprendizaje automático. -30-

63 Figura 10. Productos e infraestructura de IBM Watson. Como se puede comprobar las técnicas de NLP y Big Data son usadas hoy en día por este tipo de sistemas que en un futuro próximo revolucionarán el mercado y que para funcionan se basan y necesitan una gran maestría en NLP. Este proyecto podría, por ejemplo, ser una capa superior para que Watson pudiese discernir qué información es la más relevante en un diagnóstico sobre el cáncer de pulmón antes de ser procesada por sus sistemas para ahorrar computación. Una vez visto el estado del arte de la principal herramienta que inspira a este proyecto y como esta podría aplicarse al mismo, se va a proceder con una descripción detallada del estado del arte. Se han propuesto un gran número de algoritmos y tecnologías que pueden ser aplicadas a tal fin. En este estado del arte, se analizarán las principales técnicas y actores que se han establecido en el contexto del resumen automático a lo largo de este siglo. -31-

64 -32-

65 2.1 Matemática aplicada a la lingüística. Para empezar una revisión de todas las técnicas existentes en el estado del arte es conveniente empezar por las más teóricas, por los primeros enfoques que se propusieron para abordar el tema del entendimiento del lenguaje natural por parte de las máquinas. En este contexto, las matemáticas son la ciencia que puede trasladar una información no estructurada como es el lenguaje natural a valores cuantitativos que pueden expresar medidas que se quieran calcular. El lenguaje natural es un paradigma lleno de incertidumbre, por lo que la herramienta más adecuada para tratar dicha incertidumbre es la probabilidad. La probabilidad es un área de la matemática que siempre se ha aplicado a la lingüística con mayor insistencia con la aplicación práctica de clasificar conceptos en categorías en función al contenido de dichas categorías. En el fundamento teórico es de amplio uso el teorema de la probabilidad de Bayes para determinar con que probabilidad pertenecen estos conceptos a las distintas categorías. Figura 11. Teorema de Bayes y Teorema de Probabilidad Total. En función a bases del conocimiento construidas por un experto en la materia y a estos fundamentos teóricos se pueden diseñar técnicas de aprendizaje automático que utilicen estos fundamentos para discriminar con mayor precisión según mayor experiencia tenga el proceso el origen de dichas palabras. Esta técnica de aprendizaje automático básica es sin embargo muy utilizada en diversos sectores, se la denomina como Bayesian Filtering. Para extraer la probabilidad de una palabra con una base de datos se toma el número de casos favorables entre casos totales, lo que se le denomina como Maximum Likelihood (ML). -33-

66 Figura 12. Maximum Likelihood. ML presenta el problema de que si el concepto posee varias palabras y una de ellas no existe la probabilidad de que el concepto caiga en esa categoría sería igual a cero. Esto es un claro síntoma de sobreaprendizaje en el modelo propuesto. Para evitar el sobreaprendizaje es muy útil el uso de una técnica conocida como Laplace Smoothing (LS), que hace que un concepto no tenga probabilidad cero de ser clasificado en una categoría solo por el mero hecho de que alguna de las palabras que lo contiene no pertenezca a dicha categoría. Esta técnica mejora al Bayesian Filtering obteniendo resultados más realistas. Figura 13. Laplace Smoothing. Donde /n representa los casos favorables entre los casos posibles a los que se le añade una constante l que en el ejemplo y popularmente es igual a 1 y un número de clases posible en los que se subdivide la base del conocimiento k. De esta forma se evita la problemática de sobreaprendizaje. Un ejemplo de aplicación con este algoritmo es la detección de spam, utilizando esta técnica se puede discriminar que s serán spam y cuales ham. La técnica que se va a describir es popularmente conocida como Bayesian Spam Filtering. En el ejemplo propuesto, se va a describir otra aplicación para esta técnica, en la cual se discrimina la probabilidad de que una nueva obra sea una película o una canción en función a su título y a una base de conocimientos. Será una aplicación compleja de todos los conceptos vistos previamente, usando Laplace Smoothing y -34-

67 viendo su efectividad: Figura 14. Ejemplo de consulta a un sistema bayesiano. A continuación se analiza cómo, pese a que la palabra storm del concepto perfect storm no está incluida en la base de conocimientos de películas aún así la probabilidad de que sea una película ese concepto es de un El motor de inferencias del sistema construido en la figura anterior haría los siguientes cálculos. En primer lugar utilizando el teorema de Bayes y el teorema de la probabilidad total, se obtiene que: Figura 15. Teorema de Bayes y de Probabilidad Total. Sobre esto ya se puede operar, en primer lugar se sabe que la probabilidad inicial de que sea película o canción es igual a 0.5, dado que hay tres películas y tres canciones. El resto del desarrollo, para la probabilidad de que sea una película -35-

68 siendo similar a que sea una canción y luego sustituyendo en la expresión anterior se muestra a continuación: Figura 16. Desarrollo de expresión con Maximum Likelihood Si se hubiese seleccionado Maximum Likelihood la probabilidad de la consulta hubiese sido igual a 0, dado que la expresión P( Storm /Pelicula) hubiese sido igual a cero. Siguiendo el mismo desarrollo de forma trivial, se calculan los otros términos de la expresión inicial y su cómputo final es igual a quedando a la comprobación del lector. Mediante este sistema, podemos obtener un clasificador probabilístico trabajando con lenguaje natural y que puede ser de gran uso para determinados propósitos en un sistema de resumen automático. Como se ha visto, el fundamento teórico de esta técnica es utilizado también en un múltiple abanico de aplicaciones, no solo la detección de spam. Utilizando esta técnica y otros algoritmos derivados de este enfoque se pueden construir sistemas de detección de la lengua en la cual está escrita un texto, especificar qué zona geográfica ha sido la participe de la escritura de un texto en función a variedades diatópicas, etc... Un ejemplo de sistema que utiliza esta idea es Google Translate, no solo para detección de idioma sino para traducción. -36-

69 Figura 17. Logotipo de Google Translate. Además de enfoques probabilísticos, se han diseñado un gran número de algoritmos cuyo enfoque es más estático, por así decir, y que utilizan una serie de parámetros y cálculos que se efectúan sobre el texto a analizar, a continuación se propone un enfoque basado en este paradigma. Para averiguar la relevancia de una frase o entidad con respecto al contexto global son utilizados una serie de algoritmos de distinto carácter. Desde un punto de vista simplista podemos basarnos en una interpretación de cada unidad en base a una serie de parámetros, a tal efecto son conocidos algoritmos que calculan la relevancia de esa frase, veamos un ejemplo: Figura 18. Ejemplo de expresión de asignación de relevancia a conceptos. Esta clasificación se repetirá para las i unidades contenedoras de contexto del texto a analizar. N es el número total de unidades en el documento. es el número de unidades que tienen un significado semántico similar por encima de uno suministrado como umbral frente al detectado como predominante en el texto. el peso por la ubicación de la unidad en el texto global. y similitud semántica con respecto a título y tópico de entrada del -37-

70 usuario, número total de entidades y número de entidades nombradas en la unidad. Como este ejemplo hay muchos algoritmos matemáticos para la relevancia que pueden ser consultados en múltiples referencias disponibles en la web y que serían complementarios en este apartado del estado del arte. -38-

71 2.2 Técnicas de Procesamiento del Lenguaje Natural e Inteligencia Artificial. El Procesamiento del Lenguaje Natural es una ciencia compleja, en la que se deben contemplar diversas propiedades del lenguaje para actuar con exactitud. El primer problema a tratar con el lenguaje es el fenómeno de la polisemia, esta propiedad del lenguaje enuncia que cada significante, palabra encontrada, puede tener varios significados subyacentes al mismo. Esto hace pensar en que no es correcto o suficiente indexar por palabra, sino por concepto. Dependiendo del contexto, una acepción u otra del significante encontrado será la referenciada en ese texto. Se trata del problema de la semántica lingüística. En otras palabras, el significante no implica directamente al referente en la realidad. Solo podemos hacer referencia al concepto o referente desde el significado, que se refiere directamente a este. El significante simboliza a este significado y es una representación en lenguaje natural del referente al que representa. El significante se percibe por los sentidos, el significado es un concepto que surge en la mente al oír significante que se refiere al referente o realidad. Figura 19. Triángulo significante-significado-referente. -39-

72 Este gráfico ilustra las ideas que se describen previamente. De este triángulo pueden surgir las siguientes relaciones: La relación de monosemia surge cuando la relación entre significante y significado es de 1 a 1. Si solo existiese esta relación el tratamiento del lenguaje sería más sencillo, pero desgraciadamente esto no siempre es así. La polivalencia semántica o significación múltiple ocurre cuando la relación entre significante y significado es de 1 a N. Una palabra tiene múltiples acepciones. Para poder ejecutar técnicas de Procesamiento del Lenguaje Natural con precisión es importante diseñar un sistema adecuado para tratar la desambigüación de los significados. Esta relación en la cual un significante hace referencia a múltiples significados se divide en: A. Homonimia: Dos significantes con distinta fonética coinciden a lo largo del tiempo en un solo significante, que por tanto apunta a dos significados. Un ejemplo de esta relación es llama, que referencia a dos significados. Suele ser útil analizar la etimología. B. Polisemia: Un significante adquiere un nuevo significado a lo largo del tiempo. El ejemplo más relevante es el lenguaje de programación e isla Java. Sinonimia: Es la relación inversa a la analizada previamente. En este caso múltiples significantes referencian a un único significado. Puede ser pura o difusa según un grado borroso. Se puede dar el caso de que un conjunto de significantes tengan sinónimos pero a su vez sean polisémicos, luego solo uno de sus significados subyacentes es el que -40-

73 realmente es sinónimo del otro significante. Toda esta problemática de desambigüación es crítica en el Procesamiento del Lenguaje Natural. Por esto hay que diseñar múltiples mecanismos que permitan desambigüar los casos de significación múltiple. Se hace a través del contexto, el resto de significantes. Se distingue entre dos tipos de significado, a saber, referencial o contextual. Se dice que un significado es referencial cuando se refiere a su relación convencional con la realidad. Por el contrario, es contextual cuando este viene por contexto modificando el referencial. Estos conceptos son claves para el diseño de herramientas de desambigüación. Intervienen también factores sociales y culturales. En este paradigma es útil mencionar a la lógica borrosa. La lógica borrosa sirve para representar y manipular la incertidumbre e imprecisión inherentes al lenguaje natural. Al ser la mayoría de las respuestas a preguntas borrosas, solo mediante el uso de lógica borrosa se puede responder a las preguntas. Nace el concepto de usar un lenguaje que contemple esta problemática, llamado por Lotfi Zadeh como Precisiated Natural Language. Mediante este lenguaje que contempla posibilidad de que sea certero o no, verdadero o no y probable, se puede clasificar algo por relevancia, para resumir, deducir o buscar. Intervienen alrededor de este concepto diversas técnicas y áreas del saber como por ejemplo el Soft Computing, las redes neuronales y el razonamiento probabilístico visto en el anterior apartado. Otras técnicas interesantes son las redes de conocimiento, algoritmos genéticos, teoría del caos, neurofuzzy systems, teoría de aprendizaje, etc... Es muy recomendable crear algoritmos y técnicas que hagan uso de distintos conocimientos que se contemplan en estas áreas. -41-

74 Es imposible dar cobertura en este estado del arte a una descripción detallada de todas y cada una de estas áreas, pero en este apartado se mencionarán algunas técnicas pertenecientes a alguno de estos campos para ilustrar como se pueden utilizar en el contexto del resumen automático de textos y en concreto, de la desambigüación de significado dado un significante y su contexto. -42-

75 2.2.1 Técnicas de procesamiento de lenguaje natural. En este apartado se comentan distintos mecanismos que se emplean en el Procesamiento del Lenguaje Natural para efectuar técnicas que puedan resultar de utilidad en el contexto del resumen automático de textos. En lo referente a la desambigüación previamente comentada, existen algoritmos como FIS-CRM, que es un modelo para representar los conceptos contenidos en cualquier clase de documentos, es una extensión del modelo vectorial. Usa un diccionario sinonímico borroso y varias ontologías. El diccionario almacena el grado de sinonimia entre cada pareja de sinónimos y las ontologías guardan el grado de generalidad entre una palabra y otras más generales que esta. El grado de generalidad se calcula usando el método propuesto por Widyantoro y Yen. Con FIS-CRM se construyen los vectores base de documentos teniendo en cuenta el número de ocurrencias de términos y el posterior reajuste de los pesos de los vectores con el peso de las ocurrencias de conceptos, trasladando el significante al significado, usando el diccionario de sinónimos y las ontologías temáticas. Reparte las ocurrencias de un concepto entre los distintos sinónimos y dan un peso a las palabras que representan un concepto más general que el que ellas mismas representan. En FIS-CRM los pesos de cada vector representan ocurrencias de conceptos en el texto. Se comparan documentos en base a los conceptos contenidos en los mismos. Se sustenta en la sinonimia y la generalidad almacenadas en un diccionario de sinónimos y diferentes ontologías temáticas de términos respectivamente. -43-

76 Se habla del grado de sinonimia y de generalidad entre dos términos. Para construir los vectores se dan dos pasos: En el primer paso se construye la representación vectorial estándar según el modelo VSM y luego se reajusta de tal forma que un término puede incluso adquirir un peso sin estar representado en el texto, sino porque el significado al que apunta si lo está. Se lleva a cabo un reajuste por generalidad y otro por sinonimia. Incorpora también un mecanismo de desambigüación por acepciones y contexto. La ventaja de FISCRM es que no clasifica significantes, sino significados gracias a las acepciones en los vectores que genera. De esta forma podemos diferenciar entre posibles resultados que serían relevantes o no en cuanto al contexto general, desambigüando. Puede ser muy útil para la desambigüación en sistema de pregunta-respuesta o para la comparación futura de los conceptos subyacentes a los significantes. Gracias a su estructura FIS-CRM desambigüa solo. Figura 20. Ajuste de los vectores según el modelo FIS-CRM. No solo es importante desambigüar una palabra con propósitos de compararla con otra, es importante también el conocer cuál es el rol con el que actúa la palabra en el texto que estamos analizando. Es decir, elaborar un análisis sintáctico de la -44-

77 frase que se esté analizando. Para la realización del análisis sintáctico es necesario hacer un previo análisis morfológico. Figura 21. Análisis morfológico y sintáctico de un texto. Gracias a estos análisis, se puede estructurar un texto escrito en lenguaje natural a una representación adecuada para un ordenador. Estos mecanismos son muy útiles para averiguar qué términos son conceptos y cuales son relaciones entre estos conceptos, para averiguar cuál es el rol con el que actúa una palabra por la estructura de la frase, sea este un sustantivo, verbo, adjetivo o adverbio. Estas técnicas son también muy utilizadas en la construcción de compiladores. Para ello se utilizan gramáticas a modo de parseadores que aceptan los tokens que genera como salida el análisis morfológico que se implemente. El origen de estas gramáticas es del célebre investigador Noam Chomsky. Figura 22. Noam Chomsky y su jerarquía de gramáticas. Existen un múltiple número de gramáticas distintas, incluso probabilísticas, para distinguir posibles análisis sintácticos con el objetivo de averiguar con certeza el -45-

78 rol que juega un término en una frase, ejemplos de estas son gramáticas multimodales, probabilísticas, de dependencia... Para un mayor análisis de estas gramáticas se recomienda la búsqueda de referencias sobre estas. A continuación se introduce un gráfico que ilustra el funcionamiento de estas gramáticas: Figura 23. Gramáticas de estructura y dependencia Con el objetivo de implementar todos estos sistemas, existen herramientas se ocupan de estas labores tanto a nivel morfológico como sintáctico, ejemplos de ello son las siguientes: Flex: Framework diseñado para el lenguaje C que analiza un texto en busca de tokens. Se encarga del análisis morfológico de un texto. Existe también una implementación en Java, JFlex, de más rápida implementación pero peor rendimiento. Existen paquetes dedicados al Procesamiento del Lenguaje que también se encargan de estas tareas en Python, lenguaje dedicado específicamente al Procesamiento del Lenguaje Natural. Bison: Se trata de otro Framework diseñado para el lenguaje C que se relaciona con Flex para elaborar un análisis sintáctico del texto. Recoge los tokens que reconoce Flex y verifica si pertenecen a una gramática que se halla establecido. Al -46-

79 igual que con Flex, existe una implementación en lenguaje Java que resulta de más rápida implementación pero que posee un peor rendimiento llamada Cup. También existen librerías muy especializadas y de buen rendimiento en Python. Figura 24. Diagrama de flujo con la relación entre Flex y Bison. Con toda la información sobre la palabra que se está analizando obtenida mediante estos procesos, se podrá invocar a una ontología para que nos devuelva el grado de semejanza entre los dos conceptos, en un futuro apartado de este estado del arte se analizan con todo detalle a las ontologías y su situación actual. A continuación se comentan técnicas avanzadas de clasificación y agrupamiento para obtener el contexto de un texto en función a atributos del mismo o a una base de datos previa, la acepción de un término, etc

80 -48-

81 2.2.2 Técnicas de Inteligencia Artificial. Dentro del ámbito del resumen automático una técnica muy efectiva el poder agrupar grandes volúmenes de datos en grupos, es decir, el clustering. El uso de técnicas pertenecientes al paradigma denominado como Big Data y en mayor grado de abstracción a la Inteligencia Artificial es muy útil sobre todo para la clasificación de textos según varios parámetros, como por ejemplo el contexto en función a las referencias y a las palabras contenidas en el texto. Dentro del clustering, existen dos grandes grupos de algoritmos, los de aprendizaje supervisado y no supervisado. Estos últimos son capaces de crear grandes grupos de datos en función a los datos originales, por contra, los primeros necesitan de clasificación previa para aprender mediante la experiencia. El ámbito de los algoritmos de aprendizaje no supervisado continua siendo actual, con numerosas aportaciones en los últimos años que se aplican a un gran número de sectores, el aprendizaje supervisado en cambio ha sido muy desarrollado a lo largo de la segunda mitad del siglo pasado y contiene resultados más precisos pero que necesitan de un mayor número de recursos para ser calculados y de los que no siempre se dispone. Por ello es útil tener una visión general de los distintos algoritmos de aprendizaje supervisado y no supervisado que existen y que pueden ser aplicados al contexto de generación de resumen automático. En el contexto del aprendizaje automático, una técnica simple de clasificación sería un árbol de decisión, por ejemplo el que crea el algoritmo CART. En función a un conjunto de entrenamiento, en el caso que se estudia por ejemplo sería una serie de textos, unas características que califican a cada instancia que pertenece a dicho conjunto de entrenamiento, como por ejemplo las siguientes: -49-

82 La frecuencia de ciertas keywords o de términos que tengan una relación fuerte con respecto a esos términos que pueden determinar el contexto. El lenguaje en el que está escrito el texto. La existencia de una gran frecuencia de ciertas estructuras gramaticales en el texto como por ejemplo son las relaciones causales. Existencia de un gran número de términos que no se encuentran en una ontología con la que se esté trabajando bien por el hecho de ser términos específicos de una jerga determinada o bien porque no estén bien escritos al tener fallos gramaticales. Existencia de diálogos o texto estructurado. De esta forma utilizando el algoritmo CART se genera un árbol de decisión con el que se podrá aplicar diferentes técnicas a cada texto en función al cluster en el cual se hayan clasificado los textos para ser resumidos. Esta capa puede ser un punto de partida para ejecutar distintos algoritmos de resumen que se hayan demostrado más eficaces ante las características de cada grupo. -50-

83 Figura 25. Ejemplo de un árbol de decisión. La clasificación no tiene porque ser exclusiva, en el sentido de que un elemento se asigna a un único grupo. Existen técnicas de agrupamiento borroso cuyos grupos poseen fronteras que están mal definidas o son borrosas. Utilizando este tipo de algoritmos podemos averiguar en el contexto de resumen automático hacer acciones como por ejemplo: Clasificar ciertos términos en base a distintas propiedades a que tipos de contextos pueden referirse y con qué intensidad. A que tipos de contextos pertenece un contexto y con qué intensidad. En función a distintos términos que estén contenidos en el texto analizado y a sus propiedades, se puede plantear mecanismos para discriminar la acepción a la que pertenecen los términos si estas acepciones están clasificadas por contexto. Con esto podemos efectuar acciones futuras destinadas al resumen. Qué relación o relaciones de tipo semántico existen entre términos. Con que términos está asociado un concepto y en qué grado, etc

84 Estos algoritmos se basan en conjuntos borrosos en los cuales se permite que un elemento pertenezca a un grupo con un cierto grado de pertenencia definido sobre el intervalo [0,1], o función de pertenencia. Se define la matriz de pertenencia como el conjunto de los distintos elementos que tenemos junto a su grado de pertenencia a cada clasificación. A grandes rasgos, estos algoritmos utilizan una matriz de pertenencia U de n elementos en k grupos. Se calculan los centros de los grupos borrosos y el valor óptimo de una función objetivo definida previamente, en función de esta función los valores de U cambian, centralizando los elementos. Este proceso se repite hasta que los valores de U no cambian significativamente. El algoritmo particional borroso más popular es el método conocido como fuzzy c-means, adaptación del algoritmo de clustering más sencillo k-means. En este el centro de un grupo borroso no es su media sino su valor más representativo. Para calcular la distancia de un elemento a cada centro para corregir su posición se utilizan métodos probabilísticos (asignación básica de probabilidad ) además de calcular diámetros, etc

85 Figura 26. Clusters calculados por algoritmo k-means. Se podría hacer un análisis más amplio del gran número y naturaleza de algoritmos de agrupamiento pero descrita la idea de aprendizaje supervisado y no supervisado y vistos estos ejemplos el resto de algoritmos ofrecen ideas complementarias cuyo detalle puede ser consultado en múltiples referencias y que no merece la pena detallar en este estado del arte. Existen distintas herramientas y lenguajes de programación que ayudan al agrupamiento y sirven como apoyo para los algoritmos descritos previamente, estas se detallan a continuación: SPSS: Popular sistema de estadística, cabe destacar las herramientas que oferta para realizar agrupamientos. Las herramientas que contiene son bastante completas desde el punto de vista, funciones de distancia que contemplan o de -53-

86 tipos de atributos que se consideran. Ejemplos de algoritmos para este fin que contiene son el centroide, k-medias, BIRCH, etc... Figura 27. Logo de SPSS. R: R es un lenguaje y un entorno de trabajo para el cálculo estadístico y los desarrollos gráficos, similar a Matlab. Dado su carácter de ser software libre multiplataforma contiene una gran cantidad de paquetes de las más variadas técnicas de Análisis de Datos. Con respecto al clustering, contiene métodos clásicos como el algoritmo k-medias, hasta otros más complejos como AGNES, DIANA, PAM, CLARA, etc... Figura 28. Pantalla de inicio de R. -54-

87 S-PLUS: Pertenece a la misma familia que R, siendo variantes de un mismo lenguaje inicial, S. Es por tanto un lenguaje que hay que programar para obtener los distintos algoritmos que se deseen implementar en esta plataforma. Figura 29. Pantalla de inicio de S-PLUS. WEKA: Es un paquete de software libre diseñado para la minería de datos desarrollado por la universidad de Waikato en Nueva Zelanda. Posee un lenguaje de comandos y una interfaz de usuario muy intuitiva. WEKA necesita una estructura previa para el análisis de datos pero también contiene interfaces de lectura de bases de datos. Posee un paquete dedicado al agrupamiento de datos con algoritmos como las k-medias y variantes de este algoritmo. Posee técnicas de análisis de densidad basadas en el cálculo de una mixtura de funciones de densidad de probabilidad. Incluye a su vez una técnica de validación basada en el análisis estadístico de las densidades de los agrupamientos. -55-

88 Figura 30. Logo de WEKA. -56-

89 2.3 Ontologías. Las ontologías comenzaron a adquirir relevancia en el área de la informática en 1991 con la iniciativa de la agencia norteamericana DARPA (Agencia de Investigación de Proyectos Avanzados de Defensa ). Esta campaña se proponía facilitar la construcción de nuevos sistemas, basados en conocimientos, de forma diferente a como se trataban en esa época, para que las bases de conocimiento en las que estos sistemas se fundamentaban no tuvieran que construirse desde cero, sino ensamblando componentes que se pudiesen reutilizar. Figura 31. Logotipo de DARPA. Desde este año hasta la actualidad se han producido avances importantes en este campo y hoy las ontologías son comunes en el desarrollo de un gran número de aplicaciones en distintos sectores como la gestión del conocimiento, Procesamiento del Lenguaje Natural, comercio electrónico, integración de información inteligente, recuperación de información, diseño e integración de bases de datos, bioinformática, educación, etc... Por este motivo es de obligado cumplimiento describir en este estado del arte una definición formal del concepto de ontología y su funcionamiento, las distintas técnicas que se definen en la actualidad con el uso de las ontologías y las principales herramientas que se están utilizando en la actualidad en los diversos sectores comentados. -57-

90 Una ontología es una especificación formal de una conceptualización compartida (Gruber, 1993 ). Desde el punto de vista etimológico Ontos-Logos (ser - tratado o estudio ) ciencia del estudio del ser y sus propiedades esenciales. Existen diversos mecanismos para formalizar las ontologías pero todos ellos tienen componentes en común: Clases que representan conceptos, relaciones que representan un tipo de asociación entre los conceptos del dominio, axiomas que sirven para modelizar afirmaciones que son siempre ciertas e instancias que se utilizan para representar elementos o individuos en una ontología. Figura 32. Ejemplo de una ontología Una ontología sirve entonces como una representación formal de conocimientos, útil para transformar por ejemplo los modelos conceptuales que pueda tener un ingeniero del software a una representación formal en un lenguaje de ontologías. Para ello se proponen metodologías para el desarrollo de ontologías como METHONTOLOGY, propuesta por el Grupo de Ingeniería Ontológica de la Universidad Politécnica de Madrid. METHONTOLOGY agrupa las tres categorías principales de actividades necesarias para construir una ontología, que son las siguientes: Actividades de Gestión: Planificación, control y garantía de calidad. -58-

91 Orientadas al Desarrollo: Estudio del entorno, estudio de viabilidad, especificación o razón por la cual se construye la ontología, usos y usuarios finales, conceptualización e implementación. Actividades de Apoyo: Adquisición futura de conocimientos, evaluación, integración, mezcla, alineamiento, documentación y control de la configuración. Figura 33. Metodología de construcción de Ontologías METHONTOLOGY Visto el concepto de ontología y una metodología diseñada para su construcción el siguiente apartado a analizar es consultar las herramientas existentes para la construcción de ontologías y las ontologías más utilizadas en la actualidad. Para construir una ontología existen diversos mecanismos como por ejemplo el WebODE, sucesor directo de ODE, plataforma de ingeniería ontológica desarrollada por el Grupo de Ingeniería Ontológica de la Universidad Politécnica de Madrid. Mediante tablas y grafos crea una ontología que permite a los usuarios personalizar el modelo de conocimientos utilizado para conceptualizar las ontologías según las necesidades que tengan de representación de conocimientos. Otras herramientas pueden ser Protégé-2000, OntoEdit, KAON, etc

92 Figura 34. WebODE. Existen lenguajes formales para la implementación de ontologías que pueden resultar una alternativa válida a las herramientas descritas previamente. En este documento se citan los más importantes: RDF: Desarrollado por el W3C como un lenguaje basado en la red semántica para elaborar una descripción de los recursos web. Una extensión al mismo es RDF Schema y RDF(S). Con respecto a este estándar se han creado motores de inferencia y lenguajes de consulta. Representa conceptos, taxonomías de conceptos y relaciones binarias. -60-

93 Figura 35. Logotipo de RDF OWL: Ontology Web Language. Recomendado por el W3C en febrero del Construido como una extensión de RDF permitiendo representar expresiones complejas y describir conceptos y relaciones. Se basa en D+, lenguaje de lógica descriptiva que cuenta con varios motores de inferencia que pueden ser utilizados para ver restricciones de conceptos, propiedades e instancias. Figura 36. Logotipo de W3C WSML: Web Service Modelling Language, cuyo objetivo es que sea utilizado no solamente en la representación de ontologías sino también en la de los Servicios Web Semánticos. Figura 37. Logotipo de WSML Otros lenguajes son Ontolingua, OCML, Flogic, etc

94 Las ontologías representan una fuente de conocimiento fundamental para cualquier herramienta de Procesamiento del Lenguaje Natural. En un sistema como el que detalla este documento, es imprescindible la consulta a una ontología para obtener su conocimiento. Debido a esto, se citan a continuación las ontologías más amplias en la web y los mecanismos de consulta a estas ontologías: Wordnet: WordNet es una base de datos léxica de la lengua inglesa. Contiene palabras en inglés en conjuntos de sinónimos denominados synsets, proporcionando definiciones cortas y generalistas, y almacenando las relaciones semánticas entre los conjuntos de sinónimos. Su objetivo es doble: producir una combinación de diccionario y tesauro cuyo uso sea más intuitivo, y soportar el análisis automático de textos y a aplicaciones de Inteligencia Artificial. La base de datos y las herramientas del software están libres bajo una licencia BSD y se pueden descargar y usar libremente. De forma adicional, la base de datos puede consultarse online. Figura 38. Instancia de Wordnet en Árabe. -62-

95 Figura 39. Logotipo original de Wordnet UMLS: Unified Medical Language System. De estructura y algoritmos similares a Wordnet pero especializada en el sector de la medicina. Las aplicaciones que analicen textos relativos a este sector deben acudir a esta ontología para encontrar una serie de conceptos de carácter más específico que pueden no estar contenidos en Wordnet. Figura 40. UMLS ConceptNET: ConceptNet es una red semántica que contiene un gran contenido de todo lo que un ordenador debe saber con respecto del mundo, en especial con respecto a entender textos escritos por seres humanos. Basado en conceptos y relaciones, contiene toda la información necesaria para construir un Q&A system, buscar de forma eficiente información, entender los principales contenidos de un texto, etc... Las relaciones por las cuales une conceptos son de diverso tipo, ejemplos de estas relaciones se muestran a continuación: -63-

96 Figura 41. Información disponible en ConceptNET. Dispone de una interfaz para el desarrollo de aplicaciones actualmente en su quinta versión desde la que mediante servicios REST se puede consultar la información contenida en nodos y relaciones, hacer consultas complejas en función a propiedades predefinidas y extraer diferentes medidas de la distancia semántica entre nodos. Su estructura es muy compleja, consistiendo en un hipergrafo, con cada nodo teniendo diversas relaciones que en todos los casos contienen como de fiable es la información que contienen. Tal es la información que se contiene en cada nodo que no guardan identificadores de los nodos. Permite descargar una lista de enlaces interesante para cada nodo en la Web Semántica, o información adicional de DBPedia y Wordnet vía RDF u OWL. En palabras de los autores, es la herramienta ideal si se quiere construir cualquier sistema que imite a Watson. -64-

97 Figura 42. Logotipo de ConceptNET Con todo este material disponible en la web y numerosas interfaces para el desarrollo de aplicaciones que utilizan estas ontologías se puede acceder al carácter semántico de cada término que se quiera analizar, para obtener no solo su contenido semántico sino posibles relaciones semánticas como la sinonimia entre dos términos que se quieran consultar en la ontología. A tal efecto existen diversos métodos que han trabajado estas relaciones denominados Deep Natural Language basados en análisis lingüísticos con ontologías existentes. Basados en consultas a la ontología se estiman medidas de semejanza entre términos que pueden utilizarse para calcular la redundancia. -65-

98 -66-

99 2.4 Algoritmos de gestión del conocimiento en grafos. Al estructurar la información contenida en un texto en un sistema de análisis automático, en el proceso de estructuración con técnicas de Procesamiento del Lenguaje Natural es común que muchas veces se termine en un grafo que muestra los conceptos más relevantes de ese texto junto las relaciones que los unen. Un problema posterior es el tratamiento de dicho grafo para averiguar en función a su estructura cuales son las entidades y relaciones más relevantes. A simple vista se puede deducir que si tenemos un grafo en el cual se representan los distintos conceptos que aparecen en un texto puede ser más relevante un concepto cuyo grado de entrada y salida es significativamente superior a los de otro concepto que solo es referenciado por un nodo padre. Tomando esta hipótesis de trabajo, se hace imprescindible un estudio de los distintos algoritmos de gestión del conocimiento en grafos que miden este concepto desde distintas perspectivas y cuya ejecución puede aportar información crítica para discriminar la relevancia de un concepto en función a la estructura del grafo que lo contiene. Estos son los llamados algoritmos de colocación o algoritmos de evaluación de conceptos en un grafo, a continuación se pueden ver los más representativos: PageRank: Inventado por Larry Page y Sergey Brin con el propósito de evaluar que página web tiene más relevancia en función a sus enlaces de entrada y salida. La puntuación PageRank de un nodo A, se denota como PR(A). El valor PageRank o PR(A) se puede calcular utilizando un algoritmo iterativo. La idea sobre la que se basa PageRank es bastante intuitiva. Asume que si un nodo -67-

100 recibe bastantes relaciones de entrada o salida provenientes de otros nodos, entonces se supone que ese nodo es relevante en el grafo del texto analizado. Figura 43. Puntuación PageRank utilizada por Google. HITS: HITS se basa en que distingue hubs y autoridades. Cada nodo tiene asignado un valor hub y un valor autoridad. El valor hub del nodo H está en función de los valores de autoridad de los nodos con los que H tiene relación, el valor autoridad del nodo A está en función de los valores hub de los nodos que enlazan a A. Por tanto, según HITS cada nodo tiene un par de puntuaciones: una puntuación hub (h) y una puntuación autoridad (a), basadas en los siguientes principios: La calidad de un hub se determina mediante la calidad de las autoridades que le enlazan. La calidad de una autoridad se determina mediante la calidad de los hubs a los que enlaza. Por tanto, el algoritmo HITS establece que un nodo tiene un alto peso de autoridad si recibe relaciones de muchos nodos con un alto peso de hub. Un nodo tiene un alto peso hub si tiene relaciones con muchos nodos autoritativos. -68-

101 Figura 44. Nodos Hub y Autoridad. SALSA: SALSA también asigna dos puntuaciones a cada nodo: la puntuación hub y autoridad. Estas puntuaciones se basan en dos caminos aleatorios realizados en G, el camino autoridad y el camino hub. Intuitivamente, el camino autoridad sugiere que los nodos autoritarios deberían ser visibles (enlazados) desde muchos nodos. Así, un camino aleatorio de este subgrafo visita aquellos nodos con alta probabilidad. Formalmente, el estado del camino autoridad son los nodos de G con al menos un enlace de entrada. Sea v un nodo, y nodos que enlazan con v. Una transición desde v implica elegir un índice aleatorio i uniformemente sobre {1, 2,..., k}, y seleccionar un nuevo estado desde los enlaces salientes de (de nuevo, aleatoriamente y uniformemente). Así, la transición implica atravesar relaciones, la primera de ellas se atraviesa al revés (desde el destino al origen) y la segunda se atraviesa hacia delante. Si π denota la distribución estacionaria del camino aleatorio descrito anteriormente, cuando la distribución inicial es uniforme sobre todos los estados. La puntuación de cada nodo (=estado) v es πv (los nodos que no tienen enlaces de entrada alcanzarán una puntuación 0). -69-

102 De forma adicional es también interesante comprobar si dos conceptos poseen los mismos antecedentes y consecuentes en un grafo, lo que puede estimar una medida de su semejanza, a propósito de este hecho se encuentra el algoritmo SimRank, el cual estima una medida de semejanza en función a la estructura de los nodos del grafo con respecto a sus antecedentes y consecuentes. Se pueden encontrar detalles del funcionamiento de este algoritmo en múltiples referencias en la web. Además de estimar medidas de relevancia en grafos también se puede obtener un conocimiento mejor de cada nodo si se visitan en un orden adecuado. Por ello es relevante comentar que dentro de los posibles recorridos que existen para examinar un grafo, es interesante comentar el llamado como orden topológico, cuya principal idea es que dado un grafo conexo y acíclico se recorra cada nodo una vez se hayan recorrido todos los nodos con los que está conectado mediante su grado de entrada. El pseudocódigo de este algoritmo se detalla a continuación: -70-

103 Algoritmo 1. Orden topológico. Un recorrido en orden topológico sobre un grafo permite obtener información de un nodo tomando en cuenta la información contenida en todos sus antecedentes, lo que puede resultar de utilidad para ciertos propósitos. A continuación, y con el uso de todas las técnicas descritas previamente, se describen las tácticas de generación de lenguaje natural y los sistemas que hacen uso de estas técnicas utilizando a su vez todas las anteriormente descritas en este estado del arte. -71-

104 -72-

105 2.5 Técnicas de generación de lenguaje natural. El paradigma conocido como generación de lenguaje natural ( Natural Language Generation, NLG ) es la tarea perteneciente al Procesamiento del Lenguaje Natural encargada de generar lenguaje natural desde una representación estructurada como puede ser una base de conocimiento, estructuras de datos convencionales, lógica de primer orden, etc... Desde una perspectiva más simple se puede definir a la generación de lenguaje natural como un sistema traductor que convierte una representación del lenguaje soportada por un ordenador a una representación del lenguaje propia de un ser humano. Con respecto a lo visto en los previos apartados supone el concepto opuesto al entendimiento del lenguaje natural ( NLU ), en el entendimiento del lenguaje natural el sistema tiene que ser capaz de desambigüar el texto de entrada para producir un lenguaje que sea procesable por una máquina. Sin embargo, en la generación de lenguaje natural el sistema necesita tomar decisiones sobre que semántica añadir a una frase que debe ser sintácticamente correcta tomando como entrada la representación de los datos que contenga. -73-

106 Figura 45. Gráfico que simboliza el rol de los sistemas NLG y NLU. Estas técnicas son recogidas en este estado del arte dado el hecho de que uno de los procesos que se analizará de este sistema es un generador de lenguaje natural a partir de estructuras de datos convencionales. El concepto básico que se utiliza en la generación de lenguaje es el inverso al ya visto para el entendimiento del lenguaje, si antes se utilizaban las gramáticas para parsear un texto obteniendo información sobre cada uno de los elementos y posteriormente desambigüando el significado subyacente, ahora se genera un texto a partir una gramática generativa. La mayoría de los sistemas que utilizan gramáticas generativas importan librerías existentes que ya automatizan todas las restricciones que existan en función al término que le inserte y mediante el uso sus gramáticas crean una sintaxis correcta. Por ello es adecuado que en esta parte del estado del arte se analicen las herramientas existentes. -74-

107 En el siguiente gráfico se muestra un timeline de las herramientas destinadas a la generación de lenguaje natural mediante diversas técnicas y algoritmos: Figura 46. Timeline de herramientas para la generación de lenguaje natural. Muchas de estas herramientas han quedado obsoletas o han sido sustituidas por otras técnicas más modernas que implementan con una mayor eficacia las numerosas restricciones ocasionadas por la creación de lenguaje natural. En el siguiente listado se mencionan las herramientas más utilizadas en la actualidad: -75-

108 Figura 47. Listado de herramientas de generación de lenguaje natural actuales. Cada una de las herramientas está escrita para lenguajes diferentes, ejemplos de ellos son C++, Java, Lisp o incluso Prolog. La lista ha sido confeccionada por la comunidad científica existente en este área y es pública permitiendo la adhesión de nuevas herramientas que se vayan desarrollando. En el contexto de generación de lenguaje natural y habiendo hecho ya un estudio del entendimiento del lenguaje natural y las ontologías y motores de inferencias es también interesante mencionar a los sistemas de pregunta-respuesta, también llamados popularmente en función a los servicios que prestan Chatterbots o Conversational Agents. Estos sistemas, al igual que los de resumen automático, utilizan las distintas técnicas vistas de NLU, NLG y bases de conocimiento para emular a una persona con la que se está hablando, es relevante citar a los Chatterbots dada su semejanza en muchos aspectos con los sistemas de resumen automático. -76-

109 Alan Turing propuso en 1950 el famoso test de Turing por el que enuncia que si un humano no sabe diferenciar si está hablando con una máquina u otro ser humano en un intervalo de cinco minutos entonces realmente se habrá alcanzado un nivel de inteligencia elevado en una máquina. Figura 48. Alan Turing y su test para distinguir entre máquina y ser humano. Desde entonces ningún sistema ha conseguido alcanzar este hito, pero muchos sistemas se han quedado cerca, e incluso lo han superado a juzgar por alguna gente, gracias en parte, a utilizar dentro de sus sistemas un sistema de resumen automático que les ayude a discriminar la información más importante dentro de un enunciado. Los sistemas más famosos en la actualidad son A.L.I.C.E, que utiliza un lenguaje exclusivo llamado AIML para su funcionamiento que ha sido utilizado para múltiples sistemas similares como el español CHARLIE. Kyle, que utiliza algoritmos evolutivos y aprendizaje en tiempo real para razonar sus respuestas. Jabberwacky, CleverBot, D.U.D.E, etc

110 Figura 49. Conversación real con el Chat Bot A.L.I.C.E. -78-

111 2.6 Características de resúmenes automáticos. Una vez visto todo el estado del arte en lo respectivo a las técnicas que utilizan los sistemas capaces de elaborar sistemas automáticos, es conveniente describir las distintas características que puede adoptar un sistema generador de resúmenes automáticos. Para su ejecución, estos sistemas utilizarán las técnicas que se han estudiado en este estado del arte. Se distinguen las siguientes características en lo relativo al resumen automático: Fuente: Un resumen puede ser mono-documento o multi-documento, como veremos más adelante se da la paradoja de que es mucho más difícil elaborar una herramienta para un documento que para varios. Puede o no discriminar unidades semánticas en función al formato del texto. Estructura: Puede limitarse a extraer la información de más vital relevancia del texto o crear nueva información relevante. Así distinguimos entre extracción y abstracción. Se habla de superficialidad y profundidad en función al análisis semántico que pueda ser elaborado del texto. Tamaño: Se distingue entre generadores de titulares y sistemas de resumen automático. Los primeros simplemente citan lo más importante, los segundos se centran en un proceso que reúne una mayor cohesión y enlazado de la información resultante. Nace el concepto de tasa de compresión que puede ser una entrada. Lenguaje: Podemos establecer un lenguaje de entrada y otro distinto de salida. Una herramienta efectiva a tal fin necesitaría la inserción de un traductor automático. Tópico: El sistema puede o bien detectar el principal tópico del texto o elaborar el resumen mediante un tópico que el usuario establezca como entrada para la aplicación. Puede centrarse en un solo tópico o en varios. -79-

112 Además de estas características, un resumen puede ser obtenido en base a lo establecido por una consulta del usuario, en este caso hablaríamos del paradigma conocido como Query Based Summarization, para la cual hay que elaborar técnicas específicas, el sistema contrario es conocido como Generic Summary. Existen sistemas de resumen particular a una necesidad específica, entre ellos se pueden encontrar por ejemplo los resúmenes basados en perfiles de usuario, que obtendrán de un texto tan solo la información relevante para cada tipo de usuario. De esta misma forma se obtienen los llamados resúmenes adaptados al género. En función a si se centran en su mayoría en una de las técnicas descritas en este estado del arte, se distinguen sistemas como por ejemplo: Sistemas de resumen basados en conocimiento adquirido de ontologías, caso particular de los sistemas basados en consultas, en los cuales para cada palabra encontrada calcula la distancia mediante algoritmos de semejanza contenidos en ontologías para seleccionar los contenidos más relevantes. Sistemas de clasificación de relevancia basados en extracción y valoración de las frases más relevantes usando algorítmica. Sistemas basados en redes neuronales que funcionan mediante atributos definidos con anterioridad como si la frase es la primera, la semejanza con el título o incluso de información proveniente de Wikipedia del término a utilizar. Tabla 1. Listado de campos para una red neuronal. -80-

113 Vistas las principales características de los resúmenes automáticos, se incluye un último apartado en este estado del arte que trata de describir los elementos fundamentales en la tarea de definir la metodología y análisis para la construcción de un sistema de resumen automático. -81-

114 -82-

115 2.7 Metodologías para Construir un Sistema de Resumen Automático De forma conceptual, un sistema de resumen automático es un caso particular de un sistema de extracción de la información, por lo que en una primera visión general es adecuado consultar como se diseña un sistema de extracción de la información. En este contexto, un enfoque aceptado es el diseño de un sistema de extracción de la información por Baeza-Yates (1999). En él se definen cuatro procesos a gran escala, una indexación, consulta, un ranking de relevancia y un aprendizaje posterior del usuario. Baeza-Yates (1999), define un sistema de este tipo como una cuádrupla [D, Q, F, R( )] donde: 1. D es un conjunto de vistas lógicas (o representaciones) de los documentos que forman la colección. 2. Q es un conjunto compuesto por vistas lógicas (o representaciones) de las necesidades de información de los usuarios. Estas vistas se denominan consultas (queries). 3. F es una forma de modelar la representación de los documentos, consultas y sus relaciones. 4. R (ranking) es una función de evaluación que asigna un número real al par formado por una consulta є Q y la representación de un documento є D. Este valor determinará el orden de aparición de los documentos de una consulta. -83-

116 Por tanto estos elementos deberán existir en un sistema que herede el comportamiento de este, como es el que nos ocupa. Algunos diseños que se han planteado para la construcción de sistemas de resumen automático más en el entorno que nos ocupa, la investigación, son necesarios de estudiar para establecer una metodología de trabajo en este área. El nombre de algunos sistemas conocidos son SUMMONS, Ranknet o NewsBlaster, se adjunta la arquitectura de SUMMONS, con módulos ya comentados en este estado del arte y que se implementarán con distintas tecnologías: Figura 50. Arquitectura del Sistema COMMONS. Se puede observar en primer lugar los elementos comunes para cualquier sistema de resumen automático como son un módulo para la consulta a ontologías, un análisis léxico y una generación de lenguaje natural. Una vez analizadas todas estas estructuras se propone la siguiente metodología para la construcción de un sistema de resumen automático. Para construir un sistema de resumen automático de carácter profundo, que no se limite a ser un generador de titulares, podemos distinguir entre 6 grandes etapas si hacemos un análisis contextual del sistema. Como alcance queremos extraer el -84-

117 resumen de un texto que se nos presente como entrada, los pasos serían los siguientes: En primer lugar habría que elaborar un mecanismo que o bien detecte el tópico/s principal/es que se encuentran en el texto o bien valide si el introducido por el usuario corresponde al existente en el texto. Para ayudarnos en la detección del tópico nos podemos apoyar en diccionarios y ontologías de libre uso en la Web o herramientas de análisis semántico previa tokenización del mismo. Una vez sepamos el contexto en el que el sistema se va a encontrar, ya podemos efectuar las operaciones que correspondan como una estructura o gramática particular. Acto seguido, y algunas veces recomendado en primer lugar pero situado en el segundo para aplicarlo específicamente a este contexto nos encontramos con la tarea de depurar el texto. En este contexto nos centramos en eliminar las stop words, efectuar stemming, eliminar las redundancias simples mediante algún algoritmo como el MMR, emplear ontologías para sustituir palabras relacionadas semánticamente, sinónimos, hipónimos, desambiguar las posibles polisemias, etc... Ya efectuadas las dos tareas previas al resumen nos podemos centrar en el grueso de la aplicación. En primer lugar se recomienda calcular la frontera entre entidades que vamos a denominar unidades separadas de contexto y embeberlas en alguna estructura de datos con las dependencias que existen entre ellas y otras unidades. Una vez clasificadas efectuamos un cálculo de la cohesión de estas unidades de contexto junto a otras del texto. Para efectuar todas estas tareas encontramos algoritmos especializados y estructuras de datos recomendadas para albergar esta información. Una vez tenemos todos los datos de cada unidad de contexto efectuamos un cálculo de la relevancia que tiene cada unidad de contexto en torno al texto global. Con esto obtenemos una puntuación relacionada con dicha unidad de contexto. Las entidades que tengan una mayor puntuación serán las seleccionadas para aparecer en el resumen conforme a un ratio de compresión. -85-

118 Habiendo obtenido dichos resultados, la herramienta deberá enlazar correctamente y en el orden que convenga estas unidades de contexto de tal forma que un humano lea el resumen y le parezca escrito por otra persona. Se debe cuidar la coherencia, cohesión y semántica del texto obtenido. Por último, este resumen deberá ser evaluado mediante alguna herramienta para calcular cómo de acertado es con respecto al texto global. Existen distintas métricas para evaluar un sistema de recuperación de información, como pueden ser el recall o material relevante recuperado con respecto al total relevante de la colección, la precisión o documentos relevantes recuperados que satisfacen la query entre el total de documentos o la f-measure, que es una combinación de ambas mediante una expresión matemática. Se analizará la evaluación a todo detalle en el apartado evaluación de este documento. Para terminar este apartado, se exponen ejemplos gráficos con herramientas que contienen algunas de estas etapas o algoritmos específicos que siguen esta metodología propuesta. Figura 51. Arquitecturas de sistemas de resumen automático. -86-

119 Algoritmo 2. Query Based Sentence Extraction Algorithm. -87-

120 -88-

121 2.8 Conclusiones. Se han analizado en este estado del arte todos los conceptos que pueden tener relación con el análisis automático de textos, desde una primera parte con los conceptos más teóricos como el análisis probabilístico de textos o las técnicas más utilizadas en el Procesamiento del Lenguaje Natural y la Inteligencia Artificial hasta los más prácticos como una definición de análisis y metodología recomendados para la creación de sistemas de resumen automático de textos, las herramientas más destacadas para la creación del lenguaje natural o un análisis intensivo de las ontologías existentes. Dada la naturaleza de este proyecto fin de carrera, basada en la investigación, se ha hecho este estado del arte tan extenso, con el ánimo de servir como punto de partida para proponer un sistema de resumen automático que utilice algunas de las técnicas comentadas en este estado del arte. Debido a las limitaciones del proyecto es imposible construir un sistema completo de resumen de textos según todos los pasos de la metodología comentada, por lo que este proyecto solo se centrará en lo más representativo para obtener un resultado a partir del trabajo previo efectuado por los directores. -89-

122 -90-

123 Capítulo 3. Propuesta de un Sistema de resumen basado en relaciones causales. Este proyecto fue pensado para tener un carácter de investigación, obteniendo información sobre las diferentes técnicas descritas en el apartado previo de estado del arte. Al avanzar suficientemente en esta investigación y con ánimo de trasladar a la práctica los conocimientos aprendidos durante la misma se originó la idea de proponer una implementación que contenga algunas de las técnicas y algoritmos descritos en el apartado anterior. Por ello en este apartado se elabora una propuesta en torno a la creación de una aplicación destinada a tal fin bautizada como SIDRA ( Sistema Inteligente De Resumen Automático ). Como se ha podido comprobar el alcance de este proyecto es desproporcionado para un proyecto fin de carrera. Se justificará este hecho en el siguiente apartado. Debido a ello se continuará con trabajo ya existente de los directores de este proyecto. En este apartado se propone una aproximación inicial a la funcionalidad de esta herramienta, elaborando en primer lugar una justificación del proyecto junto a una pequeña reflexión para comprobar su viabilidad. Acto seguido se plantea a grandes rasgos una descripción del problema que va a solventar la aplicación que se propone y como lo hará en un nivel muy abstracto. Para terminar el apartado, se terminará con dos apartados formales en cualquier metodología destinada al desarrollo de aplicaciones como son una identificación de necesidades y un análisis de los requisitos que debe cubrir el sistema. -91-

124 -92-

125 3.1 Justificación y viabilidad del proyecto. Para la justificación del proyecto es importante analizar tanto si la tarea es posible de ser completada como si la motivación personal es la adecuada para abordarla, por ello se citan en primer lugar las principales razones personales que propician este proyecto: Vocación personal en las áreas de Procesamiento del Lenguaje Natural e Inteligencia Artificial. Investigar en un área en auge por la Web semántica y sobre la que se puede profundizar más perfilando aspectos que no están todavía suficientemente investigados. Culminar el trabajo de los directores para tener un entregable en forma de resumen que de fin a años de investigación en proyectos anteriores a este para estructurar contenidos en forma de causales. Gran aspecto práctico del proyecto que gira en torno al desarrollo de una aplicación. Puede ser el punto de partida de su aplicación en webs para extraer información relevante de un conjunto de gran información subyacente. Se daría importancia a la calidad de la información frente a la cantidad de la misma, que es la principal debilidad del popular buscador Google. Servir como punto de partida para futuros proyectos personales que giran en torno a este área o que pueden utilizar esta herramienta para ser desarrollados. En segundo lugar, es importante justificar la necesidad actual de elaborar una herramienta de resumen automático. -93-

126 Como ya se ha estudiado en el estado del arte y en la introducción a este documento, debido a las necesidades existentes por diversos sectores de resumir la información por el exceso de la misma y el futuro crecimiento esperado en los siguientes años, es indispensable la creación de este tipo de herramientas. Esto puede ser de vital importancia en el contexto médico, académico y judicial, donde el resumen puede proporcionar al usuario la información más necesaria para obtener una primera impresión sobre el problema a resolver. Dada la naturaleza de las estructuras que se buscan, las relaciones causales, la información sirve además para poseer de forma sencilla el conocimiento subyacente al texto analizado, no es solo un resumen que no posee información relevante. De esta forma por ejemplo en el contexto médico, podemos obtener de un simple vistazo las causas primeras que desembocan en la enfermedad del paciente. Este conocimiento, también aplicado al sector judicial para observar las causas de una condena de forma sencilla o al sector de la educación para comprobar las causas que pueden desembocar en un fracaso escolar son de una importancia mayúscula para el usuario final de la herramienta. Todos estos argumentos sirven de peso para justificar la implementación de esta herramienta en este contexto de investigación junto a la proposición de un módulo que evalúe la calidad del resumen final. En cuanto a la viabilidad, como se ha visto en el estado del arte, todas las técnicas que se van a implementar en el contexto de resumen automático han sido estudiadas y desarrolladas con antelación, por lo que se puede deducir que la viabilidad del proyecto es válida. -94-

127 Es cierto que existen determinados requisitos técnicos que demandan técnicas que no se han desarrollado con anterioridad pero para ello se elaboraran distintos algoritmos y nuevas técnicas que cubrirán estas necesidades. Al ser problemas computables, de clase P, son viables para ser resueltos mediante cualquier lenguaje de programación actual, luego es viable proponer nuevos desarrollos pese a que no existan con anterioridad. Figura 52. Complejidad de problemas. Según la información expuesta, se justifica el proyecto y se aprueba su viabilidad para proceder a elaborar una implementación de un sistema de resumen automático. -95-

128 -96-

129 3.2 Descripción general del problema y la solución. En trabajos previos, se ha estructurado las relaciones causales pertenecientes a un texto en un grafo que se guardaba en base de datos en dos tablas, una de conceptos que son los nodos del grafo y otra de relaciones, las aristas del mismo. El alcance del proyecto no cubre por completo todas las etapas propuestas en la metodología de resumen automático en el estado del arte pues sería desorbitado para el tiempo y recursos disponibles que se tienen para el proyecto fin de carrera. Por este motivo se aprovecha el trabajo previo de los directores con el objetivo permanente de que la implementación que se haga complemente su obra. En el trabajo previo se parte de un texto y se clasifica el mismo por relaciones causales en forma de grafo, cubriendo una gran parte de los primeros tres apartados de la metodología ( detección de tópico, preprocesamiento del texto y estructuración del texto ) aunque en absoluto en su totalidad, pues el trabajo anterior tenía como objetivo la clasificación de un texto en las citadas unidades de contexto. Es importante destacar que esta aplicación de resumen de textos solo contendrá la información correspondiente a las relaciones causales más relevantes de un texto, no a la información más relevante de un texto si está viene expresada en unidades sintácticas que no son relaciones causales. Esto es así dado que se trabaja sobre el grafo que es la salida del trabajo anterior, en futuras versiones se recomienda extraer otras relaciones y conceptos en el texto para complementar esta herramienta de resumen automático. Pese a ello, y como se verá más adelante, se trabaja de forma paralela sobre el texto origen y sobre una salida intermedia entre el origen y el grafo que constituye el total de relaciones causales expresadas en lenguaje natural. -97-

130 Esto será de vital importancia en el apartado de evaluación, donde no se podrá calificar el resumen del texto según las métricas clásicas en muchos sentidos dado que no es de por si la información más relevante la que aparece sino las relaciones causales más relevantes. -98-

131 3.2.1 Descripción del problema. Al generarse el grafo a partir de la base de datos, se obtienen todas estas causales organizadas de tal forma que con una simple interpretación visual se puede obtener una idea de cómo unos conceptos causan la ocurrencia de otros. Figura 53. Grafo causal. Como se puede comprobar, en el grafo presentado existe una gran multitud de conceptos redundantes al no aportar significado adicional al que ya otorga otro concepto presente en el mismo. Un ejemplo de tal problemática es la presencia simultánea de smoking y tobacco use que en este contexto nos proporcionan la misma información. Toda esta información redundante hace que el tratamiento del grafo para trabajo posterior sea muy tedioso, al igual que su lectura. De forma adicional a la redundancia semántica, constituye otro problema el seleccionar cuales de estos términos son los más relevantes. El resumen que se -99-

132 presenta al usuario final debe contener solo la información más relevante y en ningún caso, suponiendo que no existiese redundancia semántica, podría contener todos los conceptos de este grafo. Una vez seleccionada toda la información no redundante y más relevante existe la problemática adicional de reconstruir el grafo de tal forma que se minimice la pérdida de semántica expresada por las relaciones causales. Como problemática adicional, se presenta el hecho de que aún desarrollando sistemas que solucionen los puntos anteriores se tendría información estructurada que no está expresada en lenguaje natural. Se tiene que elaborar un texto en lenguaje natural a partir de esta información estructurada

133 3.2.2 Descripción de la solución. Para solucionar este problema en este artículo se propone un mecanismo que, al utilizar varias herramientas, elimina las posibles redundancias existentes en el grafo y lo dejan preparado para la extracción de información relevante. El sistema pretende obtener como resultado un resumen que presente las siguientes características, cuya descripción se analizó en el estado del arte de este artículo: Fuente: En esta primera versión de la herramienta el análisis se enfoca en conseguir el resumen sobre un solo documento. Estructura: El sistema comentado obtendrá nueva información relevante, por lo que será en este sentido abstracto. Tamaño: El sistema es un claro sistema de resumen automático puesto que en ningún momento está presentando texto previamente existente en el texto analizado. Lenguaje: Se diseña la herramienta exclusivamente para lengua inglesa. Tópico: Dado el análisis en forma de causales y por lo comentado en [6], este sistema es óptimo para los contextos médico y jurídico. De todas formas dado que la clasificación de un texto en función a su tópico no es un tema en el que se centre este trabajo será un humano el que indique al sistema mediante su módulo de configuración el contexto del mismo junto a sus keywords asociadas. Se pretende dar cobertura a la solución para generar un resumen automático mediante las siguientes acciones, que se han demostrado viables y justificadas por el apartado de justificación y el estado del arte: -101-

134 Modificación previa: Se necesitará modificar el trabajo previo para que le dé información adicional al nuevo sistema de tal forma que se obtenga una mayor semántica además de las relaciones causales obtenidas previamente. Con ello se dará cobertura perfecta a los tres primeros apartados salvo al segundo, para el que se elaborará un proceso específico que lo complete. Alguna de esta información puede ser la localización de los términos extraídos en el texto global, entradas por parte del usuario como tasa de compresión y tópico por defecto, frecuencia del texto detectado, algoritmo tf, etc... Análisis y cálculo de la relevancia de los contenidos que se encuentran en el grafo. Este es el proceso clave del proyecto y el determinante para que todo lo anterior concluya satisfactoriamente. En este punto se va a desarrollar un nuevo algoritmo no existente para tal causa que se beneficie por un lado de la estructura de datos construida en forma de grafo y por otro del grueso de información semántica obtenida del texto. El algoritmo se desarrollará desde cero y tomará ideas del PageRank y de la clasificación de contenidos puesta en el estado del arte de este informe. Obtenida la relevancia del concepto será elegido o no para participar en el resumen final. Análisis semántico del grafo obtenido en proyectos anteriores. Este grafo es una representación virtual de una base con metadatos que representan las causales obtenidas del texto. El principal objetivo de este proceso es hacer un primer resumen a los contenidos extraídos por el sistema de clasificación anterior y cubrir el segundo paso de la metodología anteriormente comentada eliminando redundancias que puedan ser detectadas de forma fácil. Para ello se recurrirá a una ontología y se harán consultas para detectar posibles sinónimos, hipónimos, antónimos o hiperónimos y se eliminarán modificando las causales para quitar un primer nivel de información redundante en función de la relevancia calculada en el proceso anterior. Generación de lenguaje natural. En función al resultado de los procesos anteriores se diseñará e implementará un módulo que sea capaz de presentar los resultados de tal forma que un humano piense que los ha escrito otra persona

135 Evaluación. Se comentarán técnicas que sirvan para evaluar el proceso implementado hasta este punto. Se implementarán en mayor o menor de idea un conjunto de estas técnicas Se pretende que el proyecto cubra de forma teórica y práctica los primeros cuatro apartados y se complete en medida de lo posible con el quinto pues resultaría muy interesante para obtener una potente herramienta que albergue conocimientos de múltiples contextos y actúe en función a ellos. En todo caso se analizará teóricamente el problema a todo lujo de detalles y con múltiples alternativas

136 -104-

137 3.3 Identificación de las necesidades. Desde una perspectiva formal, en este apartado se agrupan las distintas necesidades que originan el desarrollo de la herramienta SIDRA y las que se necesitan para su implementación. En apartados anteriores se ha analizado los objetivos con respecto a la investigación, pero este apartado y el siguiente hacen referencia en exclusiva al desarrollo de la herramienta, no a la investigación realizada alrededor de la misma. Los objetivos del sistema a mecanizar de carácter empresarial a largo plazo son los siguientes: Obtener una cantidad de información razonable para ser supervisada ante grandes volúmenes de información de imposible revisión por un usuario final. Poder tener una herramienta capaz de proporcionar información sintetizada de forma automática a usuarios del sector sanitario. Poder tener una herramienta capaz de proporcionar información sintetizada de forma automática a usuarios del sector judicial. Obtener las relaciones causales en forma de lenguaje natural para revisión del principal conocimiento contenido en un texto. Servir como aportación práctica para incluirse en otros sistemas de Procesamiento del Lenguaje Natural que necesiten de los servicios de SIDRA para funcionar. El alcance del sistema que acota el problema a desarrollar, creando el universo de discurso que constituye la parte del mundo real que afecta al sistema consta de los siguientes elementos: Texto de entrada de cualquier contexto que debe ser previamente analizado. Grafo causal con la información estructurada

138 Texto de salida resumido. Futuros sistemas que utilicen esta herramienta para ampliar sus servicios. La tipología de usuarios finales o perfil de las personas que van a trabajar con el sistema es la siguiente: Usuario final de la herramienta que utiliza el sistema para satisfacer sus necesidades, principalmente diseñada para el sector sanitario y judicial. Investigador de diferentes técnicas de Inteligencia Artificial y Procesamiento del Lenguaje Natural que quiere obtener un resultado de la aplicación de distintos algoritmos en el sistema. Las principales restricciones con respecto al proyecto se enuncian a continuación: Económicas: Solo se dispone del presupuesto necesario para contar con los recursos técnicos para desarrollar la herramienta. Temporales: Se dispone de media jornada a lo largo de siete meses para el desarrollo de la herramienta una vez se han investigado las distintas técnicas que van a integrarse en el sistema. Legales: Solo se utilizará software libre en la implementación de la herramienta y algoritmos que no estén patentados. Las necesidades de personal demandadas por este proyecto se definen en este espacio. El organigrama de roles involucrados en este proyecto, en el cual una misma persona puede adquirir varios de estos roles a lo largo del transcurso del proyecto, es el siguiente: -106-

139 Figura 54. Organigrama del Proyecto. El personal que interpreta estos roles es el siguiente: Israel Alonso: Coordinador de Proyecto. Cristina Puente: Director de Proyecto, Investigadora. José Ángel Olivas: Codirector de Proyecto, Investigador. Eduardo Garrido: Investigador, Analista Programador, Q&A Tester, Documentalista Técnico

140 -108-

141 3.4 Análisis de los requisitos. Partiendo del objetivo empresarial comentado en la identificación de necesidades, se definen las funciones principales a mecanizar en este proyecto. A continuación se propone una lista de requisitos definidos por el personal definido en el apartado anterior que participan en el proyecto: Id Requisito Definido por 1 El proyecto debe poseer contenido de una o varias áreas de las materias del segundo ciclo de Ingeniería Informática. Israel Alonso. Coordinador de Proyecto. 2 El proyecto debe proponer algún contenido novedoso para la comunidad científica en alguna de las materias del segundo ciclo de Ingeniería Informática. Israel Alonso. Coordinador de Proyecto. 3 El proyecto debe incluir un prototipo ejecutable si se trata de un proyecto de investigación o de conocimiento teórico. 4 El proyecto debe contener el análisis y de forma ideal un módulo de evaluación que pueda calificar su funcionamiento. Israel Alonso. Coordinador de Proyecto. Israel Alonso. Coordinador de Proyecto. 5 En su implementación, el proyecto debe contener una interfaz gráfica que facilite su utilización por el usuario final. 6 El contenido de salida del proyecto debe ser un resumen de la información de entrada tratando la relevancia de los términos analizados y su redundancia entre sí. Israel Alonso. Coordinador de Proyecto. Cristina Puente y José Ángel Olivas. Director y Codirector de Proyecto. 7 El proyecto tiene que trabajar con el grafo causal construido por el trabajo previo de los directores. Cristina Puente. Director de Proyecto

142 Id Requisito Definido por 8 El proyecto debe contener un detallado estado del arte en el área del resumen automático de textos. 9 El proyecto debe aportar una aplicación práctica a los mecanismos para la extracción de grados borrosos a partir de las relaciones semánticas de Wordnet. 10 El proyecto debe contener un diccionario específico para el sector sanitario. 11 La implementación del proyecto debe evaluar los distintos algoritmos presentes en Wordnet::Similarities. 12 Se deben poder crear frases en lenguaje natural a partir de los contenidos estructurados en la base de datos que contiene el proyecto. Cristina Puente. Director de Proyecto. José Ángel Olivas. Codirector de Proyecto. Cristina Puente. Director de Proyecto. Cristina Puente. Director de Proyecto. Cristina Puente. Director de Proyecto. 13 El proyecto debe servir de base para la elaboración de publicaciones en distintos congresos que tratan a estas áreas. 14 La implementación debe poder ser fácilmente integrada en otros sistemas que necesiten de su funcionamiento. 15 El sistema debe trabajar con técnicas que hagan uso de lógica borrosa. José Ángel Olivas. Codirector de Proyecto. Cristina Puente. Director de Proyecto. José Ángel Olivas. Codirector de Proyecto. 16 El proyecto debe servir para ganar conocimiento teórico y práctico que pueda ser útil en el desarrollo profesional del alumno. Eduardo Garrido. Tabla 2. Requisitos del proyecto. En la conclusión de este documento se analizará si se han satisfecho los distintos recursos que se han planteado en este apartado

143 Capítulo 4. Análisis y diseño del Sistema. Tras una primera parte del documento en la que se ha escrito una introducción al proyecto, un estado del arte en lo respectivo a todas las técnicas que se van a implementar y sobre las que se ha investigado y una propuesta para la implementación de un sistema de resumen automático que sirve como marco de partida proporcionando una identificación de necesidades y un análisis de requisitos finalmente se entra en materia en este apartado que cubrirá las fases de análisis y diseño del sistema. Se sigue de esta forma en la elaboración de este documento una metodología clásica, de tal forma que el lector pueda obtener información de cada una de las distintas etapas en el desarrollo de una herramienta software por si fuera de su interés replicarla. Figura 55. Etapas analizadas en este apartado

144 Recordar también que en realidad se sigue para este proyecto la metodología presentada en la introducción que combina investigación con desarrollo ágil que se asemeja más a las peculiaridades del proyecto. Se comenzará con un análisis a alto nivel, contextual, que tiene como objetivo proporcionar una perspectiva abstracta del funcionamiento de la herramienta pero que cubra todo el alcance. Tras ello, se analizará en detalle cada uno de los procesos que componen el análisis contextual, proponiendo para cada uno de ellos un diseño para su final implementación. Si alguno de ellos no queda claro por ser a su vez demasiado complejo se analizará este proceso junto a la propuesta de un diseño y así recursivamente con el objetivo de que la etapa de implementación teniendo como entrada los documentos de este apartado no requiera de ningún tipo de análisis posterior

145 4.1 Análisis contextual. Dada la gran complejidad del sistema y los múltiples procesos que en este se ejecutan se hace necesaria una metodología top-down para estudiar la herramienta en su totalidad. Esta se basa en analizar en primer lugar los procesos desde un punto de vista más abstracto o generalista y luego irlos analizando por separado. De este modo se ofrece al lector una visión que transcurre desde lo genérico a lo particular. En este primer apartado, análisis contextual, se ofrece la visión más genérica del sistema mediante distintos diagramas de flujo de datos y con una descripción breve de cada uno de los procesos que intervienen en el sistema, sin entrar en ningún momento a una descripción más amplia, que dará lugar en apartados posteriores de este informe. El primer nivel de abstracción se debe elaborar sobre las entradas y salidas de la herramienta y las entidades externas, este diagrama es fácil: -113-

146 Figura 56. Análisis Contextual de la Herramienta Se consideran como entidades externas al sistema el usuario y la base de datos donde se realizan las persistencias finales y de donde se extrae información del trabajo previo de los directores puesto que es una interfaz entre procesos externos al alcance de este sistema. Se considera también como entidad externa la ontología con la que se obtiene la información por la funcionalidad que ofrece como diccionario de conocimientos, técnicamente no es así puesto que la ontología, como se verá más adelante, está embebida en el sistema, pero facilita la compresión del sistema representarla como entidad externa

147 Se omiten algunos detalles técnicos que implicarían una mayor información contenida en el diagrama para facilitar una mejor comprensión del mismo por el lector. A continuación se facilita una descripción de la información representada en el diagrama. Por un lado la herramienta recibe como entrada el texto a analizar, el grafo con las relaciones causales sobre el que han trabajado los directores y de forma posible documentos intermedios sobre las relaciones causales. En futuros diagramas toda esta información se engloba como las relaciones causales extraídas de la base de datos con el objetivo de simplificar la representación. Recibe a su vez la tasa de compresión deseada y las keywords que pertenecen al contexto del texto a analizar. Este contexto se debe saber previamente. Al obtener el resumen el usuario podrá establecer criterios de evaluación subjetiva sobre el mismo que tendrá que introducir a la herramienta. Estos no son los únicos criterios de evaluación. Por último recibe un fichero de configuración con pesos para cada uno de los algoritmos que se ejecutarán en la herramienta y con los módulos que se van a ejecutar. Como salida se obtiene el resumen en lenguaje natural acompañado de una serie de logs que se analizarán en futuros apartados y la evaluación del resumen. Toda esta información es persistida en base de datos y enseñada al usuario. Tras analizar las entradas y salidas de la herramienta se puede proponer un análisis en un siguiente nivel de abstracción que represente los procesos básicos -115-

148 de los que se compone la herramienta a lo que seguirá el diseño de cada uno de estos procesos en detalle

149 4.1.1 Flujo de datos entre procesos. La información de entrada al proceso de compresión serán los conceptos y sus relaciones contenidas en la base de datos que construyen el grafo, la tasa de compresión deseada, las palabras clave que el usuario considera importantes en el texto desde el cual se ha obtenido el grafo, basadas en el contexto elegido para el mismo. Como ya se ha comentado existirá un fichero de configuración que modificará según el valor de los distintos parámetros el comportamiento de los distintos análisis que se ejecutan en el sistema. Una primera versión de abstracción del sistema sería la mostrada en el siguiente gráfico: Figura 57. Diagrama de flujo de datos

150 En primer lugar se recopila toda la información de entrada al sistema en el proceso de análisis de relevancia y redundancia semántica, en este, mediante consultas a una ontología externa se puede obtener la semántica de cada concepto del grafo. Este análisis se ocupará de clasificar las causales más relevantes del texto, por lo que el siguiente proceso de reconstrucción de la base de datos debe modificar la información de tal forma que se pierda el menor contenido de relaciones y que lo que quede mantenga la coherencia y cohesión de la información que se tenía previamente. Una vez ha terminado, guarda la información en la base de datos y ejecuta un último proceso de generación del lenguaje natural, que a partir de la información final en la base de datos elabora distintos análisis y finalmente genera como salida el resumen deseado. Para la compresión de la estructura de datos existen dos principales problemas a ser tratados, que se detallan a continuación junto a un gráfico que explica el flujo de datos, que supone una extensión del proceso de relevancia y redundancia al que se le acompaña el algoritmo de reconstrucción de base de datos para expresar una idea completa del proceso de resumen puro, sin la generación de lenguaje: -118-

151 Figura 58. Extensión del proceso de análisis de relevancia y redundancia. Se distingue ya entre análisis de relevancia y redundancia estructural y análisis de redundancia semántica, que se ejecuta después del primer análisis. También se detalla la posibilidad de que el análisis de relevancia sea ejecutado más de una vez, por causas que se detallarán posteriormente. En el siguiente apartado de este documento se procede con una descripción más detallada de cada proceso analizado en este primer nivel de detalle

152 -120-

153 4.1.2 Definición de los procesos. Como introducción a lo que se analizará con detalle más tarde en el documento se propone una descripción previa de los distintos procesos vistos en los diagramas del apartado anterior. Análisis de relevancia: En primer lugar, se tiene que poder medir de una forma objetiva la relevancia de los términos en el grafo. En función al número de entidades con el que se relaciona cada concepto, los grados borrosos de estas relaciones, el grado de entrada y salida y otros múltiples parámetros que se analizarán con detalle se puede medir la relevancia de cada término en el grafo. Para ello se propone un algoritmo que tiene en cuenta todos estos factores. Por sus relaciones con respecto a otros nodos se puede detectar si una o más entidades en el grafo se relacionan con respecto a las demás de forma similar a otra. Esto implica que las entidades relacionadas por este motivo cumplen el mismo rol en la problemática que refleja el grafo, siendo causadas por similares precedentes y concluyendo en consecuentes semejantes. A posteriori, si se detecta que las entidades con las que un término se relaciona son semejantes según lo planteado, se puede eliminar la menos relevante de ambas para concluir en un número menor de conceptos reflejados en el grafo. Mediante algoritmos como HITS, PageRank o SALSA se puede detectar el número de relaciones de entrada y salida de cada nodo que serán una primera medida de relevancia, mientras que el SimRank nos dará información acerca de la semejanza de estas relaciones entre nodos. El análisis de relevancia se ejecutará con posterioridad en el sistema si mediante otros mecanismos no se ha satisfecho todavía la tasa de compresión introducida por el usuario

154 Análisis de redundancia: Como ya se ha mencionado previamente, existe una clara redundancia entre los términos que están presentes en las causales que forman el grafo. Múltiples significantes que hacen referencia al mismo significado a través de relaciones como pueden ser sinonimia, antonimia, hiperonimia... Para detectar estas relaciones entre los diferentes términos se utilizarán ontologías desde el sistema a través de diferentes conexiones. En algunos casos nos quedaremos con un término por el rol con el que actúa en esta relación y en otros por tener más relevancia según el proceso anterior. Para establecer el grado borroso de la implicación resultante al eliminar la redundancia se analizarán e implementaran distintas medidas de semejanza entre términos. Algoritmo de reconstrucción de la base de datos: Una vez marcados a eliminar conceptos por redundancia semántica y estructural y calificada la relevancia de cada uno de ellos en el grafo propuesto, se reconstruye la base de datos del grafo según el algoritmo encargado de esta tarea. Generación de lenguaje natural: El sistema debe ser capaz de convertir la información estructurada del grafo en nueva información que al mismo tiempo esté contenida en un texto que parezca escrito por una persona y no un ordenador. La salida de este proceso será presentada al usuario y persistida en base de datos para futuros trabajos

155 4.2 Diseño lógico BBDD. A lo largo de toda la ejecución del sistema siempre se acude a la base de datos para extraer información que debe ser utilizada por los procesos pertenecientes al sistema. Incluso antes de ejecutarse la utilidad de resumen automático se hacen accesos para persistir el texto que se desea resumir o las relaciones causales extraídas del mismo. Del mismo modo una vez terminado el resumen es necesario poder persistir toda la información del mismo de forma precisa para que sea de utilidad para las evaluaciones y futuros trabajos que se basarán en aprendizaje supervisado. Por todo esto, es de vital importancia que el diseño de la base de datos sea preciso y plasme de forma fiable el universo sobre el que se opera. A tal efecto, se propone el siguiente diagrama RER de la base de datos: -123-

156 Figura 59. Diagrama RER de la base de datos A continuación se elabora un breve descripción de cada una de las tablas y las relaciones que aparecen en el gráfico, cada relación extranjera se referencia en el diseño de base de datos mediante la referencia al identificador de la otra tabla, por ello todas las tablas tienen como clave única un id de tipo numérico entero auto incremental: Text: En esta tabla se guarda el texto sobre el que se está trabajando. De este texto se podrán elaborar varios resúmenes, podrá pertenecer a varios contextos y contendrá una serie de conceptos y relaciones que constituyen las relaciones causales extraídas en el trabajo previo de los directores. Concept: Cada uno de los conceptos extraídos en el trabajo previo de los directores que forman parte de las distintas relaciones causales. La tabla alberga información adicional que ha podido o no ser capturada como la localización, la intensidad, etc... Cuenta a su vez con atributos para gestionar los análisis que se harán de estos conceptos y está contenido en el texto de donde se extrajo. Relation: Relaciones que enlazan conceptos extraídas en el trabajo previo. Cada relación vincula un concepto que actúa como causa de la relación causal y un concepto que toma el rol de efecto de dicha causa. El modificador y el grado son de vital importancia porque dan la información de cómo de intensa es esa relación causal, en lo que en este documento se denomina grado borroso. Al igual que el concepto, se guarda el identificador del texto de donde se extrajo. Summary: Tabla que alberga el resumen final generado por esta herramienta. Cada resumen generado se persiste en base de datos para futuros trabajos que utilicen aprendizaje supervisado. El parámetro de evaluación mostrado en realidad hace referencia a una lista de distintos parámetros de evaluación que se comentarán en el apartado de esta memoria destinado a tal actividad. Se guarda a su vez en esta tabla la tasa de compresión

157 Constant: La tabla constant alberga toda la información de la configuración del resumen. Cada uno de los parámetros de configuración con los que se ejecuta el sistema y que se detallarán en el siguiente apartado son persistidos en esta tabla. Según las normas clásicas de elaboración de diseños lógicos de base de datos, se podría fusionar la tabla Summary y Constant en una única tabla que contuviese toda la información relativa a la creación de un resumen. Es correcta esta afirmación pero se extrae a otra tabla por motivo de una mayor comprensión del diseño planteado y para aislar toda la información de configuraciones en una tabla independiente por si alguna vez se analizase la información aquí contenida con propósitos de análisis de datos. Context: Se guarda el nombre de los distintos contextos que el sistema alberga. Cada contexto puede pertenecer a n textos y un texto puede tener m contextos, donde n es un número mayor o igual a cero y m es un número estrictamente mayor que cero. Keyword: A su vez, cada contexto puede albergar un número m de palabras clave, por el cual se define. En esta tabla se guardan dichas palabras clave junto a un identificador del contexto que las alberga. Una vez descrito el análisis contextual, el primer análisis detallado de la herramienta y el diseño de la base de datos utilizado se tiene una idea global del funcionamiento del sistema sin entrar en ningún detalle pero si con la información de entrada y salida que utiliza. Para terminar de explicar la información de entrada y salida que utiliza es necesario explicar la configuración del sistema, que se analiza en el siguiente apartado

158 -126-

159 4.3. Diseño interfaz gráfica y configuración del sistema. En diversos módulos de la herramienta, como por ejemplo el cálculo de la relevancia de los nodos, todos los algoritmos que componen estos módulos son multiplicados por una constante que ajusta el peso que tienen sobre el cómputo final. Se hace necesario que se disponga de una funcionalidad para que la aplicación pueda asignar distintos pesos a cada uno de los algoritmos en función de los requisitos de cada contexto o de los que el usuario quiera dar. Al poder seleccionar todas estas constantes el usuario puede incluso modificar el comportamiento del sistema haciendo que se ejecuten solo aquellos módulos que a él le interesen. Por ejemplo, al usuario le puede interesar que no se ejecute ningún algoritmo de relevancia, o que no se genere nuevo vocabulario. Ante tales requisitos, se plantea el diseño contenido en el siguiente diagrama de flujo de datos: -127-

160 Figura 60. Diagrama de Flujo de Configuración para la herramienta. En esta figura se detalla paso por paso el flujo de datos dado en el sistema. El flujo de datos viene indicado por los números que contienen las flechas entre los procesos y la explicación es también añadida en el diagrama de modo que es autoexplicativo. Como se puede ver en la figura 1, la herramienta dispone de un archivo de configuración XML en el que se encuentran todas las propiedades que harán que la aplicación se comporte de un modo diferente en función a los valores que en este fichero se encuentren. Incluso como se puede ver se puede seleccionar la ontología objetivo que se quiere consultar. La interfaz gráfica debe disponer del número de formularios necesarios para facilitar al usuario todas las tareas de configuración. Estos formularios son el de gestión y preparación del resumen, uno diseñado para el módulo de pruebas -128-

161 exhaustivas que ejecutará diversas configuraciones sobre varios textos para someter después una evaluación de los mismos y un formulario de configuración desde donde se puede gestionar los valores del fichero XML. Una vista a alto nivel de los distintos campos que figuran en el fichero XML, sin mostrar todos en totalidad sino con el objetivo de mostrar una pequeña parte del mismo para proporcionar una idea de su estructura, se muestra a continuación: Figura 61. Gráfico con la estructura del fichero XML. Como se puede observar en el gráfico, se puede configurar tanto que módulos van a participar como que peso van a adoptar los algoritmos que en él se encuentren

162 Por ejemplo podemos seleccionar que queremos ejecutar el módulo de análisis de relevancia pero que solo queremos que este se componga del algoritmo tf, asignándole a este un valor de uno y al resto de algoritmos de relevancia un valor de cero. Cada uno de estos algoritmos junto a los procesos que los contienen serán analizados con detalle en los siguientes apartados dado que al haber analizado ya todas las interfaces de entrada y salida de la aplicación la funcionalidad interna se puede entender

163 4.4 Algoritmo de relevancia. El algoritmo de relevancia es el primer proceso que se ejecuta en el sistema de resumen automático planteado. Al tener la información del texto estructurada en relaciones causales que construyen un grafo, es lícito afrontar enfoques de algoritmos en grafos para discernir la importancia de estos elementos. También se presentarán enfoques tradicionales basados en el texto original. De este modo nos beneficiamos de las distintas entradas al sistema, dando cobertura global a muchas de las técnicas de Procesamiento del Lenguaje Natural comentadas en el estado del arte. Se trata de un enfoque generalista para tratar la relevancia puesto que en un primer momento dado el carácter subjetivo de relevancia no se puede determinar sin pruebas empíricas que métodos son más efectivos que otros para calcular la relevancia de un término. Por ello, y dado que este es un proyecto de investigación, se decide construir este proceso dando la mayor cobertura a la totalidad de métodos disponibles para calificar la relevancia de un término en un texto. Este enfoque se refuerza en el hecho de que es posible que dependiendo del contexto a analizar sean unos métodos más efectivos que otros, por ejemplo, se ha demostrado que la extracción de relaciones causales es más efectiva en el contexto médico y judicial que en otros contextos, de esta forma extrapolando se toma como hipótesis de trabajo que este hecho puede ser verdadero para cualquier otra técnica. Con la ejecución en primer lugar del algoritmo de relevancia se pretende obtener un ranking ordenado por este criterio de los distintos conceptos que se presentan en el grafo para que el algoritmo de análisis de redundancia semántica sea capaz -131-

164 de discernir cual de los elementos debe ser marcado para eliminar si se detecta una relación semántica entre ellos. Una vez ejecutada la reconstrucción de la base de datos si todavía no se ha satisfecho la tasa de compresión introducida por el usuario se volverá a ejecutar este algoritmo sobre el nuevo grafo para discernir cual de las entidades que quedan es la menos relevante. No es suficiente con eliminar las entidades que hayan dado menor valor en el algoritmo anterior puesto que tras el análisis de redundancia semántica y la reconstrucción posterior la topología del grafo es diferente por lo que muchas de las medidas que se detallarán a continuación finalizarán en un valor diferente. Dado este motivo es necesario una ejecución adicional de este algoritmo de relevancia, que concluirá con un ranking final de los términos en función a la relevancia. Se marcarán a eliminar tantos términos que tengan la menor relevancia como sean necesario hasta satisfacer la tasa de compresión introducida por el usuario sobre el grafo original. Se comentan los mecanismos con este fin obteniendo una cifra normalizada en cada uno de ellos

165 4.4.1 Estructura del algoritmo. El algoritmo consiste en el sumatorio de un vector de valores multiplicado por un vector de pesos asociados con el cual se obtiene el resultado final. Estos valores consisten en distintos algoritmos de Procesamiento del Lenguaje Natural que se ejecutan sobre el texto y grafo asociado a analizar. Cada uno de ellos es multiplicado por otra constante que contiene un valor en función de la importancia de este criterio con respecto al resto de criterios. Dependiendo del contexto, este vector C contendrá distintos valores para cada uno de sus elementos, debido a que en cada tipo de textos será primordial un índice u otro. Para hallar el valor óptimo de estas constantes, en la última sección de este artículo se comenta un posible enfoque. Para que la puntuación global de cada concepto este a su vez normalizada, se introduce un término normalizador en la expresión, C, que es igual al sumatorio de todas las constantes de configuración que multiplican a cada uno de los resultados de cada algoritmo de relevancia. Al ser cada una de estas puntuaciones como máximo 1, se garantiza que la máxima puntuación que puede obtener un algoritmo al ser multiplicado por su peso es. Si obtenemos un sumatorio de estamos obteniendo en cada caso, para cualquier valor de y el computo máximo que puede obtener cualquier término en el algoritmo Figura 62. Expresión peso-valor. Una vez aplicado este valor, que indica una medida de relevancia de todos los conceptos del grafo, estos conceptos se tratan de nuevo con dos nuevos algoritmos para hallar más características que puedan simbolizar que son menos relevantes que otros nodos. Esto nos otorga una medida final de relevancia de los distintos conceptos analizados

166 -134-

167 Descripción de módulos de relevancia. Una vez analizada la estructura general del algoritmo en la cual se presenta el método para calcular el valor final de relevancia de un concepto del grafo en el texto del que procede se analizan a continuación cada uno de los distintos algoritmos que se ejecutan sobre el texto o grafo asociado. En un primer lugar se presentan los algoritmos que operan teniendo como entrada el texto original y posteriormente se detallan los distintos métodos que operan sobre el grafo que contiene las relaciones causales. Por último se presentan los dos algoritmos que se ejecutan sobre los conceptos una vez se ha obtenido el valor de relevancia general sobre el resto de algoritmos. Métodos que operan sobre el texto original: A continuación se presenta una tabla con los distintos algoritmos que procesan textos elegidos para el sistema. Algoritmo Algoritmo tf Descripción Este algoritmo muestra la frecuencia del término en el texto. Donde marca la frecuencia del término t, en nuestro caso uno de los conceptos del grafo, en el documento d. El denominador contendrá la máxima de estas frecuencias por lo que obtenemos una medida en función al resto. Aparición en Medida clásica que puede determinar la relevancia de ese término el título en el texto. Número de Un reducido número de palabras en la frase en la cual se halla el palabras de la término a calificar indica una relevancia menor frente al suceso frase complementario

168 Algoritmo Penalización por aditivo. Descripción Penalización si está en una frase que contiene un término aditivo de información Término inicial. Keyword. Esta frase siempre contiene información más relevante al introducir al lector en la idea que el texto desea transmitir. Ser palabra clave del contexto al que pertenece o tener una semejanza elevada con el mismo. Para calcular la semejanza de la palabra clave con respecto al término comparado se pueden ejecutar algoritmos de semejanza entre términos. Tabla 3. Parámetros del algoritmo de relevancia. Algoritmos que tratan el grafo de relaciones causales: Grado de entrada y salida del nodo: Medida simple y complementaria de las vistas anteriormente. En nuestro ejemplo, el concepto Lung Cancer que tendría la siguiente representación en el grafo: Figura 63. Nodo del cáncer de pulmón. Tendría, como se puede apreciar a simple vista, un grado de entrada igual a 5 y un grado de salida igual a 4. Para que esta medida sea representativa, se procede con un enfoque similar que al algoritmo tf, obteniendo como factor de grado de entrada la división entre el grado de entrada del concepto a analizar entre el grado -136-

169 de entrada máximo, usando el mismo razonamiento para el grado de salida. Si, como de hecho sucede en el grafo que se está analizando, el grado de entrada máximo de todos los conceptos del grafo fuese 5, Lung Cancer obtendría como puntuación asociada al grado de entrada 1. Se obtiene como salida: Entidad Lung Cancer. Causas directas: 5. Puntuación causas: 1.0 Entidad Lung Cancer. Efectos directos: 4. Puntuación efectos: 1.0 Algoritmo PageRank: Este se basa en las conexiones de entrada y salida desde un nodo para asignar la relevancia. Cada nodo obtiene una cifra PR(A), que simboliza la probabilidad de visitarlo en el grafo en caminos aleatorios. Se asume que el concepto A es el efecto de las causas. Si d [0,1] tomando con regularidad el valor 0.85 y C(A) es el número de relaciones de salida del concepto A entonces el valor PageRank del nodo A se determina del siguiente modo: Figura 64. Expresión del PageRank. Esto nos proporciona un mecanismo para determinar la cohesión que proporciona cada término en el texto, no solo a nivel local como el grado de entrada y salida sino en todo el grafo. Se obtiene por tanto una medida vital para discernir la relevancia de cada término en el texto origen. En la implementación propuesta obtenemos este ejemplo: Entidad die lung cancer. PageRank: Algoritmo HITS : Similar al PageRank, ofrece otra medida que puede ser contabilizada. Cada nodo contiene dos puntuaciones: Puntuación hub HITSh y autoridad HITSa. La calidad de un hub se determine mediante la calidad de las autoridades que le enlazan. La calidad de una autoridad se determina mediante -137-

170 la calidad de los hubs a los que enlaza. El algoritmo HITS establece que una página tiene un alto peso de autoridad si recibe enlaces de muchas páginas con un alto peso de hub. Una página tiene un alto peso hub si enlaza con muchas páginas autoritativas. Figura 65. Expresión del HITS. A diferencia del PageRank, HITS concluye en dos puntuaciones distintas para causa y efectos que son contabilizadas. Por ejemplo, la entidad stopping smoking enlaza con autoridades pero no es enlazada por ningún concepto, así pues ha recibido los siguientes valores: Entidad stopping smoking. Hub Score: Entidad stopping smoking. Authority score: 0.0. Algoritmo SALSA: Este algoritmo combina ideas del algoritmo HITS y PageRank. Por un lado usa la misma definición de puntuaciones que HITS, A(u) autoridad y H(u) hub, y el concepto de vecindad de nodos para extraer las puntuaciones. Por otro lado adopta la idea clave del PageRank de efectuar caminos aleatorios independientes en el grafo vecino para deducir estas puntuaciones. Es por tanto un criterio apto a tener en cuenta en este problema pues sus resultados dan una medida de la relevancia de cada nodo en el grafo general. Algoritmos posteriores al cálculo de relevancia inicial. Algoritmo SimRank: Pese a que nos encontramos en el análisis de relevancia y no en el de redundancia, este último hace referencia a la redundancia semántica -138-

171 entre dos conceptos del grafo. Este algoritmo que se presenta calcula la redundancia estructural en un grafo entre dos nodos. El SimRank asume que dos objetos son similares si son referenciados por objetos similares. Ello implica que una de las entidades es redundante o no añade información significativa con respecto a su pareja. SimRank obtiene una puntuación máxima si las referencias son las mismas. La expresión que calcula el valor de salida es la siguiente: Figura 66. Expresión del SimRank. Si se detecta que uno de los nodos que se encuentran en el grafo comparte con otro nodo las mismas causas y convergen en los mismos efectos podemos determinar que existe una redundancia estructural entre ese par de nodos. El nodo que tenga un menor valor de relevancia será penalizado si se detecta que la semejanza estructural entre una pareja de nodos aumenta por encima de un determinado umbral que será función de la tasa de compresión introducida por el usuario. La medida en la cual será penalizado es directamente proporcional al grado de semejanza estructural detectado entre esa pareja si este supera el umbral calculado en función a la tasa de compresión introducida por el usuario. Cálculo de relevancia usando orden topológico: Se hace una medición de la relevancia de las causas previas al nodo visitado. Dado que el grafo es acíclico, se propone como posibilidad recorrer el grafo en orden topológico para visitar todos los antecedentes antes que cualquiera de sus consecuentes y se va tomando el resultado obtenido, si la media de estos es elevada quiere decir que el nodo que está siendo visitado es un efecto de causas muy importantes en el -139-

172 texto, por lo que se le añade relevancia, con esto estamos estableciendo una medida para la cohesión final. Tras ejecutar este algoritmo, se ha obtenido un primer ranking que contiene una medida objetiva de la relevancia de los términos del grafo según distintas métricas. Este ranking va a servir para discriminar que términos tendrán que ser sustituidos en el siguiente proceso

173 4.5. Algoritmo de detección de redundancia. La redundancia semántica es el principal motivo por el cual se ha acometido este proyecto, por lo que se ha hecho un especial énfasis en este proceso. Dada la alta complejidad de este algoritmo, es necesaria la introducción de un diagrama de flujo de datos que ilustre los distintos procesos de los que se compone este análisis: Figura 67. Detalle del algoritmo de redundancia semántica. En el grafo que se está tratando en este documento se puede observar como primer problema que existían términos claramente redundantes semánticamente entre sí al ser distintos significantes que referencian el mismo significado ( tobacco use y smoking ). Si se detecta una sinonimia como en este caso se -141-

174 pueden eliminar dichos significantes sin perder significado, concluyendo en una primera extracción de la información. En función de la tasa de compresión y de los valores finales de semejanza calculados entre todos los sinónimos, hiperónimos, etc.. se establecerá un umbral dinámico que restrinja que pares de entidades son clasificadas finalmente como redundantes para que se proceda con la eliminación de la menos relevante

175 4.5.1 Estructura del algoritmo. En los dos subapartados de esta parte del documento se analiza lo respectivo a la primera parte del diagrama de flujo de datos visto en el apartado anterior. Se deja los dos otros procesos para apartados independientes dada su alta complejidad. Figura 68. Parte del algoritmo estudiada en este apartado. En primer lugar se abordará el problema de lo que se ha denominado como matriz de comparación, que realmente es el algoritmo que estructura el grafo de tal forma que se recorra de la forma más eficientemente posible para intentar minimizar la complejidad del algoritmo y con ello el tiempo de procesamiento. Acto seguido habrá que elaborar un método para hallar el sentido correcto de cada término, lo que hará aumentar la precisión para la comparación entre los términos. A este proceso se le ha denominado como desambigüación de conceptos

176 Esta desambigüación es un tema que está siendo tratado en la actualidad y hay diversas formas de abordarlo. Para este problema se ha creado un enfoque específico que, como los demás, no deja de estar sujeto a tener un carácter subjetivo, que es precisamente la característica fundamental del entendimiento del lenguaje natural. Tras esto, se ejecutarán distintos algoritmos que nos proporcionan una medida de semejanza entre los términos. Se estudiará el tratamiento de cada nodo con los múltiples significantes que pueden aparecer en el mismo, hay que recordar que cada concepto no contiene un único significante y que esto supone un problema, y como afecta esto a la semejanza entre los términos

177 Matriz de comparación. El proceso de análisis de redundancia empieza con la construcción de una matriz de comparación en la cual se comparan todos los términos que se extraen del grafo desde la base de datos entre sí. En este apartado se aborda el diseño de este algoritmo desde el punto de vista matemático, la implementación final se detallará en esta memoria más adelante. Se cuenta con un vector de conceptos en el cual cada concepto puede tener uno o varios significantes, como por ejemplo lung cancer o complications. Con este vector se construye una Matriz M tal que cada elemento de la matriz representa la comparación entre el elemento con el elemento. Algoritmo 3. Matriz de comparación construida por el algoritmo de redundancia semántica. Cada elemento corresponderá a la ejecución del algoritmo de desambigüación de conceptos y obtención de relaciones semánticas entre conceptos

178 Se ordena el vector de conceptos descendente por orden de relevancia antes de construir la matriz de comparación dado que si un elemento es clasificado con otro elemento por una relación semántica entre ambos estos el clasificado como redundante en función a relevancia o rol en la relación ya no volverá a ser comparado. Si un elemento ningún elemento es clasificado como redundante, ya no será comparado con, por lo que se avanza a la siguiente fila de la matriz. Si un elemento es clasificado como redundante por los algoritmos posteriores, ya no será comparado con ningún elemento, siendo añadido a un vector de conceptos redundantes. Con ello se consigue reducir la complejidad del algoritmo, que tendrá una cota superior igual a en el caso de que no se detecte ninguna relación semántica y una cota inferior de complejidad igual a O(n) en el caso de que se encuentren siempre elementos redundantes. En realidad la cota superior es estrictamente igual a, pero debido a la teoría de complejidad algorítmica esta cota es igual a puesto que la constante entera 2 no elimina un tiempo significativo cuando n tiende a infinito. La matriz de comparación tiene las siguientes propiedades principales que explican el comportamiento del algoritmo: Cuadrada: Para cualquier número de conceptos que es variable en función del grafo procesado, la matriz siempre tendrá tantas filas como columnas donde el número de filas y columnas de la matriz será igual al número de conceptos que contenga el grafo a procesar

179 Triangular Superior: Todos los elementos que se sitúen por debajo de la diagonal tienen valor igual a cero, puesto que las comparaciones entre esos elementos ya se han efectuado y añadirían complejidad innecesaria al algoritmo. El vector contendrá los conceptos redundantes tras las comparaciones, como ya se comentará más adelante, cuando se hace la comparación entre dos conceptos solo uno de ellos será clasificado como redundante y lo será con respecto al otro concepto con el que se compara y con un grado de semejanza según una relación particular. Toda esta información debe ser tenida en cuenta en la implementación, puesto que cada elemento de ese vector será una estructura de datos que contendrá toda la información comentada. Con este diseño, si por ejemplo tenemos tres elementos a,b y c, si b y c tienen el mismo contenido semántico que a y a es el más relevante, primero se haría una comparación entre a y b obteniendo la relación y que b es el concepto redundante. Se añadiría b a la lista de redundantes y se procedería a comparar a con c, tras ello se llegaría al mismo resultado, clasificando c como redundante junto al tipo de relación que comparte con a y el grado de semejanza. Para cualquier otra circunstancia entre los elementos a,b y c, este algoritmo iría clasificando toda la información que le transmitirían los algoritmos que se comentarán a continuación, siendo una capa superior de gestión para los mismos

180 -148-

181 Proceso de desambigüación de conceptos. Para cada elemento de los anteriormente comentados se ejecutan los algoritmos de desambigüación de conceptos y de encuentro de relaciones semánticas. Lo primero que hay que hacer teniendo en cuenta que en cada nodo puede haber varias palabras ( lung cancer, tobacco use ), es recorrer todas las posibles combinaciones entre las palabras, desde el concepto global si existe ( wheeled_vehicle por ejemplo ) hasta la comparación de cada uno de los términos. Comprobamos si existe mediante la consulta a una ontología mediante su interfaz para el desarrollo de aplicaciones. Se compararán los sustantivos en el caso de que existan con varios conceptos, se asume que el otro término es un modificador, por ejemplo tobacco use, se da más importancia a tobacco. En el caso de no existir se da más importancia a los verbos, comparándolos en primer lugar. No se compararán adjetivos o adverbios. Esto nos lleva a dividir este proceso en una primera etapa de preprocesamiento de las palabras del concepto y una segunda ya propia de desambigüación del significado subyacente al significado presente en el concepto. Preprocesamiento de los nodos del grafo: En el algoritmo del tratamiento de la redundancia semántica entre los nodos planteado, se itera entre los distintos conceptos que se encuentran en el grafo construyendo una matriz triangular superior que compara los distintos conceptos. En este punto es cuando se insertan las modificaciones para obtener un grado de semejanza entre los nodos, siguiendo el siguiente proceso: -149-

182 Existen determinadas palabras que pueden implicar un concepto de negación con respecto a las otras palabras a las que acompañan en el nodo a analizar. Por ejemplo Stopping Smoking, cuyo significado sería lo contrario a fumar, puesto que ya no se fumaría. Si lo comparamos con Smoking, se podría dar la circunstancia de que entre Stopping y Smoking no hay relación y entre Smoking y Smoking hay sinonimia pura puesto que es el mismo significante con el mismo significado. Sin embargo estos conceptos no tienen dicha relación de sinonimia. Por ello se elabora una lista de significantes que pueden indicar negación, y que al detectarse se guardará dicha información en la estructura de datos perteneciente al concepto. Dicha palabra no se comparará con significantes del otro nodo. Más tarde si se detecta una relación de sinonimia o hiperonimia se tendrá en cuenta que está acompañada con el otro significante para indicar la negación. De esta forma también se propone una lista de stop words que no se compararán si son encontradas al carecer de significado. Para detectar todas las posibles palabras asociadas a las de negación se pueden utilizar distintas técnicas como stemming, con la cual se extrae la raíz de la palabra y se ve si esta es igual a una de las palabras del concepto. No se compararán adverbios o adjetivos que se puedan encontrar en el nodo al solo añadir información en el concepto y resultar poco representativos del concepto general. Tampoco se compararán de forma directa los conceptos que puedan añadir información, intensificadores, términos englobados en localización o que se encuentren entre paréntesis. Se prueba la existencia de los términos y sus combinaciones en, por ejemplo, Wordnet u otra ontología con la que se trabaje, se eliminan aquellas combinaciones que no existen. Por ejemplo, en Wordnet existe lung_cancer, -150-

183 pero no fluid_collect. Por lo tanto si estamos comparando estos dos términos, se tienen que comparar las distintas combinaciones de significantes. Con mayor importancia, { lung_cancer, fluid } y { lung_cancer, collect } y con menor { lung, fluid },{ lung, collect }, { cancer, fluid } y { cancer, collect }. Desambiguación del synset correspondiente al significante analizado. Hay que tener en cuenta antes de detallar este proceso que el grafo sobre el que se ejecutan todas las comparaciones entre los términos pertenece a un texto que mantiene su contexto general en todo el grafo. Esto es de gran ayuda puesto que se sabe a priori sobre qué tipo de texto se está trabajando y por tanto esto puede suponer una ventaja significativa para la extracción del synset correcto en el texto. Esta idea se ve claramente mediante un ejemplo, si se conoce que estamos analizando un texto de informática y se encuentra el significante monitor, si tenemos como posibles synsets uno cuyo significado indica que se trata del monitor de un ordenador y otro del monitor de gimnasio es evidente que el significante analizado hace referencia al primer significado comentado. En todo caso esta idea puede desarrollarse también con un enfoque estadístico, en el cual tendríamos medidas que son los significantes que se ven a simple vista y estados ocultos que son los synsets. En función a distintos parámetros se variaría la probabilidad de que fuese uno u otro el synset subyacente. Dada la complejidad que es el abordar esta problemática se aplaza para futuros trabajos. Por lo comentado se elabora un enfoque más simple, pero práctico. Se tendrá que tener en cuenta si aparecen en los synsets a analizar términos de los que se compone el grafo, a su vez también es crítico que se encuentre el término con el -151-

184 que se está comparando en un synset del otro concepto, y por supuesto el número de términos en común en ambos synsets. Se propone el siguiente enfoque, se contabilizan todos los synsets asociados a las dos posibles tipos de significantes a comparar, sustantivo o verbo. Se toman los synsets de sustantivo en primer lugar y las keywords del contexto del texto analizado. Se deben recorrer todas las combinaciones de palabras válidas en ambos nodos, en todos los synsets de ambos nodos se deben buscar relaciones y palabras en común. Tomando como hipótesis de trabajo que todos los conceptos están mínimamente relacionados entre sí por pertenecer al mismo contexto es probable que aquellos synsets en los que se encuentren relaciones o tengas más palabras en común sean los más factibles de ser la correcta referencia del significante analizado. En estos synsets es también de utilidad el buscar si las keywords presentes en el contexto se hallan, o sus sinónimos, en cada uno de estos synsets. Del mismo modo es necesario averiguar si los términos de estos synsets coinciden con los presentes en el grafo, lo que puede ser una idea, sobre todo si se encuentra una relación de sinonimia, que ese es el synset referenciado. Buscando estos parámetros en cada uno de los synsets la idea de este proceso es obtener una puntuación final asignando un peso a cada uno de los conceptos, una posible implementación se comenta en el apartado de implementación con respecto al algoritmo de redundancia semántica. En este punto ya se tendría el synset resultante del término y el tipo de palabra que es, con esta información de ambos términos ya podemos ejecutar distintos -152-

185 algoritmos que nos indicarán la semejanza entre ambos, aplicables en su mayor medida a relaciones de hiperonimia

186 -154-

187 Descripción de relaciones de redundancia semántica. En este proceso se clasificarán todos aquellos pares de elementos en los que se detecte alguna relación semántica. Para cada una de las relaciones se describe también como se acometerá el cálculo del grado borroso que las define. Para cada combinación, cada término de la pareja puede ser a su vez en cada synset un tipo de palabra diferente, verbo, sustantivo, adjetivo o adverbio. Para desambigüar y situar en el contexto también se compararán todas las posibles combinaciones con el objetivo de encontrar la relación. En función al tipo de palabra se buscarán unas relaciones u otras. Las posibles relaciones entre los términos y los criterios de decisión para elegir la más relevante que se han contemplado en este sistema son las siguientes: Sinonimia: En caso de detectar sinonimia la entidad clasificada como redundante será la que posea una menor relevancia. Para evitar que entidades con gran relevancia sean eliminadas en las primeras comparaciones del algoritmo se han ordenado inversamente por relevancia antes de que se procese el mismo. Inspirado en el trabajo de Garcés, Olivas y Romero sobre el algoritmo FIS-CRM y como se trata la sinonimia en el mismo, se establece que el grado de semejanza será calculado como m/n, donde m es el número de términos que tienen en común en ambos synsets y n el número de términos totales. Este grado, y en lo sucesivo todos los grados que se extraen de cada relación, servirán para multiplicar el grado borroso de las relaciones traspasadas entre los conceptos

188 / Figura 69. Expresión del cálculo de grado de sinonimia. En función de la tasa de compresión y de los valores finales de semejanza calculados entre todos los sinónimos se establecerá un umbral dinámico que restrinja que pares de entidades son clasificadas finalmente como sinónimos para que se proceda con la eliminación de la menos relevante. En el ejemplo comentado en este artículo, se obtiene una de estas salidas que ilustraría la semejanza encontrada entre smoking y tobacco use: Entidades comparadas: smoking y tobacco use Relación: Sinonimos. Antonimia: Desde una perspectiva perteneciente a la lógica borrosa, no se aborda el problema de la antonimia en este trabajo al no poder efectuar contraposición en la sustitución de dos hechos debido a la causalidad existente en el grafo. Esta enuncia que si dos conceptos A y B están relacionados, no solo lo están lógicamente sino también en el tiempo, es decir, A ocurre antes que B. Por esta razón, si se detecta un antónimo y se elimina, para traspasar la relación a su contrario, no A, habría que efectuar una contraposición y extraer también un concepto no B para no perder el sentido de la implicación. Debido a la naturaleza de la causalidad esto es imposible, por lo que se aparca esta relación para futuros trabajos. De todos modos desde una perspectiva funcional, se guarda que términos son antónimos para futuro tratamiento en este sistema. Hiperonimia e Hiponimia: Se clasificará como redundante el hiperónimo al contener el hipónimo un mayor significado semántica que el previo con una excepción. Si la diferencia de relevancia normalizada entre ambos términos es -156-

189 mayor que 1-1/L, donde L es la distancia entre ambos synsets + 1 para simbolizar la pérdida de implicación, se clasificará al hipónimo como redundante. Se usará como grado 1/L. Se propone un ejemplo para aclarar este aspecto: Se comparan objeto, de relevancia 0.8 y coche con relevancia 0.1. Se tiene que objeto es hiperónimo de coche, que a su vez es hipónimo de automóvil. De esta forma L=3, lo que implica que 1-1/L = Al poseer mayor semántica se debería elegir coche pero como objeto es mucho más relevante que este concepto se elige objeto y se marca como redundante coche. En un ejemplo en esta implementación: Encontrada relación jerárquica entre entidades. HIPERONIMIA. LA DISTANCIA ENTRE SYNSETS ES: 3 L. BORROSA. CALCULANDO GRADO. L. BORROSA. EL GRADO CALCULADO ES: 0.25 Esta es solo una de las posibles formas de tratar la hiperonimia e hiponimia entre dos conceptos. Se trata del algoritmo Path Length, que es el más generalizado. Se ha hecho una investigación mayor sobre las posibles medidas que se pueden ejecutar cuando se detecta este tipo de relaciones que se detallarán en la descripción de algoritmos de semejanza entre conceptos. El grado final de este tipo de relación será calculado en función al algoritmo que se detallará en este apartado. Meronimia y holonimia: Se dice que un holónimo es aquel término del que se compone su merónimo. También se detectan estas relaciones en ambos términos y se elegirá al holónimo por ser más concreto. De forma similar a lo comentado en la sinonimia, las relaciones del merónimo serán multiplicadas por 1/NH. Donde NH es el número de holónimos del meró nimo hasta llegar al mismo

190 El siguiente gráfico ilustra muy claramente las relaciones de hiperonimia, hiponimia, meronimia y holonimia que se obtendrían mediante consultas a la ontología con la que se esté trabajando y las distancias entre los conceptos que se analizarían que en última instancia afectarían al grado borroso definitivo a través de la semejanza entre ambos conceptos a analizar: Figura 70. Relaciones semánticas entre conceptos. Es también interesante de apreciar en este árbol que algunos conceptos están formados por varios significantes como por ejemplo motor_vehicle y otros como blinker solo están formados por un significante. Esto explica el recorrido previo de desambigüación de conceptos. Otras relaciones: Se contemplan también los grupos de verbos con significado similar y el vinculado entre verbos. En el primer caso se modifican las -158-

191 relaciones de forma similar a la sinonimia, quedándonos con el verbo más relevante. En el segundo de forma similar al algoritmo path length, la distancia entre el verbo causa y el efecto, quedándonos con el más relevante mientras que no ocurra la excepción comentada. Para incrementar el valor añadido de la propuesta, se incluye en el diseño de este proceso, además de encontrar las relaciones comentadas y calcularlas según los enfoques propuestos, diversos algoritmos que a partir de las distancias comentadas entre términos en relaciones como por ejemplo la hiperonimia devuelven un valor particular que consistiría en la semejanza entre ambos términos. Estos enfoques son propuestos en el siguiente apartado

192 -160-

193 4.5.3 Descripción de algoritmos de semejanza entre conceptos. El grado que define la relación causal entre dos conceptos debe ser lo más preciso posible para que la relación entre causales mantenga su consistencia al clasificarse dos nodos como redundantes por alguna relación. Por ello, en este trabajo se va a proponer un algoritmo para calcular la semejanza entre dos nodos que mantienen principalmente una relación de hiperonimia/hiponimia. Se verá como se aplican también criterios para la sinonimia que discriminan su carácter más puro o bien la borrosidad de esta relación. Al tener tanto el tipo de palabra como la acepción correcta de los dos significantes a comparar se pueden ejecutar todos los siguientes algoritmos que dan una medida de semejanza entre conceptos. Se comentan los algoritmos ejecutados en Wordnet, en sinonimia: Número de términos en común entre totales entre ambos synsets: Gracias al uso de esta medida se determina el carácter más o menos puro de la sinonimia por el uso de los synsets. Es la única medida aplicable en el caso de encontrarse la sinonimia pues trabaja con los propios synsets. Si se sabe que dos términos son sinónimos gracias a los métodos de la implementación de Wordnet su semejanza mínima ya será igual a 0.85, el intervalo entre 0.85 y 1 lo determinará esta medida. Si el synset es el mismo entonces será 1, sinónimos puros. El resto de algoritmos se basan en recorridos en el grafo que une los synsets en los cuales se encuentran

194 Para cualquier otra relación de tipo jerárquico, como puede ser la hiperonimia: Hirst & St-Onge (1998): Este criterio además de medir la semejanza mide como de relacionados semánticamente están los conceptos. Su valor será alto si dos conceptos son semánticamente cercanos y sus synsets están conectados en un camino que no es muy largo y que no cambia de dirección con frecuencia. El valor que devuelve se encuentra entre 1 y 16. Figura 71. Expresión de Hirst & St-Onge d es el número de cambios de dirección en el camino y C y k son constantes, si el camino no existe el valor es cero y la conclusión es que se trata de conceptos muy poco relacionados. Por ejemplo, si introducimos instance y example en su primer significado obtenemos la siguiente salida: The relatedness of example#n#1 and instance#n#2 using hso is 16, puesto que son sinónimos puros, significantes distintos que hacen referencia al mismo significado. En cambio, si probamos con dos conceptos bajo una relación de hiperonimia evidente, como pueden ser tree#n#1 y oak#n#1 la salida es: The relatedness of oak#n#1 and tree#n#1 using hso is 4. Por último, si introducimos dos términos que en principio no tienen que ver, como pueden ser lung_cancer#n#1 y phone#n#1 la salida es: The relatedness of lung_cancer#n#1 and phone#n#1 using hso is 0. El resto de medidas que se tienen en cuenta sirven específicamente para contabilizar la hiperonimia e hiponimia entre dos conceptos, por lo que nos dan -162-

195 una medida precisa para contabilizar la fortaleza específica de esta relación. Contabilizan la semejanza entre dos términos únicamente según este criterio. Leacock & Chodorow (1998) : Además de contabilizar la distancia comentada en el anterior apartado esta medida depende funcionalmente también de la profundidad de la taxonomía. D será la máxima profundidad en la taxonomía, esto es debido a que no se contabilizará nodo raíz, de tal forma que es posible para varios synsets pertenecer a más de una taxonomía. Prestan atención a enlaces del tipo es-un. Figura 72. Expresión de Leacock & Chodorow Según el ejemplo anterior: The relatedness of elm#n#1 and tree#n#1 using lch is , da un valor elevado debido a la relación de hiponimia entre términos. Para dos términos que en principio no tienen relación: The relatedness of sky#n#1 and lung_cancer#n#1 using lch is Resnik (1995): Juzga la semejanza entre un par de conceptos como la medida en la cual comparten información. Define la semejanza entre dos términos que se hallan en Wordnet como la contenido de información de su super ordenada más baja, a la que llama Most specific common subsumer. Se calcula según la siguiente expresión: Figura 73. Expresión de Resnik. Donde p(c) es la probabilidad de encontrar una instancia del synset c en algún corpus. Longitud de camino: El resultado será inversamente proporcional al número de nodos del camino más corto entre synsets. En el caso de sinonimia este valor es máximo porque la longitud es 1, es el mismo synset

196 Jiang-Conrath (1997): Utiliza los mismos conceptos de Resnik, con el contenido de información. Da una medida de la distancia semántica, que es inversamente proporcional a la semejanza comentada en este criterio, a mayor distancia semántica menor semejanza. Toma en cuenta además la probabilidad de encontrar una instancia de un synset hijo dada una instancia del synset padre, haciendo que todos los synsets colaboren en la expresión. Lin (1998): Otra medida similar a Jiang-Conrath pero bajo otro enfoque. Figura 74. Expresión de Lin En función a la configuración establecida para el usuario se ejecutarán cada uno de estos algoritmos para los pares seleccionados y se normalizará la puntuación total del sumatorio de los resultados de cada algoritmo por su peso. Este algoritmo extrae una medida de semejanza final que será contabilizada por el algoritmo de reconstrucción de la base de datos que se comenta en el siguiente apartado

197 4.6. Algoritmo de reconstrucción de la base de datos. A la salida del anterior algoritmo, se han obtenido todos los conceptos que son redundantes, en un vector junto al resto de información relacionada que ayudará a este algoritmo a hacer una primera modificación del grafo inicial eliminando la información contenida en este vector. Pese a esto, si no se ha satisfecho la tasa de compresión, habrá que volver a ejecutar el algoritmo de relevancia visto con anterioridad debido a que cualquier redundancia de carácter semántico ya ha sido detectada según lo justificado en el anterior apartado. Para poder someter a las entidades resultantes a un nuevo análisis de relevancia que contemple el número de entidades que por redundancia ha eliminado cada entidad que se analizará se tiene que poder reconstruir la base de datos previamente. Con esto el número de relaciones de entrada y salida de cada nodo cambiará y el algoritmo de relevancia dará nuevos resultados que determinarán definitivamente cuales son las entidades más críticas dentro del grafo que se está analizando. El objetivo es que al traspasar todas las relaciones se obtenga un nuevo grafo en el que ya no estarán presentes las entidades clasificadas como redundantes mientras que no se perderá ninguna de las implicaciones que relacionan las entidades. Ello quiere decir que al hacer la transformación no perdemos ninguna causal de las obtenidas en el trabajo previo, y que son de vital utilidad para el posterior trabajo a esta compresión

198 Desde este punto del documento se da alcance al diseño del proceso de reconstrucción, describiendo en primer lugar al algoritmo y su funcionamiento, y siguiendo con el cálculo del grado borroso de las implicaciones entre conceptos

199 4.6.1 Descripción y funcionamiento del algoritmo. El algoritmo de reconstrucción de la base de datos cuenta como entradas con el vector de relaciones semánticas entre nodos que contiene las entidades a eliminar. Se debe contar con una capa de modelo en la aplicación que independice al resto de la misma de la base de datos y en la cual se encuentre este algoritmo para respetar las reglas básicas de desarrollo de aplicaciones. Las relaciones de las entidades a eliminar deberán ser traspasadas a las entidades con las que se han relacionado. En el siguiente diagrama de flujo se detalla el mecanismo básico de este algoritmo: Figura 75. Diagrama de flujo del algoritmo de reconstrucción de la base de datos

200 Se incluyen en este diagrama los algoritmos de análisis de relevancia y de generación del texto en lenguaje natural para una mejor comprensión del flujo de datos que se ejecutaría en la herramienta a implementar, pero estos procesos no pertenecen al algoritmo de reconstrucción de la base de datos. El algoritmo de relevancia, a grandes rasgos, recorre cada uno de los elementos que contienen información sobre el concepto a eliminar y extrae la información necesaria de la base de datos sobre ese concepto que en ese punto le haga falta. Tras ello, si no se ha alcanzado el fin de la lista, para cada concepto, se modifican las relaciones de causa y efecto que contiene dicho concepto y se traspasan al concepto con el que se está relacionado. Para ello, habrá que calcular el grado borroso de la nueva relación puesto que no será el mismo, para ello se utilizará la semejanza calculada en el apartado anterior, información de la relación y del antecedente o consecuente en cada caso. Una descripción detallada sobre este proceso se adjunta en el siguiente apartado. Se itera sobre todos los elementos efectuando estas acciones hasta que se llega al final del vector. En este punto, si se ha satisfecho la tasa de compresión propuesta, se ejecutará el proceso de creación de lenguaje natural, sino, se volverá a invocar al proceso de análisis de relevancia que devolverá un vector con los n conceptos menos relevantes del nuevo grafo a eliminar y se volverá a ejecutar este algoritmo

201 4.6.2 Cálculo del grado borroso de las implicaciones entre conceptos. El grado borroso que acompaña a cada relación deberá ser multiplicado por la intensidad de la relación entre términos obtenida previamente. La problemática es la siguiente, si se verifica que la relación existe en el nodo a insertar, se elimina de la base de datos la relación entre el nodo a borrar y el nodo final. El problema se halla en el nuevo grado borroso que implicará la nueva relación. Supongamos que tenemos dos nodos A y B que en ambos casos implican una causa C y B es el nodo a eliminar. Sea rela y relb [0,1] la relevancia de los t rminos correspondientes, [0,1] el grado borroso de ambas implicaciones y s [0,1] el valor de semejanza entre ambos nodos que han sido clasificados como semejantes. El nuevo grado borroso, en este caso, se calcula como: Figura 76. Parámetros que intervienen en el cálculo borroso

202 La interpretación de la expresión se muestra a continuación. En primer lugar si nos centramos en el grado de semejanza entre ambos términos, a medida que este aumenta, la modificación del grado borroso de la implicación en el nodo a sustituir debe ser mayor y viceversa. Esta expresión contempla cualquier caso posible asignando un porcentaje de importancia a cada caso en función a la semejanza. En el hipotético caso de que esta fuera nula, el grado quedaría en el mismo valor, si esta es total, se procedería a una modificación global. Centrándonos en el caso de que la modificación sea global, analizamos el segundo término de la expresión. En función a la relevancia de ambos nodos, la participación de la intensidad de cada grado en el grado final será directamente proporcional. Por ello se calcula la proporción de participación de ambos nodos en el cómputo final entendiendo a la participación como relevancia y se multiplica por el grado borroso de la relación de cada uno. Veamos un ejemplo: Figura 77. Ejemplo del cálculo borroso. En este caso que se plantea en esta figura, el valor final que tomaría, es decir si se calcula por la expresión anteriormente comentada sería igual a Se ve que aumenta el grado borroso dado que es mucho mayor que pero no lo hace de forma tan elevado como cabría pensar dado que la semejanza no es total entre ambos nodos y el nodo A es mucho más relevante en el texto que el nodo B

203 En caso contrario, se traspasa la relación con la siguiente modificación del grado borroso, que es simplemente un caso particular de la anterior expresión con el caso de que Ga=0: Si se diera el caso alternativo, en el cual el nodo a eliminar es el A, las fórmulas para su cómputo serían las complementarias, sustituyendo en todos los casos los atributos propios de A por los de B. En el caso anterior suponiendo que no existiese la implicación entre A y C: Figura 78. Ejecución del cálculo borroso. El valor obtenido de una vez desaparecido la relación entre B y C y el nodo B es igual a Como podemos ver la fortaleza de la relación desaparece prácticamente en su totalidad al no existir previamente en A, sin embargo dada la existencia de dicha relación en B y de la semejanza en ambos nodos si es cierto que se cumple la implicación entre los conceptos A y C, aunque debilitada dada la poca relevancia de B. En nuestro caso de estudio, supongamos que el término smoking y tobacco use han sido detectados como redundantes con una semejanza del 0.75, teniendo el -171-

204 primero una relevancia en el texto de 0.7 y el segundo de Ambos están relacionados con el concepto lung cancer, el primer término con grado total, 1, y el segundo término 0.9 por lo que el grado de implicación del mismo será modificado. Figura 79. Ejemplo real para el cálculo. Según lo comentado previamente, obtendríamos el nuevo grado borroso,, que sería igual a Figura 80. Cálculo borroso realizado sobre ejemplo real

205 Tras ejecutar todas estas acciones pertenecientes al ámbito del entendimiento del lenguaje natural y a la compresión de información mediante recursos semánticos. El proceso puro de compresión de la información inicial queda terminado. Ahora queda la problemática de la creación de nuevo texto a partir del ya existente. Este proceso se detalla en el siguiente apartado

206 -174-

207 4.7 Algoritmo de creación del resumen. Se hace necesario un mecanismo que sea capaz de generar un texto en base a estos resultados mediante el uso de una gramática generativa. De esta forma este texto podrá simbolizar un resumen con respecto al texto que ha sido tratado por los trabajos previos. El siguiente paso en este trabajo es traducir la información contenida en este grafo a lenguaje natural para que pueda ser fácilmente interpretada por el usuario final de esta herramienta. Para ello se propone un algoritmo que mediante el uso de una gramática generativa consiga esta labor. Según los requisitos planteados y a partir del trabajo previo, que se puede contemplar en los procesos de compresión y análisis del grafo, se plantea el siguiente diseño para la herramienta: Figura 81. Diagrama de flujo de datos del generador de texto

208 Se engloba también dentro de la creación de resumen de una propuesta para generar nuevos conceptos manteniendo las propiedades originales que en función de la configuración seleccionada por el usuario puede o no usarse. Dado que es un algoritmo con una complejidad bastante elevado no es recomendada su utilización a no ser que sea estrictamente necesario, este algoritmo certifica que las propiedades del grafo que contiene las relaciones causales se mantienen pese a cambiar de significantes. Se analizará en detalle este algoritmo que mediante diversos mecanismos consigue convencer al usuario final de la herramienta de que ese texto podría haber sido perfectamente escrito por una persona y no por un ordenador. Para presentar las entidades más relevantes junto a sus relaciones necesitamos encapsularlas en frases que posean un significado morfológico,sintáctico y semántico adecuado. Se detalla cada una de estas fases en los siguientes apartados. De forma adicional se puede ver como se ha incluido un proceso denominado corrector de Norvig en el diagrama de flujo de datos. Se comenta en este apartado debido a que es una problemática clásica de la generación de texto, pero básicamente se utiliza en los anteriores procesos y a partir de una palabra que la ontología no reconoce se prueban las correcciones que este proceso sugiere para ver si ellas si son reconocidas. La salida de este proceso constituye el resumen final del texto procesado por los trabajos anteriores, con el que se concluiría el sistema según el alcance que se le ha dado en el proyecto fin de carrera

209 4.7.1 Propuesta para la creación de lenguaje nuevo. Para cumplir con la propiedad de que el resumen generado por esta aplicación posea texto no existente en analizado, se pueden sustituir términos que estén contenidos en la base de datos en este momento. Según todos los cálculos expuestos anteriormente y para no corromper el análisis de relevancia y redundancia hecho en trabajos previos, solo se pueden sustituir aquellos términos cuyos synsets sean idénticos a los del sinónimo con el que van a ser sustituidos. Dos palabras que cumplen esta propiedad son definidas como sinónimos puros. De tal forma existe la misma lógica subyacente con los grupos de verbos. Se propone un pequeño algoritmo para encontrar los posibles sinónimos puros de cada entidad contenida en la base de datos, cuya ejecución solo sería obligatoria si realmente se quiere generar nuevo texto. De no exigirse este requerimiento, la ejecución de este módulo no es necesaria. Como se verá, es un detalle importante dado que la complejidad del algoritmo es bastante elevada, lo que se traduce en un amplio tiempo de ejecución. En este algoritmo se sustituirán un máximo del 30% de los términos, 20 % de conceptos y 10 % de modificadores de relaciones ( verbos ) sobre el tamaño total de términos a analizar, estos porcentajes también pueden ser modificados por el usuario a través de una interfaz de gestión. Este algoritmo recorre los conceptos en la base de datos extrayendo sus sinónimos y sus synsets comparándolos entre sí, si se detectan dos sinónimos puros, esto es que sus synsets sean iguales, entonces se puede proceder con la sustitución. Tras este proceso ya no tendremos los mismos términos en la base de datos que los originales por lo que el resumen generado ya no tendrá ningún carácter -177-

210 extractivo, que de todas formas no tenía al generarse nuevo lenguaje con la gramática generativa, pero esta es otra propuesta que proporciona un valor añadido al proyecto

211 4.7.2 Análisis morfológico. En primer lugar en el algoritmo de generación del lenguaje natural se ejecuta un proceso al que se le ha denominado como análisis morfológico, y que, como se ha visto en el estado del arte, proporcionará al análisis sintáctico la información necesaria para que este se pueda ejecutar. Se elabora un vector con todas las relaciones causales contenidas en el grafo, que están formadas por antecedente, consecuente y una relación que los une y que contiene el grado en el cual estos están vinculados y probablemente un verbo que actúa como modificador. Es importante recordar que cada concepto no contiene solo el significante que lo representa sino una serie de modificadores como la localización o la intensidad en la cual se manifiesta el concepto. Por ello, se debe utilizar la ontología con la que se está trabajando junto a lógica subyacente en un algoritmo para determinar el tipo que representa cada palabra. De esta forma el análisis sintáctico ya no analizará si la palabra se trata de lung cancer o causes sino que tratará dichas palabras como sustantivo y verbo. De esta forma, en una de las implicaciones del grafo inicial no compreso entre Radon Gas y Lung Cancer, al ejecutar el proceso, en una salida de la aplicación se obtiene el siguiente resultado: Análisis de la frase =================== = radon gas [noun] causes [verb] Always [adverb] Lung Cancer [noun] -179-

212 Salida del análisis morfológico de una relación causal simple por la herramienta final De forma adicional, se guarda información para el análisis sintáctico sobre la colocación de cada término, a quién complementa cada uno de ellos, etc... Toda esta información se guarda en un nuevo vector que en realidad será una lista enlazada con estructuras de datos como se verá en el apartado de implementación de este documento

213 4.7.3 Análisis sintáctico. El análisis sintáctico, como se ha comentado en el apartado de estado del arte, recoge los tokens del análisis morfológico y crea estructuras de frase correctas en el lenguaje que se esté trabajando. Este proceso actúa de esta manera, recorre el vector de salida del análisis morfológico y manipula los elementos de tal forma que la frase sea correcta sintácticamente, para ello ya trabaja con elementos puros de la sintaxis como pueden ser el sujeto y predicado de una frase, el complemento directo e indirecto, etc... Dado que toda esta labor es enorme, se recomienda el uso para la implementación de este análisis de una de las herramientas comentadas en el estado del arte que poseen las gramáticas de cada lenguaje implementadas y que a partir de su interfaz para el desarrollo de aplicaciones ordenan la información ya procesada morfológicamente y crean una frase correcta, que además satisfaga distintas restricciones de cada palabra como por ejemplo puede ser el género que hará que el artículo que describa a ese sustantivo cambie de significante

214 Figura 82. Diagrama de flujo de datos del análisis morfológico y sintáctico. Esta representación abstracta será enviada al algoritmo de generación de lenguaje natural. Por ejemplo, si se supone que el antecedente fuera gas radón, el modificador de la relación causes y el consecuente cancer de pulmón, se atribuiría el rol de sujeto al gas radón, actuando como sustantivo. Causes sería inmediatamente catalogado como verbo y cancer de pulmón sería el sustantivo que actuaría en esta frase como el objeto

215 4.7.4 Algoritmo de generación del lenguaje natural. Una vez se han analizado los conceptos morfológica y sintácticamente se puede proceder con el diseño de un algoritmo que genere lenguaje natural. Para ello necesitamos un generador gramatical que cuente con diversos mecanismos para crear distintos tipos de frases y asegurar sortal constraints, para que no exista ningún tipo de fallos. Gracias a la ayuda de un generador gramatical, se pueden construir frases sintácticamente correctas proporcionándole como entrada la información previamente comentada. Estos están basados en la clásica gramática inglesa añadiendo restricciones, una pequeña muestra de la gramática inglesa es la siguiente: Figura 83. Gramática Inglesa en modo de Chomsky. Para traducir los grados borrosos de las relaciones causales a adverbios de frecuencia se usa un orden parcial, tomando como referencia los siguientes valores

216 Figura 84. Orden parcial. De esta forma por ejemplo si el concepto A implica el concepto B con un factor de 0.6, se traducirá esta relación a often causes, con esto tenemos relacionados los grados borrosos con una escala de adverbios de frecuencia que aparecerán en el texto resultante. Como se verá en el apartado de implementación correspondiente a este proceso este algoritmo es muy complejo debido a todas las particularidades que tiene la información estructurada en la base de datos y para garantizar una eficacia total del mismo las comprobaciones son muy numerosas. En este apartado de diseño solo se ha comentado con respecto al algoritmo de generación las pautas a nivel abstracto necesarias para poder planificar una implementación, pero este es de los apartados más complejos del sistema si se quiere generar un texto que de verdad parezca que ha sido escrito por un ser humano. En este apartado de la memoria ya se ha comentado una visión general de todo el sistema correspondiente al análisis y diseño del mismo. Con esta visión es posible plantear implementaciones muy distintas a la que se va a proponer pero si se sigue -184-

217 este análisis y diseño se garantiza un producto final óptimo si la implementación es válida. De esta forma, como las metodologías clásicas proponen, el análisis y el diseño son independientes de la implementación y estas fases podrían ser desarrolladas por diferentes equipos. Se ha tratado de evitar el hacer comentarios con respecto a las herramientas utilizadas o a las particularidades de mucho detalle puesto que se harán en el siguiente apartado de este documento, la implementación del sistema de resumen automático basado en relaciones causales

218 -186-

219 Capítulo 5. Implementación del Sistema de Resumen Basado en Causales En este apartado se comentará todos los aspectos necesarios para implementar el diseño y el análisis propuesto. Como ya se han comentado existen un número indeterminado de posibles implementaciones que podrían ser válidas con respecto al diseño que se ha propuesto pero aquí se comentan las que se han desarrollado en el proyecto fin de carrera. Con respecto a la metodología de documentación planteada, es la etapa posterior al análisis y diseño de la herramienta, y será continuada por la etapa de evaluación y pruebas que corresponde al siguiente apartado de este documento. Figura 85. Metodología para la documentación de la memoria

220 Toda la implementación que aquí se describe es la representación de un ejecutable que se ha desarrollado en el plazo dedicado para el proyecto fin de carrera y es un entregable complementario a este documento que demuestra que todas las ideas aquí plasmadas son susceptibles de ser implementadas. Para cada apartado que se describirá, se adjuntará un gráfico que mostrará que procesos están envueltos en la descripción y que algoritmos contienen desde el punto de vista de diseño y como estos han sido implementados, para que en cada apartado se pueda observar de una forma rápida como han sido resueltas las distintas propuestas del diseño planteado. De igual forma se comentará en ocasiones el código fuente y las herramientas utilizadas

221 5.1 SIDRA: Sistema Inteligente de resumen automático. En la actualidad, uno de los principales problemas es el tratamiento masivo de información al que se tienen que enfrentar numerosos trabajadores en distintas empresas. Con esta herramienta se extraen algo más que titulares, se extraen las reglas decisivas que marcan el desarrollo del problema analizado, como los conceptos se relacionan e implican entre sí, y con qué grados de borrosidad en el texto inicial. Todo ello expresado en lenguaje natural. El módulo SIDRA en lo referente a los análisis de relevancia, análisis de redundancia, el algoritmo compresor de la base de datos y el algoritmo de generación de lenguaje natural ha sido desarrollada principalmente en lenguaje JavaSE con ayuda del IDE Eclipse y numerosos jars de apoyo. El equipo de desarrollo ha sido un MacBook Air. Figura 86. Interfaz gráfico de Eclipse, para el desarrollo de la herramienta

222 En todo momento la implementación final de la herramienta no tiene ningún error ni warning en el código, con el objetivo de minimizar cualquier tipo de error que se pueda producir en cualquier caso particular y siguiendo con las mejores prácticas de implementación. Se ha elegido JavaSE debido a la velocidad de implementación que el lenguaje facilita, sin la cual la herramienta hubiese sido imposible de desarrollar en el plazo destinado al proyecto fin de carrera que se combina con las otras tareas de este proyecto. Figura 87. Logo del lenguaje de programación Java. JavaSE también ha sido elegido gracias a la enorme comunidad que utiliza este lenguaje, y que aporta numerosas librerías que han sido utilizadas en este proyecto y de las que otros lenguajes que podrían haber sido buenas alternativas carecen. Ejemplos de estas librerías que se han utilizado son SimpleNLG, RiWordnet, EzGraph, TestNG, etc... JavaSE ha sido también utilizado gracias a la experiencia profesional que se tiene del lenguaje, el haber utilizado otro lenguaje de programación hubiese requerido una fase de aprendizaje de su sintaxis y funcionamiento, que hubiese impedido el desarrollo completo de la herramienta en plazo. Ha sido también elegido por su carácter multiplataforma, en el cual la herramienta se puede ejecutar de igual forma desde un ordenador con sistema operativo de Windows, Apple, Linux, etc.. Esto es muy útil y determinante debido al hecho de que en previsión del riesgo por avería del equipo principal de desarrollo se cuenta -190-

223 también con un ordenador con sistema operativo WindowsXP desde el cual se continuaría el desarrollo. La principal desventaja del uso de JavaSE es el rendimiento, que es significativamente inferior al proporcionado por otras alternativas. Si se quiere elaborar una implementación comercial de este sistema es recomendable utilizar, si los requerimientos de tiempo lo permiten y se dispone de librerías que cubran las distintas necesidades, alternativas como C o Lisp que maximizarían el rendimiento, pero cuyo tiempo de desarrollo sería significativamente más largo, factor determinante y de más importancia para la implementación de la herramienta debido al plazo del que se dispone para su desarrollo. Otra alternativa que constituye un término medio en lo respectivo a rendimiento y cuya implementación hubiese sido más rápida es Python, no se ha elegido este lenguaje de programación debido al desconocimiento total del mismo en las fases tempranas del proyecto, pero Python es el lenguaje ideal para tareas que tengan relación con el Procesamiento del Lenguaje Natural debido a la gran extensión de librerías dedicadas a esta tarea que posee y a sus operadores especializados y gran comunidad. Se desaconseja con total rotundidad implementar la herramienta con C#, debido al rendimiento y a no ser multiplataforma. Figura 88. Logo de Python y referencia de NLP con Python

224 Terminada la introducción de este apartado de implementación, se va a comenzar, al igual que se hizo en la fase de diseño con aquellos procesos que constituyan la interfaz de entrada y salida de datos del sistema para continuar con el propio sistema en sí

225 5.2. Configuración e Interfaz Gráfica. Como se ha comentado, se comienza por las interfaces de datos. En este apartado se comentan los siguientes procesos: Figura 89. Esquema de Configuración e Interfaz Gráfica. Como se indica en el gráfico, para el requisito planteado por el diseño consistente en la interfaz de entrada y salida de datos se va a implementar una interfaz gráfica en la cual el usuario puede hacer operaciones que se va a comunicar con el módulo de resumen automático mediante una invocación remota en una clase específica, lo que permite independizar a ambas aplicaciones de su ubicación

226 Se va a explicar en este apartado las distintas librerías externas utilizadas y los logs con información que intercambia el sistema de resumen con la interfaz gráfica. Por último se detallarán las comunicaciones entre la interfaz y el sistema que se harán mediante un interfaz entre aplicaciones. Se resolverá el facilitar un comportamiento dinámico de la aplicación en función al usuario y contexto mediante ficheros XML. Se detallará a continuación como se posibilita que la aplicación pueda leer estos ficheros. La configuración XML hace que se puedan ejecutar solo aquellos métodos que interesen en cada caso y ver como el sistema en general se comporta ante una configuración determinada. De la misma forma se puede hacer que cada algoritmo tome un peso determinado que este definido en este fichero. Se implementa una interfaz gráfica para mejorar la usabilidad de la herramienta. En ella se presenta un menú principal desde el que se pueden acceder a los diversos formularios para el uso y configuración del sistema. Figura 90. Menú principal de la interfaz gráfica

227 Esta aplicación gráfica invoca al sistema de resumen que se comportará tal y como este configurado por el XML, una vez terminada su ejecución se retorna el control a la interfaz gráfica. Con métodos de carácter recursivo se va explorando el fichero XML mediante recorridos en profundidad quedándonos con el contenido de las etiquetas que nos interesan. Se dedica un apartado de esta memoria a ilustrar los distintos formularios de la interfaz gráfica

228 -196-

229 5.2.1 Herramientas. Para la programación de la interfaz gráfica se ha utilizado el lenguaje de programación Java con el IDE Netbeans, que gracias a su editor gráfico acelera la velocidad de implementación de la misma. Figura 91. Entorno de Programación utilizado en el desarrollo de la interfaz gráfica. Esta aplicación gestiona el fichero XML a través de una librería java de software libre para trabajar con ficheros XML llamado Dom4j. Figura 92. Icono del software libre Dom4j

230 Dom4j hace el parseo del XML y permite leer y escribir en el mismo a través de métodos en los que podemos consultar el nombre y los atributos de cada etiqueta. A grandes rasgos toda la herramienta se adapta a la configuración leída desde el fichero XML. Gracias al potencial de esta librería se ejecutan métodos vinculados a eventos sobre la tabla implementada en la interfaz gráfica de la herramienta

231 5.2.2 Formato del fichero de configuración. Se lee el fichero en la aplicación visual y en el sistema de resumen gracias a un método de carácter recursivo que hace un recorrido en profundidad aprovechando la estructura de árbol de los ficheros XML. A continuación se incluye la codificación completa del fichero XML en el que se pueden comprobar todos los valores y modos que adopta cada etiqueta: Figura 93. Algoritmos presentes en el sistema. 3 3 Estos algoritmos y configuración pueden ir aumentando o siendo modificados en estos meses restantes

232 Figura 94. Módulos presentes en el sistema. 4 Como se presentaba en el formulario de la figura 4, la tabla lee todos estos datos y escribe cambios en función a los requisitos del usuario. 4 Aplica lo mismo que en la nota

233 5.2.3 Interfaz gráfica del sistema. En el formulario de configuración el usuario puede modificar los valores de este fichero de forma amigable a través de una tabla además de crear nuevos contextos que se adecuen a futuros textos a resumir. Para cada contexto puede añadir los keywords necesarios. Figura 95. Formulario de Configuración. Gracias al potencial de Dom4j se ejecutan métodos vinculados a eventos sobre la tabla implementada en la interfaz gráfica de la herramienta. Cada vez que el usuario modifica un campo de la misma se ejecuta un método que cambia los valores o modos de la etiqueta correspondiente al campo que ha cambiado. Una vez ajustada la configuración el botón volver le retorna al menú principal

234 En el formulario que prepara la ejecución del sistema de resumen automático se presenta una interfaz a través de la cual se seleccionan otros parámetros como pueden ser: Tasa de compresión. Texto que se desea resumir. Modo en el que se desea ejecutar la aplicación, es decir si se ejecutará tan solo el sistema de resumen automático a partir de un grafo de causales de entrada o si se ejecutará la extracción de causales y creación del grafo y a continuación el sistema de resumen automático. Una vista previa de dicho formulario se presenta a continuación: Figura 96. Formulario de preparación del resumen

235 Una vez ha terminado el sistema de resumen, la aplicación visual retoma el control con el que presenta un formulario en el que se pueden consultar resultados y logs de la ejecución del sistema. Figura 97. Formulario de Presentación de Resultados. Al presionar el botón de persistir se guarda en base de datos el resumen generado en la tabla Summary junto a su identificador, los valores de evaluación, la tasa de compresión y el identificador al texto sobre el que se ha generado. En el siguiente apartado de esta memoria se detalla en profundidad el mecanismo por el cual las dos aplicaciones se intercambian información

236 -204-

237 5.2.4 Librerías externas de SIDRA e invocación remota. Para que la interfaz gráfica pueda llamar al sistema general este debe ser embebido en un jar de tal forma que se mantengan todas las rutas a los distintos jars que contienen las librerías que usa el sistema de resumen. Para ello se guardan todos en un único fichero de jars de tal forma que la ruta para acceder a todos ellos sea la misma. Esto facilita la gestión del classpath. Figura 98. Librerías Java referenciadas desde el Sistema de Resumen Automático. 5 5 Al igual que en las notas 1 y 2, se puede modificar el contenido de este directorio, en función a nuevas necesidades

238 La interfaz gráfica, mediante el uso de la clase Java Runtime se invoca un comando en la terminal del sistema que añade el classpath donde se encuentran los jars y llama a la clase principal del sistema embebida también en un jar. Mediante un flujo de entrada desde este nuevo proceso se presenta por la terminal las salidas del sistema. Se presenta el código que facilita esta tarea, en la implementación final el nombre de todos los jar que aparecen en el código que se adjunta son almacenados en una cadena de texto que lee dinámicamente el fichero anterior para que ese fragmento de código sea independiente de los jar que se ejecutan en la aplicación. Para mayor comprensión, se presenta el siguiente código en el que se puede ver que la invocación al jar que elabora los resúmenes debe ser acompañada por todas las librerías externas que utiliza la herramienta. La variable r simboliza la ruta para la aplicación e IdTexto el texto que debe procesar: -206-

239 Algoritmo 4. Código que vincula la ejecución de ambas aplicaciones. Como se puede ver, la aplicación de interfaz gráfica queda detenida hasta que la aplicación principal termine. Mientras tanto toda la información del sistema de resumen aparece en el terminal desde donde se esté ejecutando la interfaz gráfica. Una vez resuelta esta interfaz entre aplicaciones, queda por detallar el intercambio de información entre ellas, que se hará mediante ficheros a modo de logs

240 -208-

241 5.2.5 Persistencia de ficheros de configuración. Una vez se ha invocado el sistema de resumen se configuran todos estos valores para que la herramienta se acople. Esta genera el resumen y los logs correspondientes a la ejecución del sistema. Estos logs, junto al resumen, se guardarán en una carpeta Default si no se especifica el título del texto a resumir que será sobreescrita por cada nueva ejecución o en una nueva carpeta con el título del texto concatenado de la fecha de ejecución en el caso de ser especificado. En el caso de ser especificado nunca se eliminará dicha información. Se persiste por tanto la información en la siguiente estructura de carpetas sobre la que leerá los datos la interfaz gráfica: -209-

242 Figura 99. Estructura de Carpetas en la que se persiste la información. Al persistirse la información en esta estructura de carpetas la interfaz gráfica simplemente lee los logs que el usuario desee consultar al terminar la ejecución y muestra el resumen en el formulario de resultados leyendo directamente el fichero summary.txt. El resto de la información es persistido en la base de datos según el diseño lógico planteado en el apartado de análisis

243 Figura 100. Log de Relevancia para una ejecución con configuración aleatoria. Visto ya el funcionamiento técnico de la aplicación y la gestión de los datos de entrada y salida se describirán en los siguientes apartados como se han implementado los distintos algoritmos que forman el sistema

244 -212-

245 5.3 Algoritmo de relevancia. Se empieza por el algoritmo de relevancia al ser el primero ejecutado según el flujo de datos descrito en la etapa de diseño y por ser el algoritmo de más fácil, aunque tediosa, implementación. Al tener descritos y diseñados los distintos algoritmos que intervienen en el cómputo general, la mayoría de los parámetros son de implementación directa en Java, aunque algunos necesitan una ayuda mayor para ser codificados. Los contenidos que se van a detallar en este apartado son los siguientes: Figura 101. Esquema de Algoritmo de Relevancia. En los siguientes apartados se detallan todos los puntos contenidos dentro de este gráfico que facilitan la implementación de este algoritmo

246 -214-

247 5.3.1 Herramientas. Para los distintos algoritmos de tratamiento de grafos comentados previamente, como por ejemplo el PageRank o el HITS, se utiliza la librería EzGraph para ejecutarlos uno a uno mediante un bucle que recorre todas las entidades almacenadas en la lista. EzGraph cuenta con las siguientes clases: Figura 102. Clases contenidas en la librería EzGraph. Mediante una configuración para la librería se pueden ejecutar todos estos algoritmos. Entre las clases que se detallan se puede observar facilidades para ejecutar el algoritmo SimRank, el PageRank, HITS, etc.. EzGraph necesita un fichero en el cual se le presentan las relaciones y entidades de tal forma que este construye el grafo y ejecuta los algoritmos solicitados. Este -215-

248 contiene el identificador del nodo antecedente y consecuente, acompañado del factor que indica la borrosidad de la implicación. El resto de requisitos para la ejecución del algoritmo de relevancia se codifican en JavaSE

249 5.3.2 Implementación. Todo el análisis de relevancia se ejecuta en una clase a la que se le denomina RelevanceRanker, que necesita para funcionar una lista enlazada en la cual se encuentren todos los conceptos extraídos previamente de la base de datos, una conexión a la base de datos para información de gestión y hace referencia a la clase de configuración que contiene la información introducida por el usuario. Lo primero que se efectúa es la construcción del algoritmo peso-valor mediante la asignación de los pesos dictados por la configuración en un método asignapesos(). Se utiliza una variable a modo de normalizador de la cantidad total que va sumando su valor al de todos los pesos, de esta forma se obtiene en dicha variable el valor máximo que este algoritmo podría tener, y se puede utilizar como normalizador. Tras esto se invoca a otro método que escribe en el fichero de entrada a EzGraph la información que necesita para ser invocado, una vez que la configuración está preparada se llama al método que va ejecutando los distintos parámetros del análisis de relevancia. Muchos de estos parámetros necesitan información básica del grafo que se obtiene en otro método denominado como getbasicstatistics(). Algoritmo 5. Estadísticas básicas

250 Se recorre la lista de entidades obteniendo de EzGraph el nodo del grafo que genera asociado a cada entidad visitada de la lista. Según se obtienen los resultados se van asignando a las variables de la clase Entidad que contienen el resultado. Se dispone también de una clase de acceso a la base de datos en esta clase para los parámetros que necesitan ser obtenidos de esta forma. El resto de algoritmos se implementan de distintas vías bien mediante la librería EzGraph, en la cual se preparan en un método que efectúa el rol de constructor seguido por un método en el que se ejecutan, o bien mediante JavaSE. Algoritmo 6. Fragmento del código de análisis de relevancia. Mediante la información de las estadísticas básicas se hace que todas las puntuaciones queden normalizadas. Como se detalla en el apartado de análisis, una vez que el primer análisis se ha efectuado se ejecuta el algoritmo SimRank y se evalúa el grafo con un recorrido en orden topológico para evaluar la relevancia de las causas de cada nodo y sus anteriores. Orden topológico: A grandes rasgos, el orden topológico utiliza los grados de entrada para discernir cual es el siguiente nodo que tiene que visitar, utilizando una cola. En detalle, se podría implementar siguiendo los siguientes pasos: -218-

251 A partir de la matriz de adyacencia que forma el grafo, se obtienen los grados de entrada de cada nodo. Aquellos nodos con grados de entrada cero se incluyen en la cola mencionada. Se itera en un bucle mientras que la cola no esté vacía, extrayendo un elemento en cada iteración. Para ese elemento se obtienen todos sus adyacentes en el grafo y se recorre mediante otro bucle el vector que contiene los identificadores de estos nodos adyacentes. En cada iteración se decrementa el grado de entrada de ese nodo, y si es igual a cero, se encola en la estructura de datos iterada. De esta forma se garantiza el correcto recorrido del grafo y el procesamiento de todas las causas antes de cualquier efecto. Por último se invoca un método que persiste toda la información en el log presentado en el apartado anterior. La salida de este algoritmo es también capturada en un log que se puede visualizar desde la interfaz gráfica comentada: Figura 103. Log de Relevancia para una ejecución con configuración aleatoria

252 En el siguiente apartado de esta memoria se detallará como se ha implementado el algoritmo de análisis de redundancia semántica, que junto a este algoritmo componen el cuerpo principal del sistema

253 5.4 Algoritmo de análisis de redundancia semántica. Se comenta en este apartado como se ha implementado la funcionalidad que permite el análisis de redundancia semántica planteado en el diseño del sistema. Como ya se ha visto en el diseño del sistema, dentro de este proceso se ejecuta un número alto de funcionalidades que a grandes rasgos se pueden englobar dentro de la estructura de comparación, la desambigüación en el concepto, la búsqueda de relaciones semánticas entre los conceptos y la ejecución de los distintos algoritmos que concluyen en un valor de semejanza entre los conceptos. Figura 104. Esquema de Algoritmo de análisis de redundancia semántica. Se comentan por lo tanto por separado tanto las herramientas como la implementación necesarias para codificar estas funcionalidades

254 Como entrada para este proceso necesitamos la lista de entidades calificadas por el algoritmo anterior ordenadas inversamente por relevancia y una conexión con la base de datos. Como salida obtendremos la posible relación entre todos los pares de entidades comparados, el tipo e intensidad de la misma. Una vez ejecutado todo el proceso se obtiene la lista de Relaciones Semánticas entre las entidades, con toda la información de las mismas y una lista de relaciones semánticas que contiene las entidades a borrar. Estas serán las entradas para el algoritmo de reconstrucción de la base de datos

255 5.4.1 Herramientas. Para averiguar el significado de estos términos se consultan los synsets de la herramienta Wordnet desde Java mediante la librería Jwnl y RiWordnet. Figura 105. Logotipo de JWNL. Para las relaciones semánticas, la profundidad de la ontología entre términos y la distancia entre ellos al igual que las propias relaciones son proporcionadas por Wordnet. Se ha implementado un corrector ortográfico que desarrolló originalmente Peter Norvig para detección de aquellos términos que no estén bien escritos. Figura 106. Peter Norvig, Director de Investigación en Google

256 Para efectuar Stemming sobre palabras para ver si su raíz pertenece a una de las palabras de la lista que indican negación se utiliza una utilidad de Stemming de Wordnet. Se usa Wordnet::Similarities para ejecutar los distintos algoritmos de semejanza entre significados. Figura 107. Logotipo de ws4j. En el siguiente apartado se detalla la implementación de este algoritmo

257 5.4.2 Implementación. Desde el punto de vista de programación se aborda la problemática comentada para ilustrar como se ha programado esta funcionalidad. Se divide la descripción de las medidas adoptadas en las distintas partes en las que se divide este proceso. La implementación se puede descomponer en una serie de pasos sencillos: Creación de la estructura de comparación: Se inicializa una instancia de RiWordnet y se construye una matriz superior triangular cuyo elemento contendrá la información extraída de la posible semejanza entre los términos i y j. Se crea una clase a la que se denomina Relación Semántica que se compone de los identificadores de las dos entidades y una lista vacía que las alojará. Se recorre mediante un bucle externo la lista de entidades mencionada anteriormente y con un índice que tomará en cada iteración al valor del índice externo más una unidad en un bucle interno volvemos a recorrer dicha lista. De esta forma estaremos comparando todas las posibles parejas entre las entidades del grafo creando la matriz superior comentada con anterioridad. En cada iteración del doble bucle creamos un objeto Relación Semántica con las dos entidades comparadas y lo sometemos al algoritmo de análisis de redundancia, que se ejecutará tantas veces como relaciones semánticas existan. Para ahorrar complejidad al algoritmo se acometen las siguientes puntualidades: Si un elemento es clasificado como redundante, ya no será comparado con ningún elemento, por lo que se avanza a la siguiente fila de la matriz

258 Si un elemento es clasificado como redundante por los algoritmos posteriores, ya no será comparado con ningún elemento, siendo añadido a una lista enlazada de conceptos redundantes. Desambigüación del concepto: Al invocar a Wordnet éste nos devuelve un vector con los significados posibles de cada significante y el tipo de palabra al que representan. Para elaborar esta tarea de nuevo utilizamos otro doble bucle que recorrerá los tipos de palabra. Se puede predecir que el tiempo de ejecución del algoritmo es sumamente elevado, pero es incorrecto debido a que pese a existir muchos bucles que aumentan su complejidad, el número de iteraciones en cada uno de ellos es muy limitada. Se procede con el siguiente algoritmo: Para cada combinación de las anteriormente comentadas, se acomete el proceso de desambiguación. Por tanto se recorre mediante un posible doble bucle estos términos, esto supone pocas iteraciones dado que a lo sumo se encuentran tres significantes válidos en cada nodo del grafo. Suponiendo que se comparan dos significantes A y B, cuya lista de synsets se le denomina y. Se recorre dicha lista comparando sus términos con el primer synset de B, al terminar todos los synsets se volverán a comparar con el segundo de B y así sucesivamente. Para cada synset comparado se guarda la siguiente información: Se guarda el hecho de que el término con el que se está comparando se encuentre en el otro synset. Esto indica la sinonimia entre los términos a comparar. De no encontrarse no se contabilizan como sinónimos prestando -226-

259 atención a relaciones de hiperonimia, meronimia, etc... que podrían tener y que serían obtenidos por los distintos métodos que ofrece Wordnet. En el caso de encontrarse otras relaciones en synsets como por ejemplo que un hipónimo esté contenido se valora ese synset de forma positiva. Términos en común de ambos synsets con respecto al total de términos de cada synset. Este era el grado de semejanza que se utilizaba en trabajos previos. Términos encontrados que sean iguales a algún término del grafo. También se podrían considerar keywords en este punto. Esto nos da una medida de semejanza con respecto al contexto que se trabaja. Más tarde para puntuar este parámetro se normalizará la puntuación teniendo en cuenta el máximo de términos encontrados iguales a los del grafo con respecto a los totales de un synset y el mínimo, que lo más probable es que sea cero. De esta forma se tiene en cuenta la relación con respecto al concepto subyacente y no el número de similitudes, ya que puede haber synsets con muchos significantes y otros con pocos. Se iteran todas las combinaciones entre los synsets de ambos conceptos guardando esta información. Se puntúa a cada synset con los parámetros anteriormente normalizados y la puntuación final es extraída mediante la siguiente tabla peso-valor: Concepto NºTerminos Común / Total Términos Peso

260 Concepto (Nº Términos Grafo + Keywords/Términos Synset ) / max ((Nº Términos Grafo + Keywords/Términos Synset )) Peso 2.5 Existe término con el que se compara en el otro synset o se encuentra relación ( Hiperonimia, meronimia... ) 2.5 Tabla 4. Peso para desambigüación del concepto. Si se encuentran relaciones, el synset con mayor puntuación será el elegido para las futuras comparaciones con otros nodos, de esta forma solo se realiza la desambiguación una vez, reduciendo el tiempo de procesamiento. Corrector de Norvig. Si se analiza una palabra que no existe en la ontología Wordnet, por ejemplo, esta herramienta devuelve una excepción, haciendo malfuncionar al algoritmo. En el proceso de desambigüación se elige una de las combinaciones. Se contempla el hecho de que una combinación no exista, por ejemplo, cigarrettes_smoking. Pero las palabras por separado del concepto deben existir en su totalidad en la ontología que estemos usando. Para solucionar este problema, se ha implementado un corrector ortográfico que desarrolló originalmente Norvig. Basado en estadística, a partir de una palabra mal escrita, este corrector devuelve la corrección de dicha palabra. Por ejemplo: Si Wordnet analiza la palabra Cigarrettes,que se puede observar en el grafo original, la ejecución falla, debido a que esta palabra no está bien escrita. En este -228-

261 momento de la ejecución se somete a este término al corrector ortográfico de Norvig devolviendo este la ya sí palabra bien escrita Cigarettes. Búsqueda de relaciones semánticas entre los conceptos: En cada comparación, se codifican métodos que preguntan a Wordnet por las distintas relaciones que pueden existir entre estos significantes, si se halla alguna de estas relaciones se guarda en la clase Relación Semántica creada el tipo de relación que es, el término que prevalece sobre su comparado y el grado borroso de semejanza entre ambos. En ese momento se interrumpen todas las iteraciones de comparación entre los términos para que la siguiente pareja de entidades sea comparada. De no existir ninguna relación entre las entidades comparadas se guarda en la clase relación que no existe ninguna semejanza y se comparan las siguientes entidades. Por ejemplo: Entidades comparadas: Lung Cancer y complications Relación: Sin relación. Resultado: Ambos -229-

262 Figura 108. Fichero de configuración de JWNL Aquellas entidades que han resultado ser redundantes por comparaciones previas son marcadas a tal efecto en la clase entidad para que ya no sean comparadas con respecto a otros términos puesto que ya han sido marcadas a eliminar. Adicionalmente son introducidas en una tercera lista que se compondrá de las relaciones semánticas de todas las entidades a borrar de forma futura en la base de datos

263 Algoritmo 7. Ejemplo de código que busca hiperónimos de un término apoyado por Wordnet Cálculo de la semejanza entre nodos. Para ver si dos significados cualesquiera tienen una relación entre sí y cuantificar cual es esa relación se ejecuta este proceso. Partiendo con el significante, el synset y el tipo de palabra de cada término, se inicia el cálculo de la semejanza entre los conceptos usando la herramienta Wordnet::Similarities en su implementación para Java

264 Algoritmo 8. Código que invoca a los algoritmos de Wordnet::Similarities desde Java Esta utiliza la ontología Wordnet sobre la que se está haciendo todo el trabajo ejecutando distintos algoritmos que proporcionan un grado de semejanza entre dos términos. Para aprovechar toda su funcionalidad Wordnet::Similarities acepta como entrada los parámetros ya comentados, dos significantes con synset asociado y tipo de palabra. De no incluir toda esta información también proporciona un grado de semejanza pero no tan preciso. word#part_of_speech#sense Se usarán pues una media entre estas medidas para contabilizar exactamente la medida de hiperonimia o hiponimia finales entre los dos conceptos que se compararán. De esta forma habremos ganado bastante precisión entre la semejanza final de los términos usando esta medida, y la modificación de la implicación final será más precisa. Se toman por tanto los siguientes pesos, se le denomina total a un término si este genera todo el nodo, y simple si es una combinación del mismo, al poder existir o -232-

265 no cada combinación se contemplan todos los casos para el grado de semejanza final. Combinación Peso sobre el total restante ( Si existe ) Total - Total 8/10 Total - Simple Simple - Simple 8 / 10 * 1 / nº comb resto * 1 / nº comb Tabla 5. Pesos y combinaciones para resultado final. El resultado final indicará la semejanza entre los dos nodos, s [0,1]

266 -234-

267 5.5 Algoritmo de reconstrucción de base de datos. Para poder adaptar todos los cambios en la base de datos que requieren los dos anteriores procesos es necesario codificar un algoritmo que soporte dichas operaciones y que garantice la integridad en la base de datos. Los contenidos que se van a analizar en este apartado son los siguientes: Figura 109. Esquema de Algoritmo de reconstrucción de la base de datos. Como entrada para este proceso se necesita la lista de entidades a ser eliminada junto a toda la información relevante a cual es la entidad que la ha calificado como redundante para poder traspasar relaciones o si ha sido borrada debido a -235-

268 relevancia. Se obtiene como salida de este proceso la base de datos con los conceptos y relaciones de las relaciones causales finales. Estas relaciones causales finales serán utilizadas por el algoritmo de generación de texto para crear lenguaje natural que parezca escrito por un ser humano. Se detallarán las herramientas usadas con justificación de la elección de las mismas para la implementación así como el algoritmo que acomete esta tarea en el apartado de implementación

269 5.5.1 Herramientas. Se utiliza la base de datos MySQL a través del interfaz gráfico para Mac MAMP que habilita los puertos de conexión para que se pueda acceder a la base de datos de forma sencilla desde el código. Se justifica el uso de estas herramientas por ser software libre y por su sencillez que permite una alta velocidad de implementación. Si los requisitos de acceso a la base de datos aumentasen se recomienda utilizar Oracle o IBM DB2 que requieren licencia. Figura 110. Logos de las utilidades elegidas. Para poder acceder a la base de datos se necesita un conector que desde el código Java acceda a la base de datos a través de la ejecución de sentencias SQL. Se descarga el conector desde la página web de MySQL

270 El gestor de base de datos utilizado es phpmyadmin que mediante una interfaz gráfica facilita la gestión de la base de datos en lo referente a creación de tablas, modificación de las mismas, relaciones, importaciones y exportaciones, etc... Figura 111. Interfaz gráfica para la gestión de tablas de phpmyadmin. A través de clases DAO, se codifican en métodos las diversas funcionalidades que acceden a la base de datos y se agrupan todas estas clases en un paquete único de tal forma que todo el código que accede a datos esté centralizado en un solo paquete

271 5.5.2 Implementación. El algoritmo de reconstrucción de la base de datos cuenta como entradas con la lista de relaciones semánticas entre nodos que contiene las entidades a eliminar y una conexión a la base de datos. El proceso de reconstrucción es el siguiente: Se recorre con un bucle la lista con relaciones que contienen las entidades a borrar. En cada iteración, primero se pregunta por cual es la entidad a borrar, información contenida en cada instancia de relación semántica. Se obtiene el resto de su información con una query a la base de datos. Se obtiene también toda la información del nodo en el que se insertarán las relaciones del nodo a borrar. Llegados este punto se ejecutan dos métodos en orden secuencial, uno de ellos se encargará de modificar las relaciones de causa y el otro de modificar las relaciones de efecto. La codificación es similar, por lo que se presenta tan solo la funcionalidad de uno de estos métodos, siendo el otro su complementario

272 Algoritmo 9. Fragmento de código del algoritmo de reconstrucción de la base de datos. Se obtiene toda la información de las relaciones de causa o efecto dependiendo de la entidad a borrar con otra query a la base de datos y se depositan en un Result Set que se recorre mediante un bucle. Para cada relación, se verifica la existencia de dicha relación en el nodo al que vamos a insertar las causales. Por ejemplo, el nodo a borrar tiene como identificador A y tiene una relación cuyo efecto es el C. Por otro lado el nodo en el que se inserta la relación, de identificador B, tiene también una relación cuyo efecto es el C. En este caso la verificación codificada informaría sobre la existencia de dicha relación. Si se verifica que la relación existe en el nodo a insertar, se elimina de la base de datos la relación entre el nodo a borrar y el nodo final. El nuevo grado borroso será calculado con el proceso comentado en el diseño del sistema. La implementación es directa con esos requisitos

273 Una vez traspasada esta alternativa se modifica mediante una sentencia UPDATE el grado modificado en la base de datos y si la relación no existe en el nodo a insertar se modifica el campo de efecto o causa dependiendo del método en el que nos encontremos también. Ejecutadas estas acciones tanto para las relaciones de causa como para las causales de efecto se invoca a un método que marca la entidad como procesada en la base de datos, sin eliminarla. Para esto sirve el campo Id_Ent_Proc de la tabla Concepts. Algoritmo 10. Método con la funcionalidad de procesar la entidad. Se sale del bucle inicial tras procesar todas las entidades según los pasos anteriores y se entra en otro bucle que se prepara para eliminar definitivamente a las entidades procesadas en la base de datos. Se recorre la lista de Relaciones Semánticas y se pregunta en cada caso cual es la entidad eliminada, obteniendo la información de la misma desde base de datos. Con esa información se ejecuta una sentencia DELETE final que elimina la entidad de la tabla Conceptos. En este punto el alcance del sistema planteado para este proyecto estaría completo a falta del algoritmo de generación de lenguaje natural que se comenta a continuación

274 -242-

275 5.6 Algoritmo de generación de lenguaje natural. Se contemplan en este punto todas las técnicas utilizadas para la creación de lenguaje natural, desde la creación de nuevo lenguaje a partir del previo hasta la generación de lenguaje natural en función al estructurado de la base de datos. Figura 112. Esquema de Algoritmo de Creación de Resumen. Para la creación de nuevo lenguaje se propone extraer la información de la base de datos mencionada y someterla a un proceso de conversión de las entidades, una vez se hallan sustituido estos conceptos se actualizará la base de datos con la nueva información. Acto seguido, se codifica un algoritmo que gracias al uso que éste da de la herramienta Java SimpleNLG y mediante el uso de una gramática generativa que este contiene crea texto en lenguaje natural

276 Este proceso genera contenido a partir de los términos ya analizados en forma de tokens gracias a la construcción de un pequeño algoritmo usando Wordnet que extrae las causales de la base de datos junto a sus modificadores y clasifica los términos por tipo de palabra ( sustantivo, adjetivo, verbo o adverbio ) y el rol con el que actuará en la frase final ( sujeto, complemento directo, indirecto, objeto, modificador, etc... ). Se da cobertura a los distintos algoritmos que intervienen en la creación de lenguaje natural, tanto la sustitución por sinónimos puros como el análisis morfológico y sintáctico, seguido de la final creación de frases utilizando la herramienta SimpleNLG

277 5.6.1 Herramientas. El generador gramatical elegido ha sido SimpleNLG por su facilidad de integración en el sistema y su compatibilidad con el análisis morfológico diseñado previamente. Diseñado para su integración en Java y con un buen tutorial ha sido la opción elegida debido a la alta curva de aprendizaje para su uso. Además, SimpleNLG es software libre. Figura 113. Tutorial Online de SimpleNLG Como diccionario se usa el NIH Specialist Lexicon, fichero de más de 300 MB con material médico

278 Figura 114. Gráfico disponible en la web del Lexical Systems Group Se utiliza Wordnet junto a Java para diversas utilidades en el análisis morfológico debido al uso anterior de Wordnet que hace que no requiera más tiempo para el aprendizaje de una nueva herramienta

279 5.6.2 Implementación. Se detallan los distintos algoritmos que intervienen en la creación del resumen. Sustitución por sinónimos puros. El algoritmo que se propone es a modo de utilidad, más como anécdota que como implementación final, pero como posibilidad de que es factible la implementación de este tipo de procesos: Un primer bucle recorre ambas listas de conceptos y relaciones de la base de datos en paralelo mediante dos índices. Se utilizan también flags que controlan que no se excedan las sustituciones planteadas. Se entra en un posible segundo bucle que recorrería el número de palabras de las que se compone cada concepto. En la práctica, un nodo del grafo contiene un máximo de 3 palabras, por lo que el número de iteraciones en este bucle sería pequeño. Para cada palabra del concepto, se extraen todos sus posibles sinónimos mediante Wordnet. Un tercer bucle recorrerá todos estos candidatos a ser sinónimos puros. Para cada candidato, se extraen todos los synsets en los cuales este está contenido. Se entra en un cuarto bucle que recorre los synsets de este candidato. Para el concepto inicial, se extraen todos los synsets en los que este se contiene. Un cuarto bucle recorre los synsets del concepto inicial. En cada iteración de este bucle final se comparan los synsets de ambos términos. Si estos son iguales, definiéndose un synsets igual a otro al que posea exactamente los mismos términos, entonces el candidato es un sinónimo puro del concepto original. Al ser un sinónimo puro, no hay que efectuar ninguna -247-

280 modificación en el grado borroso. Se efectúa el mismo procedimiento para los grupos verbales. En caso de producirse este suceso, se sale automáticamente de los cuatro bucles internos para sustituir un nuevo concepto. Si se han excedido las sustituciones totales se sale del último bucle superior. Análisis morfológico y sintáctico. Una breve descripción del algoritmo es la siguiente: En primer lugar extraigo las causales de la base de datos con una sentencia sql junto con todos los posibles modificadores que aplican a la causal, como puede ser intensidad o localización del concepto. Dicha información queda almacenada en un Result Set. De esta forma tenemos pares de conceptos enlazados por la relación que forma la causal referida. Recorro el Result Set mediante un iterator. En cada iteración inicializo una instancia de la clase Frase que se compone de una lista de conceptos cuya información se va asignando en función de la existencia de estos modificadores. La clase concepto contiene la parte de la oración de cada palabra que aplica al concepto. Para extraer la parte de la oración utilizó Wordnet ayudado por la estructura del grafo. De esta forma el antecedente siempre será el futuro sujeto de la frase, el consecuente el objeto de la misma y el modificador de la relación actuará como el verbo. Toda esta información sería inmediatamente almacenada en cada concepto que formaría esa frase, a modo de tokens para saber cómo tenemos que traspasar la información posteriormente al generador gramatical. En cada iteración se añade cada causal con la estructura de una frase a una lista enlazada, para el posterior tratamiento de la misma con Wordnet

281 Los complementos de sujeto y objeto se almacenan como adjetivos referenciando cual es el sustantivo modificado. Los modificadores del verbo se almacenan como adverbios que acompañan a dicha partícula. Generación de lenguaje natural. Con dicha información almacenada en estructuras de datos apropiadas, ya tan solo necesitamos crear una frase sintácticamente correcta. Se codifica otro algoritmo que recibe las entradas comentadas y las va insertando en las estructuras de datos de SimpleNLG, elaborando este frases sintácticamente correctas en distintas formas, como por ejemplo pasiva o activa. El procedimiento es el siguiente: En primer lugar SimpleNLG necesita un léxico con el que trabajar. Al desarrollar esta información para el ámbito médico se lee un léxico especializado en este contexto, el NIH Specialist Lexicon, un fichero de datos de más de 300 MB que contiene un gran número de términos especializados. Tras esto creamos una factoría, que es la encargada de la generación de las estructuras y un realizador, que transforma dichas estructuras propias de SimpleNLG a texto en lenguaje natural. Algoritmo 11. Constructor que utiliza el léxico por defecto. A continuación, creamos un constructor de cadenas de texto con Java y recorremos mediante un bucle la lista construida en el procedimiento anterior

282 En cada iteración, creamos un objeto SPhraseSpec de SimpleNLG mediante la factoría, que es el esqueleto de la futura frase al que hay que traspasar la información de la frase que tenemos en nuestra estructura de datos. En este momento, recorremos mediante otro bucle los conceptos de los que se constituye nuestra clase. Para cada concepto, preguntamos la parte de la oración a la que pertenece y el tipo de palabra que es. En función de esta información creamos frases mediante los distintos métodos de la factoría de SimpleNLG. Algunos ejemplos se plasman a continuación: Si es el sujeto u objeto se crea una frase nominal, guardando el rol de la misma en cada caso. A estas frases nominales se les añaden los adjetivos a modo de modificadores. Si es el verbo de la relación, se crea una frase verbal, si se detecta un adverbio, se le añade como modificador de este verbo. Al tener las relaciones un grado borroso, se establece en función de este valor una adverbio asociado que represente este significado. Por ejemplo: Si el grado borroso es 0.8 se le asocia Normally. Una posible implementación en Java es la siguiente: Algoritmo 12. Grados usados para el orden parcial

283 Se tiene en cuenta la posición en la frase en la que dichos adverbios deben estar localizados para la construcción de las frases. Terminado el bucle interno de conceptos en una frase, SimpleNLG posee la formación de esta frase según sus estructuras de datos. La única acción restante es añadir las frases nominales y verbales a una frase superior, de tal forma que está se compondrá de ellas. Si es la primera o última frase, se le añadirá un modificador frontal que consistirá en una frase nominal cuyo objetivo es el de servir a modo de introducción y cierre de resumen. De modo aleatorio, se añadirán características que modificarán la estructura de la frase, como por ejemplo que esta venga reflejada en voz pasiva o activa. Adicionalmente se puede hacer que de modo aleatorio se concatenen dos antecedentes que resulten en el mismo consecuente guardando esta información en los bucles anteriores. Todas estas medidas favorecen a una mayor impresión de que el texto ha sido escrito por una persona y no por un ordenador. Algoritmo 13. Parámetros adicionales para la creación de frases. Por último, se añade el texto de cada iteración del bucle en el constructor de frases. De esta forma se va creando en este constructor el resumen final

284 Una vez finalizado el bucle exterior ya tenemos todo el resumen generado a partir de las causales contenidas en la base de datos. Se persiste el resumen en la base de datos planteada y se da por terminado este proceso

285 5.7 Conclusiones. Como producto final habremos obtenido la base de datos compresa según la tasa introducida y un grafo que contiene todas las causales originales para que sean tratadas por un trabajo posterior. Frente al resultado previo a este trabajo se ha realizado una limpieza de toda la posible redundancia existente entre los términos del grafo, lo que facilita su lectura y tratamiento. A continuación se proporciona un ejemplo sobre los resultados que se pueden obtener con la herramienta si se sigue la implementación y el diseño propuesto sobre el grafo con las relaciones causales que se obtiene en el trabajo previo desarrollado por los directores: Figura 115. Grafo de relaciones causales de entrada al proceso -253-

286 Figura 116. Grafo de relaciones causales obtenido con una de las posibles combinaciones. The summary will explain that sometimes bleeding is caused by lung cancer. Lung cancer causes severe complications sometimes. Resumen obtenido en una primera versión del algoritmo de generación de lenguaje a partir del grafo de la figura anterior. Se puede obtener un resumen distinto para cada una de las configuraciones por lo que el posterior apartado de evaluación y pruebas de esta memoria analizará algunos de los resultados obtenidos con distintos parámetros y distintas métricas para la evaluación de resúmenes sobre una colección de casos de prueba que se planteará específica para este problema

287 Capítulo 6. Evaluación y pruebas. Siguiendo la metodología descrita en anteriores apartados para elaborar la documentación de este proyecto fin de carrera se aborda la última etapa en el ciclo de vida clásico de desarrollo del software, la evaluación y pruebas del mismo. En realidad, como se comenta en la primera parte de este documento, la metodología que se sigue, una combinación entre Xtreme Programming y el método científico de investigación, ha requerido de hacer pruebas unitarias continuas a cada fragmento de código escrito, pero sí que se ha reservado un gran espacio temporal en la planificación del proyecto para abordar con gran profundidad esta última etapa de evaluación y pruebas. Figura 117. Ciclo de vida clásico en el desarrollo de aplicaciones. Etapa de Pruebas y Evaluación

288 La evaluación de esta tarea conlleva las mismas complicaciones que el diseño y desarrollo del sistema de resumen automático. Es difícil evaluar una actividad que de por sí tiene un alto carácter subjetivo. Aun así, existen métricas que hacen posible esta evaluación. Existe otra dificultad añadida y es que, como se ha visto en apartados anteriores, este resumen no es un resumen convencional sino que solo se centra en una particularidad del texto a analizar, en las relaciones causales del mismo, el conocimiento inherente en el texto. Por ello se van a definir métricas específicas para el resumen del mismo, sin las cuales sería imposible acometer esta tarea. Parámetros de carácter objetivo y necesarios para calificar la coherencia y cohesión de un resumen y en general de cualquier texto pueden ser la correcta colocación de los distintos párrafos o frases de los que está compuesta. Veamos un ejemplo: Figura 118. Ejemplos de evaluación de resúmenes. En el primer texto se puede observar como existen un gran número de párrafos y que su colocación es incorrecta, la evaluación del resumen con respecto a la coherencia y cohesión serían negativas, en cambio, en el segundo caso se observa -256-

289 un resumen con un número más acorde de párrafos que aportan coherencia y con un orden en la semántica de la información que aporta cohesión. Esto necesita un gran data set de textos para que sean resumidos y un sistema de evaluación de los mismos, preferiblemente automático pero debido a las limitaciones existentes, también puede ser manual. En las procesos de evaluación que se detallarán a continuación se supervisan las dos modalidades, evaluación manual o evaluación basada en criterios de expertos y por data sets o de forma supervisada, evaluación por norma de oro. Esto interesa también para plantear un sistema de evaluación de la herramienta, en el que a partir de diversas ejecuciones con distinta configuración se va evaluando el resumen salida en cada una de ellas para finalmente quedarse con aquellos pesos que optimicen el proceso de resumen. En esta parte de la memoria se describirán todos los apartados descritos y se ejecutará el sistema para probarlo y evaluar las salidas obtenidas

290 -258-

291 6.1 Metodología de pruebas. En este apartado se va a comentar la metodología de pruebas que se va a seguir para la creación de este módulo en el sistema junto con los criterios que se van a evaluar y las herramientas que se van a implementar. Se van a utilizar tres conjuntos de causales capturadas en textos para ejecutar el módulo de pruebas, cada uno de los cuales será ejecutado con cinco configuraciones distintas de prueba que resulten las más lógicas para probar el sistema en general. Se creará una suite de pruebas con TestNG para ejecutar la herramienta con cada conjunto de causales y configuración distinta. TestNG es un framework de pruebas automatizadas basado en JUnit pero que incluye nuevas funcionalidades y resulta más fácil de utilizar. Se lanzarán desde un test de pruebas todas estas configuraciones directamente al sistema de resumen sin utilizar la interfaz gráfica, por lo que se implementará TestNG en Eclipse mediante un plugin para poder lanzar las pruebas automatizadas. El diagrama de flujo básico es el siguiente, sin detallar el módulo de evaluación y pruebas: -259-

292 Figura 119. Diagrama de flujo del módulo con entradas y salidas de este módulo. Una vez termine la ejecución de la herramienta se realizarán aserciones para comprobar si los criterios que se quieren evaluar son los que se esperaban o si bien la ejecución no ha concluido con resultados satisfactorios. Se obtendrá un informe detallado sobre el resultado de los tests. Se trata a la aplicación como si fuera un objeto de negocio. Los criterios que se van a evaluar en cada una de estas pruebas y las herramientas que facilitarán dicha tarea son los siguientes: Número de frases entre texto total y orden de las mismas: Para que el texto tenga coherencia y cohesión el número de frases debe tener cierta proporción ideal con el número total de palabras en el texto y el orden que se presentan debe ser el mismo que en el grafo. Realmente cada una de estas medidas será implementada en un test distinto pero la funcionalidad en ambas es medir la coherencia y cohesión del resumen. Para implementar esta tarea solo será necesario el framework de pruebas TestNG y algorítmica en Java. Corrección sintáctica del texto: Mediante un parser que se implementa desde Java en un test de TestNG se verifica que todas las frases creadas en el resumen por el -260-

293 proceso de generación de lenguaje natural son sintácticamente correctas. Este parser contiene una gramática independiente de contexto que simula a la gramática inglesa. Por su facilidad de ser invocado desde Java mediante su API y ser software libre se ha elegido la librería LanguageTool para implementar esta funcionalidad. Algoritmo 14. Código Java que invoca a las funcionalidades de LanguageTool. Tasa de compresión: Es necesario también saber si el resumen realmente cumple la tasa de compresión introducida por el usuario. Para ello se verificará si esta se cumple tanto en el tamaño del texto original comparado con el resumen obtenido como el número de causales que se obtienen en comparación con las originales. De nuevo, ambas comparaciones serán implementadas en distintos tests. Clasificación de texto según contexto: Es interesante comprobar si el resumen retiene la semántica del texto original. Con respecto a clasificación de textos según contexto la investigación sigue vigente y resulta una tarea muy complicada. Para simplificar esta tarea se propone el siguiente enfoque: Mediante la librería TextClassification API de Digital Peeble se pueden introducir textos junto a etiquetas que representan su contexto, por expertos

294 Figura 120. Logo de TextClassification. Con un gran conjunto de textos y sus respectivos contextos al introducir un nuevo texto la herramienta retorna el contexto de ese texto por aprendizaje supervisado. Se invoca a TextClassification para que guarde el contexto del texto original y luego se introduce el resumen para ver si mantiene el contexto, en el caso de mantenerlo habría pasado el test. Evaluación de resumen con ROUGE: ROUGE es un sistema de evaluación de resúmenes automáticos muy utilizado por la comunidad científica. Es necesario escribir una carta de motivación para que este sistema te sea concedido. Se escribió una carta con este propósito y se concedió desde Microsoft esta herramienta. La idea de ROUGE es determinar una medida de la calidad de un resumen comparándolo con otros resúmenes ideales creados por humanos. Para ello establece varios algoritmos que actúan como correlaciones y determinan la calidad del resumen. Figura 121. Resultado de ROUGE

295 Se establecerán dos resúmenes ideales, uno creado con las causales más relevantes según nuestro criterio en función al grafo de relaciones causales y las propias relaciones y otro elaborado con la herramienta OpenTextSummarizer, que hará el rol de regla de oro, pese a no ser específica para este problema por la causalidad, es una alternativa que puede utilizarse. Se describen tres algoritmos de ROUGE como medida para comprobar la calidad del resumen con respecto a otros resúmenes ideales, que se describen a continuación: ROUGE-N. N-gram Co-Occurrence Statistics: Mide la exhaustividad ( recall ) con n-gramas entre un candidato a resumen y un set de resúmenes ideales. Su expresión es la siguiente: Figura 122. Expresión matemática del Rouge-N. Donde n simboliza la longitud del n-grama, Count match es el número máximo de n-gramas que ocurren a la vez entre el candidato a resumen y el set de resúmenes referencia. El denominador actúa de normalizador. En el campo que nos ocupa, el Procesamiento del Lenguaje Naturaly la recuperación de la información se llama n-grama a una subsecuencia de n elementos consecutivos en una secuencia dada. Si n=2 se denominan bigramas; n=3, trigramas; para n>=4 entonces se llaman genéricamente n-gramas o Modelos de Markov de orden n

296 No es una medida del todo representativa ya que se crea lenguaje natural pero es de obligado uso para calificar a un resumen. ROUGE-W: Weighted Longest Common Subsequence: Basado en el algoritmo Longest Common Subsequence, que también implementa ROUGE y que básicamente devuelve una puntuación elevada si se encuentran muchas frases comunes en el texto Rouge W mejora este mecanismo al incorporar a la puntuación un criterio según el cual también contabiliza el orden de estas frases y como de consecutivas se encuentren. ROUGE-S: Skip-Bigram Co-Occurrence Statistics: Una medida muy interesante para comparar el resumen ideal con el candidato es determinar los skip-bigramas. Un skip-bigrama es cualquier par de palabras en su orden que ocurren en una frase permitiendo contenido libre en la misma frase. Por ejemplo, Police killed the gunman y police kill the gunman tendrían tres bigramas en común ( Police the, police gunman y the gunman ) esta medida es de muy buen uso para el resumen dado que siempre habrá antecedente, implicador y consecuente que tendrán que estar en común entre los ideales y el candidato. Existen extensiones a este algoritmo que modifican su comportamiento pero su base es común. Para ROUGE es recomendado no sustituir sinónimos puros, puesto que penalizaría la puntuación extraída de estos algoritmos. De forma adicional se verán y comentarán los resultados del resto de los algoritmos de ROUGE. Veracidad de la relación causal utilizando ConceptNET: Un último test que se podría ejecutar es comprobar si la relación causal obtenida existe en otra ontología, que tendría el rol de norma de oro. Por su gran alcance, se va a utilizar la ontología ConceptNET

297 Mediante su API se puede consultar si cada una de las relaciones causales obtenidas en el resumen existe en la ontología o no. En ningún caso el hecho de que no existan implica que el resultado obtenido pueda estar o no mal, pero si es recomendable que todas estas relaciones causales que no existen en ConceptNET sean contrastadas por un ser humano experto para comprobar la fiabilidad de la información obtenida. El test obtendría un porcentaje indicando la cantidad de información obtenida que ya existe en esta ontología. No se esperan resultados realmente buenos en todas las medidas dadas las características del sistema como por ejemplo que crea nuevo texto y solo recoge el conocimiento de un texto, pero aún así las medidas comentadas son las más relevantes con respecto al problema a tratar

298 -266-

299 6.2 Evaluación basada en criterios de expertos. En el formulario de presentación de resultados se propone la opción de persistir en base de datos una evaluación del resumen obtenido según la relevancia de los resultados ( exhaustividad ) y su precisión por el criterio de un experto. Figura 123. Formulario de Presentación de Resultados. La aplicación calcula automáticamente la F-Measure en función a estos dos valores y al parámetro β siguiendo la medida de efectividad de Van Rijsbergen. Esta se calcula según la siguiente expresión: Figura 124. Expresión de la F-Measure

300 Con respecto a los algoritmos de semejanza de Wordnet Similarities, para evaluar estas medidas un equipo especializado ha elaborado la siguiente lista que proporciona la correlación según su concepto de semejanza entre dos términos. Los resultados son bastante positivos y garantizan que se pueden usar estas medidas con éxito. M&G hace referencia a Miller y Charles y R&G a Rubenstein and Goodenough. Tabla 6. Resultado de semejanza usando diversos algoritmos

301 6.3 Colecciones de prueba. En el modo de pruebas exhaustivas se probarán distintas configuraciones sobre diversos textos para tener una visión global del funcionamiento de la herramienta. Los textos de entrada son los siguientes: Texto 1: In the United States,about 85 % of lung cancer deaths are due to smoking. \r\nevery year,about 3,000 nonsmokers die from lung cancer due to secondhand smoke.\r\nyour risk of lung cancer increases if you ''re exposed to secondhand smoke.\r\nabout 90% of lung cancers arise due to tobacco use\r\nalthough pleural plaques are not precursors to lung cancer,evidence suggests that people with pleural disease caused by exposure to asbestos may be at increased risk for lung cancer. \r\nalthough the association between radon exposure and smoking is not well understood,exposure to the combination of radon gas and cigarette smoke creates a greater risk for lung cancer than either factor alone. \r\nrisk of lung cancer may be higher if a person''s parents, siblings (brothers or sisters), or children have had lung cancer.\r\nradon gas causes lung cancer and is sometimes found in people''s homes.\r\nradon is the number one cause of lung cancer among non-smokers, according to EPA estimates.\r\noverall, radon is the second leading cause of lung cancer.\r\npeople who quit smoking have a lower risk of lung cancer than if they had continued to smoke, but their risk is higher than the risk for people who never smoked.\r\nif you smoke cigarettes, you are at much higher risk for lung cancer than a person who has never smoked.\r\nstopping smoking greatly reduces your risk for developing lung cancer\r\nif inhaled, asbestos particles can lodge in the lungs, damaging cells and increasing the risk for lung cancer.. Contexto: Médico. Título: Lung Cancer case

302 Texto 2: This is a recompilation of the causes and effects of livid cancer read on the Internet. It is important to know that obesity causes fatty liver in a 30% of the cases, moreover, heavy alcoholism rarely produces fatty liver but heavy alcoholism infrequently produces cirrhosis as well. Talking about the effects of fatty liver, it seldom produces death but it rarely degenerates in liver cancer, fatty liver causes cirrhosis sometimes, it has to be treated. Cirrhosis is the most common problem of the liver, usually, if a person has Hepatitis B or Hepatitis C then he will have cirrhosis, studies have shown that if he has Hepatitis A or Hepatitis E he will have cirrhosis with a 20% of probability. Bad habits as smoking causes liver cancer with a 20% of probability. Liver cancer is rarely also developed by birth defects. Cirrhosis commonly produces liver cancer and causes bleeding sometimes. Liver cancer is dangerous due to the fact that it produces death in the 55% of the cases. Bleeding caused by cirrhosis is also a cause of death sometimes.. Contexto: Médico. Título: Liver Cancer case. Texto 3: This is a text inspired by the famous case discussed in Ethic class Ford Pinto. When a CEO introduces a new product in the industry it has several options, new product options rarely are doing no quality test and unfrequently a fast manufacturing test is done. New product options normally imply doing a normal manufacturing process. If the organization is not meeting standards then incidents are occasionally caused by this behavior. No quality tests may produce incidents but no quality tests often imply being the first in the market. A fast manufacturing process rarely produces incidents but there are cases. Fast manufacturing processes often implies being first in the market. A fast manufacturing process is hardly ever the cause of losses because of things that are not done. Incidents are constantly the cause of jail or prison by the CEO''s that do not follow the security standards, but the temptation is the following condition: If company is being the first in the market then it will always earn profits for a short time. But jail or prison is always the cause of -270-

303 losses and human lifes, CEO''s have to be aware of the ethics of not following the security standards. Contexto: Judicial. Título: Incidents caused by a new product strategy. Se codifican en la base de datos las causales correspondientes a los textos anteriores de tal forma que el sistema de resumen automático pueda funcionar. Se codifican cinco codificaciones diferentes como la siguiente para probar que el sistema funciona en un test automático de TestNG. <?xml version="1.0" encoding="utf-8"?> <configsummary> <ontology> <ont name="wordnet" mode="on"/> <ont name="umls" mode="off"/> </ontology> <redundance> <relationships> <relationname name="synonymy" mode="on"/> <relationname name="antonymy" mode="off"/> <relationname name="hyponymy" mode="on"/> <relationname name="meronymy" mode="on"/> <relationname name="entailment" mode="on"/> <relationname name="verbgroups" mode="on"/> </relationships> <algorithms> <!-- Wordnet similarities --> <algred name="path Length" value="1"/> <algred name="leacock Chodorow" value="1"/> <algred name="wu Palmer" value="1"/> <algred name="resnik" value="1"/> <algred name="jiang Conrath" value="1"/> <algred name="lin" value="1"/> <algred name="adapted Lesk" value="1"/> <algred name="gloss Vector" value="0"/> <algred name="gloss Vector Pairwise" value="0"/> <algred name="hirst St Onge" value="1"/> </algorithms> </redundance> <relevance> <algrel name="tf" value="1"/> <algrel name="word Title" value="1"/> <algrel name="number Words Phrase" value="1"/> -271-

304 <algrel name="term Add Phrase" value="0.0"/> <algrel name="first Phrase" value="1"/> <algrel name="similar Keyword" value="0.0"/> <algrel name="is Keyword" value="1"/> <algrel name="entry Level" value="1"/> <algrel name="exit Level" value="1"/> <algrel name="pagerank" value="1"/> <algrel name="hits Authority" value="1"/> <algrel name="hits Hub" value="1"/> <algrel name="salsa" value="0.0"/> <algrel name="simrank" value="0.0"/> <algrel name="relevance Causes" value="1"/> <algrel name="relevance Effects" value="1"/> </relevance> <keywords> <context name="medico"> <keyword name="smoking"/> <keyword name="cancer"/> <keyword name="liver"/> <keyword name="lung"/> <keyword name="death"/> <keyword name="complications"/> <keyword name="hepatitis"/> </context> <context name="judicial"> <keyword name="market"/> <keyword name="prison"/> </context> </keywords> <compressionrate value="0.1"/> <modules> <modname name="summary" mode="on"/> <modname name="relevance" mode="on"/> <modname name="redundance" mode="on"/> <modname name="redundance Relationships" mode="on"/> <modname name="redundance Algorithms" mode="on"/> <modname name="norvig Corrector" mode="on"/> <modname name="summary Presentation" mode="on"/> <modname name="prolog" mode="off"/> <modname name="new Vocabulary" mode="off"/> <modname name="call Graphic Interface" mode="off"/> <modname name="rebuild Database" mode="on"/> <modname name="build Ontology" mode="off"/> </modules> </configsummary> -272-

305 Se quiere que el sistema pase todas las configuraciones con todos los textos por lo que el test codificado en TestNG será secuencial, presentando el siguiente general del sistema") public void generaltest() throws Exception { BufferedWriter bw = new BufferedWriter(new FileWriter("generalTestResults.txt")); System.out.println("Test General del Sistema"); System.out.println("========================\n\n"); for(int i=1;i<4;i++) //Ejecuto los tres textos { System.out.println("Analizando el texto nœmero " + i + ":"); System.out.println("==============================\n"); for(int j=1;j<6;j++) //Ejecuto las cinco configuraciones. { System.out.println("Texto nœmero " + i + ". Ejecutando configuraci n n¼ " + j + ":"); System.out.println("=============================================="); this.generateconfiguration(j); this.funcionejecutasistema(i); System.out.println("Texto nœmero " + i + ". Ejecutada configuraci n n¼ " + j + ". Comenzando bater a de tests."); System.out.println("========================================================================== ="); //Lanzamiento de los distintos tests. System.out.println("Texto " + i + ". Configuraci n n¼ " + j + ". Test 1. Verif. compresion ratio"); System.out.println("========================================================================== ="); this.funcionassertcompressionratio(); System.out.println("PASSED"); System.out.println("======"); System.out.println("Texto " + i + ". Configuraci n n¼ " + j + ". Test 2. Texto compresion ratio"); System.out.println("========================================================================== ="); this.funciontesttextcompressionratio(); System.out.println("PASSED"); System.out.println("======"); System.out.println("Texto " + i + ". Configuraci n n¼ " + j + ". Test 3. Causales. compresion ratio"); System.out.println("========================================================================== ="); this.funciontestcausalscompressionratio(); System.out.println("PASSED"); System.out.println("======"); System.out.println("Texto " + i + ". Configuraci n n¼ " + j + ". Test 4. An lisis sint ctico"); System.out.println("========================================================================== ="); this.funciontestanalisissintactico(); System.out.println("PASSED"); System.out.println("======"); System.out.println("Texto " + i + ". Configuraci n n¼ " + j + ". Test 5. Cohesi n texto, frases/texto"); System.out.println("========================================================================== ="); this.funcioncompruebafrasestexto(); System.out.println("PASSED"); System.out.println("======"); -273-

306 1 //Limpieza de la base de datos una vez probada la configuraci n en el texto. this.funcionlimpiarbbdd(); } } } Algoritmo 15. Batería de tests estándar. En definitiva, se ejecuta el sistema pasando el identificador del texto i, utilizando la configuración j. El método funcionejecutasistema también comprueba que la ejecución no ha tenido errores, llamando a un mockup de la aplicación para que solo se centre en el propio sistema sin utilizar la dependencia de la interfaz gráfica. public void funcionejecutasistema(int idtexto) { Main m = new Main(); String[] resultados = m.ejecutarapptesting(string.valueof(idtexto)); this.resumen = resultados[0]; this.text = resultados[1]; Assert.assertNotNull(this.text,"El texto devuelto por el sistema es nulo"); Assert.assertNotNull(this.resumen,"El resumen devuelto por el sistema es nulo"); Assert.assertNotEquals(this.text, this.resumen,"el sistema devuelve texto y resumen iguales"); } Algoritmo 16. Función ejecuta sistema. GenerateConfiguration va cambiando de configuración, teniéndolas todas almacenadas en el mismo directorio. public void generateconfiguration(int config) throws Exception { String rutafinal; rutafinal = CONFIG_ROUTE+String.valueOf(config)+FILE_EXTENSION; BufferedReader br = new BufferedReader(new FileReader(rutaFinal)); BufferedWriter finalconfig = new BufferedWriter(new FileWriter(DEF_ROUTE)); String lineaconfig = ""; lineaconfig = br.readline(); while(lineaconfig!=null) { finalconfig.write(lineaconfig + "\n"); lineaconfig = br.readline(); } } br.close(); finalconfig.close(); Algoritmo 17. Generación de configuración dinámica. El resto son tests automáticos en TestNG para hacer un control de calidad del texto, se verá algún ejemplo en el siguiente apartado

307 Se omite poner el resto de configuraciones en la memoria por ser simples variaciones de esta configuración utilizada

308 -276-

309 6.4 Plan de Pruebas. En este apartado se iniciará con una breve descripción de que pruebas se van a hacer tras lo cual se detallarán los resultados de las mismas. Se comentarán las modificaciones hechas al código fuente de la aplicación como resultado de bugs descubiertos gracias a la batería de pruebas. Como se ha visto en el anterior apartado, existe un método que prueba todos los textos secuencialmente, pero también se cuenta con otro método para probar la ejecución del sistema en un único el sistema de resumen autom tico") public void ejecutasistema() { this.funcionejecutasistema(1); } Algoritmo 18. Ejecuta sistema. Se codifica un método que se ejecuta siempre que se termina la suite de tests y que devuelve la base de datos al estado original, de esta forma se puede ejecutar el sistema de tal forma que la base de datos no se vea afectada. public void funcionlimpiarbbdd() throws Exception { conexbbdd.testingdropdatabase(); //Destruye la base de datos. conexbbdd.loadsqlscript(); //Restaura la base de datos. Assert.assertEquals(true,true); } private String ddbbfile = "SummaryTool/SQL/SQLATSCompleto.txt"; public void loadsqlscript() throws FileNotFoundException, IOException, SQLException { ScriptRunner runner = new ScriptRunner(this.conn, false, true); runner.runscript(new BufferedReader(new FileReader(OutputRutes.ROOT_ROUTE + ddbbfile))); } Algoritmo 19. Función Limpiar BBDD. Para ayudar a esta tarea se utiliza la clase descargada de Internet ScriptRunner y la utilidad de Exportar la configuración de la base de datos del gestor de base de datos MySQL. Los tests automáticos en la mayoría de casos son aserciones utilizando el framework de pruebas TestNG, pero en otros casos son tests más complicados que utilizan otras librerías, por ejemplo, el siguiente test utiliza LanguageTool para -277-

310 informar sobre los errores sintácticos del texto. Si detecta más errores sintácticos que frases se declara que el resumen generado no tiene la suficiente calidad. Se podría utilizar cualquier otra medida, pero se considera que esta es adecuada: public void funciontestanalisissintactico() throws IOException { System.out.println("Ejecutando test de an lisis sint ctico sobre el resumen."); System.out.println("Resumen = \""+ resumen +"\""); String[] frases = this.resumen.split("\\."); int numfrases = frases.length; int erroressintacticos = 0; StringBuffer mensajeerror = new StringBuffer(); JLanguageTool langtool = new JLanguageTool(Language.BRITISH_ENGLISH); langtool.activatedefaultpatternrules(); for(string frase : frases) { System.out.println("\nAnalizando la frase: " + frase); List<RuleMatch> matches = langtool.check(frase); for (RuleMatch match : matches) { String mensaje = "Phrase: " + frase + "\npotential error at line " + match.getendline() + ", column " + match.getcolumn() + ": " + match.getmessage() + "\nsuggested correction: " + match.getsuggestedreplacements() + "\n"; mensajeerror.append(mensaje); System.out.println(mensaje); erroressintacticos++; } } System.out.println("\nTest terminado. Nœmero de frases = " + numfrases + ". Errores " + erroressintacticos + "."); Assert.assertEquals(erroresSintacticos < numfrases, true, "Porcentaje de error: " + (erroressintacticos/(numfrases*100)) + ". Errores:\n" + mensajeerror.tostring()); } Algoritmo 20. Test Análisis Sintáctico. Se ejecuta la aplicación con estas configuraciones y textos para comprobar su funcionamiento. Los resultados obtenidos tras la corrección de bugs y mejora de funcionalidad de la aplicación completa son los siguientes: Caso ejemplo 1: Texto nº1. Configuración nº1. Tasa de Compresión = 0.3 Resumen obtenido: "Cigarettes smoking causes die lung cancer occasionally and lung cancer normally.tobacco use causes lung cancer constantly and die lung cancer infrequently.lung cancer causes die lung cancer seldom and fluid collect sometimes. It is important to end knowing that lung cancer sometimes causes severe complication." LONGITUD TEXTO = 1497 LONGITUD RESUMEN =

311 Como se puede comprobar el resumen es muy efectivo, concatenando frases que tienen sujetos iguales y objetos diferentes para formar coordinadas y así bajar la longitud del texto resultante, que es una de las nuevas funcionalidades que se han incorporado. Cada uno de los objetos conserva su adverbio de tiempo correspondiente al grado borroso sometido a un orden parcial. No necesita de iteraciones en el algoritmo de relevancia y redundancia para obtener la tasa de compresión deseada y finaliza satisfactoriamente en la primera iteración. El significado semántico es bastante preciso, distinguiendo que es diferente tener cancer de pulmón a morir a costa del cáncer de pulmón, contemplado en varias causales diferentes, se puede concluir que los resultados son muy positivos. En la siguiente prueba se fuerza a una cota muy extrema la tasa de compresión para dificultar la tarea del sistema, que resolverá igualmente su cometido. Caso ejemplo 2: Texto nº1. Configuración nº1. Tasa de Compresión = 0.1 Resumen obtenido: "Lung cancer is frequently caused by tobacco use.in conclusion severe complication is sometimes caused by lung cancer." LONGITUD RESUMEN = 118 LONGITUD TEXTO = 1497 De nuevo vuelve a funcionar, si bien está vez necesito 3 iteraciones del algoritmo de relevancia y redundancia. Una de las modificaciones inesperadas hechas al sistema tiene que ver con esto. Para favorecer la desaparición de las causales redundantes era necesario también repetir el análisis de redundancia. En un bucle, se repiten estos procesos dando en la primera iteración la funcionalidad de construir el top de causales y la redacción del texto y en la otra iteración se hace el análisis de redundancia y relevancia. Para lograr este efecto se utilizan variables -279-

312 booleanas. Este bucle se termina, recortando cada vez los conceptos que entrar en el top de causales, cuando se detecta que el resumen construido satisface las cotas marcadas. Desde el aspecto semántico el resumen obtenido es muy bueno, teniendo la causa más importante del cáncer de pulmón, el propio cáncer de pulmón que ha sido categorizado como el concepto más importante y la causa más probable y relevante según el análisis que son las complicaciones severas. Es importante destacar que se ha obtenido una causa, un efecto intermedio y un efecto final, por lo que se tiene idea de todo el texto, siendo el resto complementos. También es importante destacar que ninguno de los conceptos finales presentan significado semántico redundante. Es importante decir que por definición un buen resumen tiene tasa de compresión 0.15, el hecho de que el sistema funcione teniendo una tasa inferior hace que pase el requisito de que genere un resumen propiamente dicho. Los resultados obtenidos con otras configuraciones son similares y pasan los controles de calidad codificados. Caso ejemplo 3: Texto nº2. Configuracion nº1. Tasa de Compresión = 0.2 Resumen obtenido: "The main topic is the next one obesity causes hardly ever liver cancer.smoking seldom causes liver cancer. Birth defects develops infrequently liver cancer.to sum up liver cancer occasionally causes death." RESUMEN. LONGITUD RESUMEN = 206 RESUMEN. LONGITUD TEXTO =

313 Este texto como se ha generado en el resumen, trataba principalmente sobre las causas y efectos del cáncer de hígado. Ha sido un éxito también al ser incluidas en el 20% causas, el principal efecto y sus consecuencias como previamente se ha comentado. Se reduce ahora a un 30% para ver cuál es la información que se ha desechado en el intervalo. Caso ejemplo 4: Texto nº2. Configuración nº1. Tasa de Compresión = 0.3 Resumen obtenido: "The main topic is the next one obesity causes hardly ever liver cancer.liver cancer produces cirrhosis seldom and death occasionally.smoking seldom causes liver cancer. Birth defects develops infrequently liver cancer.it is important to end knowing that cirrhosis produces death sometimes and liver cancer frequently." RESUMEN. LONGITUD RESUMEN = 313 RESUMEN. LONGITUD TEXTO = 1050 Al aumentar la tasa se ve como nueva información antes desechada como no lo suficientemente relevante aparece, entre ella la cirrosis. Se ve que con este texto se puede obtener el anterior, por lo que hay coherencia en el proceso. Gracias a las frases subordinadas cabe mucha información que de otra forma sería desechada. Caso ejemplo 5. Texto nº3. Configuración nº1. Tasa de Compresión = 0.2 Resumen obtenido: What is discussed is that being first in the market is implied hardly ever by new product options.loss is never caused by being first in the market. Prison is constantly implied by incident.eventually, prison always produces loss

314 RESUMEN. LONGITUD RESUMEN = 231 RESUMEN. LONGITUD TEXTO = 1180 El último texto que se ha probado, el resumen es válido en lo referente a los grados borrosos de las causales, obteniendo grados prácticamente definitorios en causales como que la prisión implica cárcel. Es una prueba bastante importante de que a pesar de todos los cálculos que se desarrollan si una causal es clara esta se mantiene hasta el final de la ejecución de la aplicación. Se han comprobado todas las configuraciones para los tres textos obteniendo en todos los casos resultados satisfactorios

315 6.5 Conclusiones. Se concluye en que la implementación de la aplicación, pese a no ser idéntica al diseño planteado, ejecuta perfectamente el cometido para el cual se ha diseñado, lo cual es un hecho que entrañaba bastante riesgo en un inicio. Se han probado 3 textos distintos y 5 configuraciones para comprobar que la aplicación termina sin fallos y es capaz en todo momento de satisfacer la tasa de compresión que se introduce como entrada. En todas las pruebas la aplicación ha respondido como se esperaba y se han obtenido resultados satisfactorios, algunos de ellos se pueden consultar en el apartado anterior. El tratamiento del grado borroso funciona bien al combinar ambos análisis, el de redundancia y relevancia, de forma iterativa, lo cual en principio tampoco se sabía a ciencia cierta cómo funcionaría, pero los resultados son bastante optimistas. La generación de lenguaje natural gracias a la herramienta SimpleNLG y al algoritmo de creación de frases coordinadas y subordinadas funciona bien, dando una sensación de que los textos los puede haber escrito una persona. De todas formas, aún se puede seguir mejorando la creación de texto en este sentido. La herramienta EzGraph falla en ocasiones, quedando en dichas ocasiones sin medir distintas puntuaciones básicas para el algoritmo de relevancia como el PageRank o el HITS. No deja de funcionar el algoritmo de relevancia pero para todos los conceptos su puntuación es cero. para solucionar esto se recomienda que se debe cambiar esta librería por otra alternativa o codificar los algoritmos de cero

316 -284-

317 Capítulo 7. Conclusiones y trabajo futuro. La herramienta de resumen hace bien su trabajo y puede ser una parte de un sistema general, de tal forma que los textos de entrada que son tratados por el análisis sintáctico que descubre las causales puedan ser inyectados automáticamente a esta aplicación para que los procese. Pero aún así ese doble sistema podría a su vez ser solo otra parte de un sistema superior, que ofrezca un gran número de servicios al usuario final. En este apartado de la memoria se exponen brevemente ampliaciones al sistema completo que se pueden acometer como futuros proyectos teniendo este como base. En primer lugar se exponen si se han cumplido los requisitos que se planteaban en un inicio y en qué medida, tras lo cual se comentan estos futuros proyectos

318 -286-

319 7.1. Análisis de la consecución de objetivos. Se exponen brevemente los objetivos que se quería obtener al principio de proyecto y el grado de alcance que se le ha dado a cada uno de ellos: Es posible asignar una medida de relevancia a los distintos términos que se han estructurado del texto con el que se está trabajando? Se ha visto como el análisis de relevancia, en función al contexto y la configuración del usuario, asigna una relevancia a cada concepto que analiza. Este análisis es escalable y se podrían usar más técnicas con este fin. Es posible comparar a los términos contenidos en estas estructuras con el fin de poder encontrar una redundancia semántica entre ellos? Se ha visto que consultando a ontologías, desambigüando el sentido y utilizando métodos como los que se pueden encontrar en Wordnet Similarities se puede obtener una medida de semejanza entre dos acepciones de un significante. Es posible conservar el significado subyacente a un texto eliminando un gran porcentaje de la información que le define? Como es evidente, no todo el conocimiento o significado del texto se puede mantener, pero si el conocimiento expresado en causales mediante todo este sistema, que también discrimina cual es el más relevante, eliminando la información redundante. Es posible construir un texto en lenguaje natural de tal forma que parezca que un humano y no una máquina ha sido la autora del texto? -287-

320 Mediante la ayuda de una gramática generativa y de sucesivos análisis sintácticos y algoritmos es posible construir texto en lenguaje natural de tal forma que parece escrito por un ser humano. Para ello es necesario utilizar estructuras sintácticas complejas como oraciones coordinadas. Es posible diseñar un plan de evaluación que constituya una medida objetiva de una tarea subjetiva como es la del resumen de textos? Esta es la tarea más difícil, la mayoría de herramientas se basan en ingeniería inversa y son muy genéricas, dado que aquí solo se analiza el conocimiento expresado en causales. De todas formas es posible, mediante herramientas como ROUGE, hacer una evaluación genérica del resumen y diversos controles de calidad gracias a TestNG, correctores, etc

321 7.2 Análisis de las aportaciones. Se aporta la metodología de desarrollo de aplicaciones de resumen automático, que se tienen que centrar por un lado en extraer la información que se quiere analizar y pasarla a una representación que pueda ser procesada por un ordenador, NLU. A continuación se hacen análisis de relevancia y redundancia de forma iterativa y para finalizar se crea el lenguaje en texto natural, NLG. Por otro lado el tratamiento del grado borroso ha sido diseñado en exclusiva para este proyecto, junto a su expresión matemática, al igual que la matriz de comparación etc.. Todas estas aportaciones, junto al trabajo de compañeros y directores, han sido traspasadas a tres publicaciones para la comunidad científica

322 -290-

323 7.3 Trabajo futuro. En los próximos apartados se hace una breve referencia del trabajo futuro que se podría obtener a partir de este sistema Creación de un resumen multi-documento. Las causales que forman la tabla de conceptos y relaciones de la base de datos son guardadas en formato relacional, de tal forma que no originan ninguna información nueva en este formato. Para solventar este problema y hacer que esta información sea útil se tiene que crear un sistema experto con base de hechos y conocimiento dinámicas en función a estas causales que soporte lógica borrosa. Una posible arquitectura es controlar este sistema experto que sería escrito en Prolog a través de Java mediante Jpl y otras herramientas, otra posible alternativa es utilizar Jess. De esta forma, si analizamos varios textos que pertenezcan a un contexto similar podemos inferir nueva información gracias al sistema experto que iría siendo construido de tal forma que pudiese proporcionar la máxima información añadida. Esto puede ser muy útil y también podría generar un sistema de resumen multi-documento Algoritmo genético para calcular el valor óptimo de las constantes. Dependiendo del contexto, puede ser que unos criterios de los vistos en este trabajo sean más determinantes que otros. La única forma de establecer este criterio es mediante un algoritmo genético que determine en función a la evaluación del resumen frente al texto original el valor óptimo de cada constante multiplicada a estos parámetros para maximizar la calidad del resumen final

324 Para realizar este trabajo se necesita mejorar la evaluación actual, y se deberá ejecutar el sistema sobre grandes conjuntos de datos para recopilar información suficiente para el algoritmo genético Modelos Ocultos de Markov para Clasificación de Contextos Sería muy interesante elaborar una capa superior al sistema que clasifique automáticamente los textos entrantes en función al contexto para que, con ayuda del algoritmo genético, se les pueda aplicar automáticamente la configuración más adecuada en cada caso. Para ello sería útil emplear un modelo oculto de Markov o un algoritmo de aprendizaje supervisado si se tiene un gran conjunto de datos ya clasificados por contexto Creación de Ontología Borrosa. De la misma forma que se construye dinámicamente el sistema experto es posible almacenar también este conocimiento en forma de ontología, para lo cual habría que proponer un sistema que traslade el conocimiento que se obtiene a un RDF o similar e ir almacenando el conocimiento en la ontología Creación de un chatter-bot para interactuar con el usuario final. Este trabajo propone utilizar AIML para construir un chatter-bot que interactue con el usuario resolviendo preguntas que este le plantearía a través de un interfaz gráfico. Para resolver las preguntas del usuario el chatter-bot utilizaría la información contenida en la ontología o sistema experto. De esta forma el sistema se convierte en un sistema pregunta-respuesta, cuya interfaz de salida de -292-

325 información es más amigable que la simple presentación de un resumen a partir de la información de entrada. Supondría una capa superficial al sistema general, el chatter bot podría ser preguntado acerca de semejanzas entre términos, causas y consecuencias de acciones que le sean introducidas, el grado borroso que aplica a cierta relación causal, podría pedírsele que resuma un texto de entrada, etc Ejecución de diagnósticos basados en inferencia probabilística. Utilizado el mecanismo presentado en el apartado 2.1 de esta memoria, Matemática aplicada a la lingüística, o construyendo un sistema más avanzado de inferencia probabilística que utilice backward chaining, se podría dotar al chatterbot de un mecanismo que te diga a partir de una enfermedad, por ejemplo, cuáles han sido las causas y con qué probabilidad en cada caso para que aconteciese. Del mismo modo, a partir de una acción el sistema te diría la probabilidad de sufrir una enfermedad, una implicación legal, etc... Este tipo de sistemas de diagnósticos son utilizados en el sistema Watson de IBM con grandes resultados Interfaz web para la ejecución del servicio. Para terminar con todo el sistema y que este pueda ser accedido por todos los usuarios simultaneamente se necesitaría incorporar una capa web. De esta forma el conocimiento de entrada procesado por cada usuario se iría incorporando a la ontología o sistema experto si es validado como correcto mediante procedimientos de contraste de resultados. Se propone utilizar tecnología JavaEE, el framework Struts II con un modelo MVC para gestionar toda la página web y para que sea escalable el sistema y se -293-

326 puedan ejecutar las configuraciones independientemente del resto de módulos o dependiendo de los privilegios contratados por cada usuario se propone utilizar el framework de inyección de dependencias Spring. La base de datos subyacente donde se guardaría la información sería Oracle, por lo que en este sentido se necesitaría licencia. La capa de vista podría ser elaborada con jsp y los tags de Struts. Para la construcción del proyecto se utilizaría ant y bat o makefiles dependiendo del sistema operativo. El testing sería desarrollado al igual que en este proyecto con TestNG, pero también se realizarían pruebas funcionales con Selenium y de carga con JMeter. De esta forma el sistema quedaría en pleno funcionamiento y ofreciendo un servicio de muy alta calidad

327 Capítulo 8. Planificación y Presupuesto. Para terminar con esta memoria se exponen a continuación la planificación y el presupuesto que se elaboraron de forma inicial en el proyecto. Se ha respetado el límite impuesto de 300 h. para el proyecto. Las tareas han cambiado según se desarrollaba el proyecto, pero la duración ha sido similar por lo que se ha entrado dentro del límite impuesto. 8.1 Planificación. El siguiente diagrama de Gantt muestra la planificación que se ha seguido y que se propuse inicialmente. El único cambio que ha habido es que no se ha construido un sistema experto propiamente dicho sino que se ha desarrollado el algoritmo de reconstrucción de la base de datos utilizando la expresión del cálculo del grado borroso. Los demás plazos se han respetado tal y como dicta el diagrama. Figura 125. Planificación del Proyecto. Las horas dedicadas al proyecto no han sido constantes a lo largo de toda la duración del mismo pero se estima que se han dedicado unas 300 horas. En la planificación para cada tarea de las expuestas se incluye el tiempo dedicado a documentar