Full text
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA DEL SOFTWARE HERRAMIENTA PARA LA EXTRACCIÓN DE INFORMACIÓN SOBRE PUBLICACIONES CIENTÍFICAS A TOOL FOR SCIENTIFIC PUBLICATION RETRIEVAL Realizado por NAHUEL VERDUGO REVIGLIONO Tutorizado por EDUARDO GUZMÁN DE LOS RISCOS Departamento LENGUAJES Y CIENCIAS DE LA COMPUTACIÓN UNIVERSIDAD DE MÁLAGA MÁLAGA, JULIO 2015 Fecha defensa: El Secretario del Tribunal
Resumen: En este trabajo de fin de grado se presenta una herramienta que permite la extracción sobre las publicaciones científicas de diversos investigadores a partir de diferentes fuentes. La obtención de las mismas se realizara utilizando crawlers y extrayendo publicaciones de revistas indexadas en el JCR y conferencias del ranking CORE. Cada crawler puede ser ejecutado de manera particular o a través de un proceso principal. Las fuentes de información son: Web of Knowledge, Researchgate, Scopus y Google Scholar, pero dejando la posibilidad de añadir más implementando la interfaz apropiada. Toda la información recolectada se puede consultar a través de una interfaz web que proporcionara al usuario diferentes herramientas para visualizar estadísticas, la posibilidad de realizar comparaciones entre uno o varios investigadores, ver la relación que tiene con otros investigadores y centros, y ver las palabras claves más utilizadas en sus publicaciones. Este TFG ha sido financiado por el Vicerrectorado de Investigación y Transferencia de la Universidad de Málaga. Palabras claves: web crawling, ranking CORE, index JCR, recuperación de la información, extracción de datos, web of knowledge, researchgate, scopus, google scholar Abstract: In this final project, a tool that allows the extraction of scientific publications of several researchers from different sources is shown. The extraction of journal’s publications from the JCR index and conferences from the CORE ranking is performed using crawlers. Each crawler can be executed in a particular way or through a parent process. The sources of information are: Web of Knowledge, ResearchGate, Scopus and Google Scholar, but leaving the possibility of adding a new one that implements an appropriate interface. All information collected is available through a web interface that provides the user several tools to visualize statistics, the possibility of making comparisons between one or more researchers, see the relationship that a researcher have with other research or centers and see the keywords most used in their publications. This final project has been funded by the Vice-rectorade for research and knowledge transfer of the University of Málaga. Keywords: web crawling, data scraping, CORE ranking, JCR index, information retrieval, data extraction, web of knowledge, researchgate, scopus, google scholar
1 ÍNDICE 1 Introducción .................................................................................................................... 3 1.1 Objetivos ................................................................................................................. 3 1.2 Contenido de la memoria en capítulos .................................................................... 8 2 Tecnologías Utilizadas .................................................................................................... 9 2.1 Maven ..................................................................................................................... 9 2.2 Spring Security SAML ............................................................................................. 9 2.3 MongoDB y Morphia...............................................................................................10 2.4 JSOUP ...................................................................................................................10 2.5 Quartz ....................................................................................................................11 2.6 Bootstrap ................................................................................................................11 3 Análisis de requisitos .....................................................................................................13 3.1 Glosario ..................................................................................................................13 3.2 Análisis...................................................................................................................13 3.3 Requisitos ..............................................................................................................14 3.4 Actores ...................................................................................................................16 3.5 Diagrama de casos de uso .....................................................................................16 4 Diseño ...........................................................................................................................19 4.1 Descripción de los casos de uso ............................................................................19 4.2 Modelo de clases ...................................................................................................27 4.3 Matriz de trazabilidad .............................................................................................28 5 Implementación .............................................................................................................29 5.1 Proyecto .................................................................................................................29 5.2 Extractores .............................................................................................................31 6 Conclusiones .................................................................................................................41 6.1 Resultado final y conclusiones ...............................................................................41 6.2 Planes futuros ........................................................................................................42 7 Bibliografía .....................................................................................................................43 ANEXO I: MANUAL DE USUARIO .......................................................................................45
2
Introducción 3 1 INTRODUCCIÓN En esta sección se informará, de forma resumida, del contenido de esta memoria de proyecto titulada “Herramienta para la extracción de información sobre publicaciones científicas”. 1.1 OBJETIVOS El objetivo principal de este proyecto es desarrollar una herramienta que permita extraer y visualizar información sobre las publicaciones científicas de diversos investigadores a través de sus perfiles y firmas en diversas plataformas, a partir de un listado de nombres de esos investigadores. La herramienta obtendrá sus publicaciones en revistas indexadas en el Journal Citations Reports (JCR) y publicaciones en conferencias indexadas en CORE Conference Ranking. A partir de ellas se podrá obtener diferentes estadísticas tales como: factor de impacto máximo conseguido por un investigador en un año, publicaciones organizadas por cuartiles o, firmas asociadas a un investigador, relación con otros investigadores o entidades, comparaciones entre investigadores, centros, departamentos y grupos de investigación, y palabras claves obtenidas de sus perfiles y publicaciones. Esta tarea se realizaría utilizando diferentes crawlers programados para realizar búsquedas en sitios webs que contienen información sobre publicaciones e investigadores. Los sitios a buscar serán: ResearchGate: red social dirigida a personas que investigan en cualquier disciplina, donde pueden cargar sus propias publicaciones, además de información relacionada con su área de conocimiento y competencias. A principios de este año ya contaba con más de 6 millones de usuarios. Scopus: es una base de datos bibliográfica de resúmenes y citas de artículos de revistas científicas, editada por Elsevier. En su base de datos cubre un total de 18.000 títulos de 5.000 editores diferentes, incluyendo 16.500 revistas. Web of Knowledge: es un servicio en línea de información científica, suministrado por Institute for Scientific Information (ISI), grupo integrado en Thomson Reuters. El conjunto de bases de datos combinados incluye 23.000 revistas científicas y académicas, 110.000 publicaciones en conferencias y cubre más de 40 millones de documentos. Google Scholar: es un buscador de Google especializado en artículos de revistas científicas, enfocado en el mundo académico. Se estima que contiene en total 160 millones de documentos a fecha de mayo de 2014. Para facilitar la representación y acceso a los datos obtenidos se desarrollará una interfaz web y las tareas periódicas necesarias para que los mismos sean correctos y estén actualizados.
Tecnologías Utilizadas 10 Ilustración 2.1: codeproject.com - How to integrate spring-oauth2 with spring-saml. Además SAML en este caso requiere seguridad a nivel transporte mediante SSL y firma y encriptación XML para la seguridad del mensaje. Los certificados y llaves utilizados fueron provistos por el Servicio Central de Informática de la Universidad de Málaga. 2.3 MONGODB Y MORPHIA Los extractores, a medida que van recolectando datos, necesitan guardar esa información en algún sitio; los requisitos del proyecto, a pesar de estar bien definidos, no se sabe cómo podrían variar en un futuro, ya sea, la cantidad o el tipo de información recolectada. El tratamiento de la información y los informes que se quieren obtener de ellas podrían ser más complejos también. Por ese motivo se escogió un sistema base de datos NoSQL orientado a documentos, en este caso MongoDB. En este sistema las tablas son suplantadas por colecciones y las filas por documentos. Tienen las ventajas de poder manejar enormes cantidades de datos, no generan cuellos de botella, escalamiento sencillo, rendimiento aceptable en máquinas con hardware simple. Para el mapeo de los objetos de Java en MongoDB y la persistencia se ha utilizado la librería Morphia, que ofrece una API para realizar consultas a la BBDD, validación de campos, anotaciones y clases para poder implementar DAO (Data Access Object) sin demasiada complicación. Durante el desarrollo del proyecto Morphia llego a la versión 1.0 totalmente compatible con la versión 3 de MongoDB. 2.4 JSOUP Esta librería, por su uso dentro del proyecto, se puede decir que es la base para la mayoría de los extractores. Se encarga perfectamente de obtener el código HTML (no lo que
Tecnologías Utilizadas 11 se visualiza) de la página que se desea, pero aparte de esto cabe destacar las siguientes funcionalidades: Seleccionar DOM de forma similar a la utilizada en jQuery, incluyendo por CSS. Manipular los elementos HTML, atributos y textos. Posibilidad de obtener y utilizar cookies en las solicitudes. Añadir un agente de navegación a las solicitudes. Estas ventajas junto a la facilidad de su utilización, convierten JSOUP en un elemento imprescindible en cualquier proyecto en el que se tengan que manipular archivos con código HTML. 2.5 QUARTZ La librería encargada de la planificación y gestión de tareas, mejora y nos aparta de complicaciones de tener que utilizar la clase java.util.TimerTask. Las características que lo hacen destacado dentro del proyecto, tanto para el presente o como un futuro si se necesitara más funcionalidades, son: Flexibilidad para definir los instantes de ejecución, con una nomenclatura similar a la de cron de Linux. API completa. Valido para aplicaciones Java EE. Almacenamiento persistente. Si se requiere, balanceo de carga al trabajar en modo clúster. Historial de ejecuciones de tareas. Su estructura se basa en tres componentes: 1. La tarea que implantará la interface Job. 2. El trigger, que se puede implementar o utilizar las implementaciones que vienen por defecto, se utilizará org.cuartz.CronTrigger que permite especificar instantes más concretos y utilizando expresiones de cron. 3. Y por último el scheduler, que es el que almacena y planifica las tareas en base a los trigger, realiza reintentos tras operaciones fallidas y gestiona el estado del sistema de planificación. Su configuración se realiza mediante un archivo llamado quartz.properties. 2.6 BOOTSTRAP Por último, y por nombrar también algunas de las tecnologías utilizadas en el diseño de la interfaz, hay que destacar el uso de conjunto de herramientas que contiene plantillas de diseños, tipografías, botones, menús desplegables y de navegación y otra gran cantidad de elementos. Hay que hacer especial mención en las siguientes utilidades frecuentemente recurridas a lo largo del diseño: Grid System de 12 columnas que puede ser responsivo si se requiere. Galería de iconos que representan multitud de acciones y son gratuitos.
Tecnologías Utilizadas 12 Utilización de Modal para desplegar diálogos y ventanas emergentes dentro de la pantalla. Tooltips para mostrar información de los botones y sus acciones. Bootstrap es fundamental para los desarrolladores que poseemos pocos conocimientos en diseño, ya que es un conjunto de buenas prácticas, nos ayuda a adaptar una forma de trabajo, en lo que se refiere a tratar CSS + HTML5, y existen multitud de webs donde se pueden visualizar ejemplos realizados con esta tecnología y adaptar a nuestros proyectos.
Análisis de requisitos 13 3 ANÁLISIS DE REQUISITOS 3.1 GLOSARIO JCR Es la publicación anual realizada por la empresa Thomson Scientific donde se evalúa el impacto y relevancia de las revistas científicas de ciencias aplicadas y ciencias sociales. CORE Conference Ranking Es un ranking de conferencias realizado por Computing Research and Education Association of Australasia, una asociación de departamentos de universidades australianas y neozelandesas de informática. iDUMA Servicio de identidad de la Universidad de Málaga, donde se realiza la autenticación centralizada. Entidad Hace referencia a cualquier institución que tenga investigadores a su cargo, como puede ser la UMA. Publicación Un texto científico hecho público a través de una revista científica o una conferencia. Fuente Nombre de la revista o la conferencia donde se realiza una publicación. 3.2 ANÁLISIS Antes de comenzar a listar los requisitos que se nos piden, los actores que tenemos en el sistema y los diversos casos de uso que vamos a tener que desarrollar, es conveniente introducir al lector en la situación que nos encontramos al comenzar el proyecto. Debido a la diversidad de fuentes (públicas o privadas) donde un investigador puede dar a conocer o compartir sus publicaciones, estar al tanto de todo lo que ha publicado se hace una tarea ardua que quita tiempo debido a los registros en webs, buscadores, comparación de títulos, comprobación de propiedad y otras tareas. A esto hay que añadir que no todas las fuentes muestran la misma información. Continuando esta tarea, se necesita poder cuantificar la cantidad y calidad del trabajo realizado por un investigador a lo largo de su carrera, no existe un modelo claro a seguir a la hora de hacerla. Una primera aproximación sería utilizar un factor que sea común a las publicaciones y que permitan hacer esta calificación. Existen dos listas a nivel mundial, índice JCR para las revistas científicas y CORE Conference Ranking para las conferencias internacionales que permiten conseguirla. A partir de este escenario surgen los EXTRACTORES, procesos que se encargarán de realizar esta tarea de asociar publicaciones a investigadores de forma automática. El proceso anterior tiene una gran complejidad que reside en la desambiguación de los nombres utilizados por los investigadores ya sea por su nombre en sí o por la firma utilizada por el mismo en las publicaciones. Para poder llevar un mejor control sobre el problema que se plantea, es necesaria una interfaz donde un investigador o responsables de la aplicación realicen tareas de mantenimiento para comprar que los datos en ella son correctos, tales como, comprobar firmas, perfiles y publicaciones obtenidas.
Análisis de requisitos 14 Esta interfaz a su vez servirá de apoyo para poder realizar otras funciones que puedan ser de utilidad a la hora de calificar al investigador dando las herramientas necesarias para tener una visión global del mismo o comparándolo con otro o un grupo de ellos. Esta aplicación tiene que poder ser accedida por múltiples plataformas, por lo que se opta que sea una APLICACIÓN WEB. Para facilitar las tareas de mantenimiento y poder obtener mejores resultados a medida que se avanza en el tiempo, se proponen PROCESOS PERIÓDICOS que, a partir de las diferentes acciones realizadas por un usuario de la aplicación, ejecutará un proceso. Este breve análisis se irá detallando y entendiendo mejor a medida que se avance dentro de esta sección. 3.3 REQUISITOS 3.3.1 REQUISITOS FUNCIONALES Aquí se van a listar los requisitos funcionales, que son los que determinan la funcionalidad de la aplicación y definen las acciones que pueden realizar los diferentes roles de la misma. Las listas están divididas según la categoría, un identificador, un nombre y una descripción para poder llevar una trazabilidad. Vamos a comenzar listando los requisitos de los extractores: Categoría ID Nombre Descripción EXTRACTOR EX1 Extraer perfiles El usuario podrá extraer todos los perfiles asociados a una institución. EX2 Extraer publicaciones de perfiles El usuario podrá extraer de un perfil en un rango de años dado. EX3 Extraer publicaciones de firma El usuario podrá extraer a partir de una firma en un rango de años dado. EX4 Extraer información investigador El usuario podrá extraer información complementaria de un investigador. A parte de los listados, también serán necesarios dos extractores auxiliares para poder generar la base de datos de revistas y conferencias con la que trabajaremos. ID Nombre Descripción EXR1 Extraer JCR El usuario podrá extraer toda la información sobre revistas del JCR. EXC1 Extraer CORE El usuario podrá extraer toda la información sobre conferencias del CORE. Listado de requisitos correspondientes a la aplicación web: Categoría ID Nombre Descripción APLICACIÓN WEB AW1 Realizar login Los usuarios deberán autentificarse en la aplicación. AW2 Realizar logout Los usuarios podrán salir de la aplicación. AW3 RU Perfil Los usuarios podrán ver y editar la información de su perfil, como es el caso de firmas y perfiles, siendo investigadores o de todos los investigadores siendo administradores.
Análisis de requisitos 15 AW4 Recibir firma recomendada La aplicación recomendará firmas a los usuarios, siempre que sea posible, en caso de no tener ninguna asociada o pocas. AW5 Ver estadística Los usuarios verán las estadísticas para un perfil dando la posibilidad de filtrar por años. AW6 Listar investigadores Los administradores podrán listar y buscar investigadores por centros/departamentos/grupos. AW7 Realizar búsqueda Los administradores podrán realizar búsquedas por grupos/departamentos/centros. AW8 Comparar búsquedas Los administradores en las estadísticas podrán comparar una búsqueda con investigador/grupos/departamentos/centros /entidad. AW9 Imprimir resumen Los administradores podrán extraer un archivo con los datos de una búsqueda. AW10 Ver relaciones Los usuarios en las estadísticas podrán ver relaciones con otras entidades e investigadores. AW11 Listar publicaciones Los usuarios en las estadísticas podrán listar todas las publicaciones en revistas o en conferencias asociadas. AW12 Ver publicaciones Los usuarios al listar las publicaciones de unas estadísticas podrán ver las mismas, las fuentes de obtención, filtrar, buscar, ordenar y ver un índice de fiabilidad. AW13 Validar publicación Los usuarios podrán validar publicaciones. AW14 Rechazar publicación Los usuarios podrán rechazar publicaciones. AW15 Cambiar fuente Los usuarios podrán cambiar la fuente de sus publicaciones. AW16 Imprimir publicaciones Los usuarios podrán imprimir un resumen de las publicaciones. Y estos serían los últimos requisitos funcionales que corresponden con los procesos periódicos: Categoría ID Nombre Descripción PROCESOS PERIÓDICOS PP1 Programar validación El sistema asociará las publicaciones validadas por los investigadores con ellos. PP2 Programar descarte El sistema descartará las publicaciones rechazadas por los investigadores. PP3 Programar extracción Por cada extractor, el sistema realizará una extracción de todas las publicaciones de todos los investigadores que tengan perfiles para ese extractor y pertenezcan a la entidad. PP4 Programar actualización perfil Por cada extractor, el sistema actualizará los perfiles nuevos añadidos. PP5 Programar actualización búsquedas El sistema actualizará todas las búsquedas de investigadores. PP6 Programar actualización fuente El sistema actualizará los cambios de revistas o conferencias de las publicaciones.
Análisis de requisitos 16 3.3.2 REQUISITOS NO FUNCIONALES Estos requisitos determinan restricciones o condiciones sobre las que se ejecuta o desarrolla el sistema. La lista de los mismos se hará en la tabla con una categoría del requisito, identificador y descripción. Categoría ID Descripción Seguridad RNF1 La autenticación se deberá llevar a cabo utilizando la iDUMA. Seguridad RNF2 No se permitirá que usuarios ajenos al sistema tengan acceso. Usabilidad RNF3 El sistema informará del resultado de realizar cualquier acción a través de mensajes por pantalla. Usabilidad RNF4 El sistema controlará los datos introducidos en los campos para evitar datos erróneos. Interfaz RNF5 Los extractores se podrán utilizar a través de una consola. Accesibilidad RNF6 El sistema podrá utilizarse en las versiones más recientes de los navegadores web Chrome, Firefox, Internet Explorer y Safari. Concurrencia RNF7 El sistema tendrá que manejar y controlar los accesos concurrentes a la base de datos. Hardware RNF8 El sistema tiene que ser capaz de utilizarse en cualquier plataforma Java 1.7 o superior con acceso a internet y una BBDD MongoDB. 3.4 ACTORES Describimos a continuación brevemente en qué consiste cada actor/rol del sistema. Usuario: Este actor representa cualquier persona que tenga acceso a la utilización de los extractores. No autentificado: Dentro de la aplicación web es todo aquel usuario que intenta acceder a la misma sin estar autentificado. Anónimo: Es el rol que tiene un usuario que no se le ha asignado ningún rol y que por lo tanto sus permisos no le dejan hacer prácticamente nada dentro de la aplicación, como es el caso del inicio de sesión por parte de un alumno. Investigador: Es un rol dentro de la aplicación web, y puede ser compatible con otros roles. Es cualquier investigador que su DNI coincide con los datos de un investigador perteneciente a la los que están guardados en la BBDD. Administrador: Es otro rol de la aplicación web, representa a las personas que pueden realizar tareas de mantenimiento o que trabajen directamente sobre los datos extraídos de la aplicación. Sistema: Representa la máquina donde estará corriendo el planificador de tareas. 3.5 DIAGRAMA DE CASOS DE USO Aquí se representan los diferentes diagramas de cada uso para cada categoría.
Análisis de requisitos 17 Ilustración 3.2: Diagrama caso de uso de la aplicación web.
Análisis de requisitos 18 Ilustración 3.1: Diagrama caso de uso del planificador de tareas. Ilustración 3.3: Diagrama caso de uso de los extractores.
Diseño 19 4 DISEÑO 4.1 DESCRIPCIÓN DE LOS CASOS DE USO En las siguientes tablas se recoge de forma detallada los casos de uso, no están expuestos todos los escenarios pero si los más destacados. ID U1 Caso de uso Realizar login Actores No autentificado Descripción Acceso típico a la aplicación. Precondiciones No haber iniciado sesión en la aplicación. Escenario principal 1. El usuario accede a cualquier url perteneciente a la aplicación. 2. Es usuario es redirigido a la web de autenticación de iDUMA. 3. El usuario introduce sus datos correctos en el formulario. 4. El usuario es redirigido a la url que solicitaba. Escenario alternativo 3. El usuario introduce sus datos de forma incorrecta. 4. El usuario es redirigido otra vez a la web de autenticación de iDUMA y esta muestra un mensaje de error en los datos introducidos. Requisito asociado AW1 ID U2 Caso de uso Realizar logout Actores Anónimo Descripción Cierre de sesión de la aplicación Precondiciones Estar autenticado en la aplicación. Escenario principal 1. El usuario accede al menú superior derecho de la aplicación y pulsa cerrar sesión. 2. El sistema cierra sesión en iDUMA y dentro de la aplicación. 3. El usuario es redirigido a una pantalla que muestra que ha cerrado sesión. Escenario alternativo 2. Ocurre un error en la comunicación con la iDUMA y no se cierra sesión correctamente. 3. El usuario es redirigido a una ventana que muestra que ha ocurrido un error. Requisito asociado AW2
Diseño 26 Descripción Guardar en BBDD todas las revistas del índice JCR. Precondiciones Tener acceso al ordenador donde se encuentra el extractor. Escenario principal 1. El usuario lanza ejecuta la aplicación. 2. El extractor guarda en BBDD todas las revistas del índice JCR. Escenario alternativo 2. Se produce un error durante la extracción de perfiles. 3. El sistema notifica por email al responsable de la aplicación de que ha ocurrido un error y crea una entrada con este en el log. Requisito asociado EXR1 El caso U22 sería similar al 23, haría referencia a Extraer CORE (EXC1) ID U23 Caso de uso Programar validación Actores Sistema Descripción Activar la tarea para validar obras. Precondiciones Realizarla cada 1 minuto, de lunes a viernes de 0 a 20 horas. Escenario principal 1. El sistema creará una entrada en el log de que ha comenzado. 2. El sistema activará el proceso. 3. El sistema creará una entrada en el log de que ha terminado. Escenario alternativo 2. El proceso falla durante su ejecución. 3. El sistema creará una entrada en el log de que ha fallado. 4. El sistema enviará un email al responsable de la aplicación con el fallo. Requisito asociado PP1 Por la similitud de los siguientes casos de usos al este último, estos serán descritos de manera abreviada indicando cuando serán programados. U24 - Programar descarte (PP2): Realizarla cada 1 minuto, de lunes a viernes de 0 a 20 horas. U25 - Programar extracción (PP3): Realizarla cada 1 vez cada dos meses dependiendo del extractor se hará en un mes par o impar y en la primera o tercera semana. Comenzando un sábado a las 0 horas. U26 - Programar actualización perfil (PP4): Realizarla cada X minutos desentendiendo del extractor y evitando que se ejecuten 2 al mismo tiempo para no cargar demasiado al servidor, de lunes a viernes de 0 a 20 horas. U27 - Programar actualización búsquedas (PP5): Realizarla de lunes a viernes a las 22 horas. U28 - Programar actualización fuente (PP6): Realizarla cada 1 minuto, de lunes a viernes entre las 20 y 22 horas. Están organizadas de tal manera que se ejecuten de forma simultánea las que menos tardan para dosificar la carga en el servidor.
Diseño 27 4.2 MODELO DE CLASES Se muestran los atributos más significativos. Ilustración 4.1 Diagrama de clases
Diseño 28 4.3 MATRIZ DE TRAZABILIDAD Ilustración 4.2 Matriz de trazabilidad
Implementación 29 5 IMPLEMENTACIÓN En esta sección se comentarán los problemas surgidos durante el desarrollo y las soluciones planteadas, tanto las que afectan al proyecto en general como a los extractores. 5.1 PROYECTO 5.1.1 ASOCIAR FIRMAS A NOMBRES Uno de los grandes problemas encontrados al comienzo del proyecto fue la asociación de nombres de perfiles o firmas encontrados en publicaciones y perfiles a investigadores. Este reside básicamente en: 1. Los nombres completos no se suelen utilizar por su longitud. Por ejemplo “Juan Ignacio Lopez Perez” puede utilizar el nombre “Juan Lopez Perez”. 2. En las firmas se tiende a abreviar el nombre, por ejemplo “Juan Lopez Perez” podría firmar como “J. Perez”. 3. Se utiliza el formato “Apellidos, Nombre” en muchas ocasiones. Es cierto que sin tener ninguna forma más para relacionar nombres, simplemente con dos cadenas de texto, es necesaria alguna herramienta o algoritmo que nos pueda dar un valor para poder calcular la similitud entre dos cadenas. Para conseguir esto se optó por no reinventar la rueda y utilizar una solución ya probada fuzzywuzzy-java 2 , una implementación que apoyándose en la distancia de Levenshtein 3 calcula la similitud de dos cadenas de texto sin tener en cuenta el orden, las mayúsculas y devolviendo un valor entre 0 y 1. A esta función se le realizaron cambios para que a la hora de calcular este valor tuviese en cuenta las tildes o caracteres como la “ñ”, las comas y las abreviaturas en el primer nombre. Ilustración 5.1 Resultados de ejecución de fuzzywuzzy-java A partir de 0.7 se puede decir, a través de la experiencia y los test realizados, que es un resultado aceptable. Sin duda alguna fue uno de los problemas que más se tardó en resolver. 5.1.2 CONCURRENCIA EN MONGODB Al comenzar las primeras pruebas de con los extractores trabajando de forma simultánea, mientras se actualizaban o modificaban investigadores y publicaciones Morphia comenzaba a dar errores de concurrencia al tratar de modificar dos objetos al mismo tiempo. Esto se debe a que la librería como forma de protección utiliza un control de concurrencia optimista: cada entidad mapeada en MongoDB lleva una variable de tipo Long con la anotación @Version que aumenta cada vez que es modificada. Al guardar un objeto 2 https://github.com/msubhash/fuzzywuzzy-java 3 Algoritmo que mide el número de operaciones de inserción, borrado y sustitución para convertir una cadena de texto en otra.
Implementación 30 comprueba que ninguna otra transacción haya modificado la entidad leída comparando esta variable. Si esto ocurre lanza una excepción del tipo: ConcurrentModificationException. Para evitar que esto ocurra, a la hora de guardar objetos que puedan provocar esta excepción se utiliza un try/catch dentro de un do/while. Ilustración 5.2 Ejemplo de código para control de concurrencia 5.1.3 COMPARTIR UNA CONEXIÓN A MONGODB ENTRE DAOS Otro problema que se encontró durante el desarrollo del proyecto, fue el coste en tiempo y memoria de crear una conexión con MongoDB cada vez que un DAO quería acceder, crear, modificar o borrar una entidad. Ilustración 5.3 Patrón singleton utilizado
Implementación 31 Al principio cada DAO tenía su objeto Datastore que es así como Morphia se encarga de realizar la comunicación con el servidor de base de datos, entonces cada llamada a algún método implicaba la creación de un nuevo objeto. La solución que se utilizó fue utilizar un patrón Singleton para que solo exista una instancia de la conexión y que solo exista un punto de acceso global a ella. 5.1.4 OBTENER POSIBLES FIRMAS En dos partes del proyecto era importante tener una función que permitiera conocer las posibles firmas que podrían pertenecer a un investigador. La forma más óptima que se encontró fue realizar una consulta sobre mongo que devolviera todas las firmas de las publicaciones del departamento del investigador y que esta firma al menos contuviese el primer apellido del investigador. Sobre las firmas encontradas se aplica el algoritmo de similitud de nombres, anteriormente comentado, y las que tengas un valor de similitud superior a 0.7 se consideran posibles firmas. 5.1.5 FIABILIDAD DE LAS OBRAS ENCONTRADAS Al listar las publicaciones era necesario tener un índice de fiabilidad, el administrador podría no conocer el investigador al que está consultando sus estadísticas y no saber si se puede confiar de los datos que está viendo. Por eso al guardar una búsqueda, cada lista de publicaciones o revista, se envuelve el objeto Obra en otro objeto llamado ObraUma que este tiene una variable que indica la fiabilidad de la misma. El cálculo de la fiabilidad se realiza teniendo en cuenta si los coautores de la misma pertenecen al departamento del investigador, comparando las firmas de estos con las firmas de la obra. También si la obra fue obtenida utilizando algún perfil del investigador. Y por último cada extractor tiene un peso asignado según su oficialidad (Web of Knowledge y Scopus > Researchgate > GoogleScholar) y que dependiendo de este tendrá más o menos fiabilidad. 5.2 EXTRACTORES 5.2.1 PROCESOS DE EXTRACCIÓN Para poder añadir un nuevo extractor es necesario que el sitio web donde se desea realizar crawling cumpla ciertos requisitos: 1. Disponer de perfiles de usuarios y que estos tengan publicaciones que al menos contengan año de publicación, fuente y título. 2. Se puedan listar los perfiles de una entidad, p.e. Universidad de Málaga. 3. Se puedan hacer búsquedas por autor. Una vez que se cumpla esto, el desarrollo del crawler se basa en la implementación de una interfaz llamada IExtractor. Que tiene los métodos utilizados para los procesos de extracción de todos los investigadores y de los procesos de actualización de los perfiles. Siguiendo este esquema, la tarea de añadir un nuevo extractor es trivial. Por lo tanto, para añadir un proceso periódico para extraer todo se extiende de la clase abstracta
Implementación 32 ExtraerTodoJob y para un proceso de actualizar perfil la clase abstracta ActualizarExtractorJob. Ilustración 5.4 Implementación de Scopus para actualizar un perfil Ilustración 5.5 Implementación de Scopus para extraer todo Los siguientes diagramas ilustrarán mejor los pasos seguidos por un extractor durante la extracción de todas las publicaciones de todos los investigadores del sistema. 1. Extraer todos los perfiles y realizar emparejamiento entre los perfiles y los investigadores. Ilustración 5.6 Diagrama de secuencia del primer paso
Implementación 33 2. Completar información de los investigadores que tengan perfiles para este extractor. Ilustración 5.7 Diagrama de secuencia del segundo paso 3. Extraer todas las publicaciones para cada investigador que tengan perfiles para este extractor. 4. Obtener posibles firmas para los investigadores que no tienen perfil en para este extractor. 5. Este último paso es similar al 3, se recorren los investigadores a los que se le ha encontrado una posible firma en el paso 4 y de la firma con mayor similitud se utiliza el método busquedaPorAutor(String autor) de la interfaz IExtractor. Los diagramas de ActualizarExtractorJob no se incluyen al ser similares a los de ExtractorTodoJob y variando en que su ejecución se realiza solo para un investigador, en lugar de todos.
Implementación 34 Ilustración 5.8 ilustración 5.9 Diagrama de secuencia del tercer paso
Implementación 35 Ilustración 5.10 Diagrama de secuencia del cuarto paso 5.2.2 FUNCIONAMIENTO DE LOS EXTRACTORES WEB Para comprender cómo funcionan los crawlers con las webs, se utilizará un ejemplo de un caso concreto, ya que el funcionamiento es común en la mayoría de los casos. En la imagen que se muestra a continuación se puede ver lo que nosotros vemos al acceder, lo que ve el extractor y lo que le interesa extraer. La configuración de dónde se encuentra cada uno de estos datos podría variar, por lo que existe un archivo de configuración general que permite cambiar en donde se busca la información de ser necesario. Además este archivo ofrece la posibilidad de adaptar los extractores a otras entidades. El ejemplo mostrado hace referencia a la web donde se muestra una publicación de revista en Google Scholar.
Conclusiones 42 Me ha ayudado a darme cuenta que soy autosuficiente y organizado, capaz de buscar una solución a los problemas que se me presentan. También autodidacta, al pasar varias horas leyendo, aprendiendo y documentándome para buscar las mejores opciones para el proyecto. En general, la experiencia obtenida en este TFG ha sido muy enriquecedora y cierra una etapa en mi vida al terminarlo, pero abre otra en la que quiero aspirar a más. 6.2 PLANES FUTUROS El desarrollo de la aplicación tanto web y de nuevos crawlers continúa para llegar más lejos en los resultados obtenidos. Las mejoras que se están haciendo o se plantean desarrollar son: Añadir crawlers específicos para otras áreas dentro de la entidad, como pueden ser algunos para repositorios de publicaciones más específicos de otras áreas tales como Humanidades y Arte, donde las publicaciones no son el único factor a tener en cuenta. Poder recomendar a los investigadores compañeros afines con los que poder publicar y hacer sugerencias de publicaciones necesarias para conseguir los requisitos de los sexenios. Utilizar algoritmos de aprendizaje para evitar cometer errores como los que ocurren a la hora de asociar un investigador con un perfil. Implementar un servicio web donde los investigadores interesados puedan compartir la lista de sus publicaciones.
Bibliografía 43 7 BIBLIOGRAFÍA http://wokinfo.com/citationconnection/ - The Citation Connection - Real Facts - IP & Science - Thomson Reuters - [Accedido el 1 de Marzo de 2015] https://www.deutschland.de/en/topic/knowledge/networks-partnerships/the-researchnetwork-researchgate - The research network ResearchGate - Deutschland.de - Your link to Germany - [Accedido el 1 de Marzo de 2015] http://www.core.edu.au/index.php/conference-rankings - Computing Research & Education - Conference Rankings - [Accedido el 1 de Marzo de 2015] https://www.mongodb.org/ - MongoDB - [Accedido el 1 de Marzo de 2015] https://eclipse.org/ - Eclipse - The Eclipse Foundation open source community website. - [Accedido el 1 de Marzo de 2015] http://es.wikipedia.org/wiki/Java_EE - Java EE - Wikipedia, la enciclopedia libre - [Accedido el 2 de Mayo de 2015] http://jama.jamanetwork.com/article.aspx-articleid=184519 - JAMA Network | JAMA | Comparisons of Citations in Web of Science, Scopus, and Google Scholar for Articles Published in General Medical Journals - [Accedido el 3 de Mayo de 2015] http://quartz-scheduler.org/ - Quartz Scheduler | - [Accedido el 15 de Mayo de 2015] https://jquery.com/ - jQuery - [Accedido el 12 de Mayo de 2015] https://maven.apache.org/ - Maven - Welcome to Apache Maven - [Accedido el 20 de Mayo de 2015] http://es.wikipedia.org/wiki/MagicDraw_UML - MagicDraw UML - Wikipedia, la enciclopedia libre - [Accedido el 13 de Abril de 2015] http://projects.spring.io/spring-security-saml/ - Spring Security SAML - [Accedido el 15 de Abril de 2015] https://github.com/mongodb/morphia - mongodb/morphia - GitHub - [Accedido el 2 de Marzo de 2015] http://logging.apache.org/log4j/2.x/ - Log4j - Log4j 2 Guide - Apache Log4j 2 - [Accedido el 5 de Mayo de 2015] https://github.com/yasserg/crawler4j - yasserg/crawler4j - GitHub - [Accedido el 7 de Abril de 2015] http://community.jaspersoft.com/project/jasperreports-library - JasperReportsLibrary | Jaspersoft Community - [Accedido el 23 de Mayo de 2015] http://www.stackoverflow.com/ - Stack Overflow - [Accedido a lo largo del desarrollo] http://www.movired.com/blog/quartz/ - Introducción a Quartz Framework. Planificador de Tareas - Movired Blog - [Accedido el 8 de Mayo de 2015] http://www.uma.es/personal-docente-e-investigador/cms/menu/gestion-pdi/sexenios-pdicontratado/ - Sexenios PDI contratado - Universidad de Málaga - [Accedido el 12 de Mayo de 2015]
Bibliografía 44 http://apps.webofknowledge.com/ - Web of Science - Please Sign In to Access Web of Science - [Accedido el 17 de Mayo de 2015] http://www.codeproject.com/Articles/598581/How-to-integrate-Spring-oAuth-with-SpringSAML - How to integrate Spring-oAuth2 with Spring-SAML – CodeProject - [Accedido el 28 de Mayo de 2015] http://xlinux.nist.gov/dads//HTML/Levenshtein.html - Levenshtein distance - [Accedido el 21 de Abril] https://en.wikipedia.org/wiki/RIS_(file_format) - RIS (file format) - [Accedido el 14 de Abril] https://es.wikipedia.org/wiki/Web_scraping - Web scraping - [Accedido el 28 de Junio] https://es.wikipedia.org/wiki/Ara%C3%B1a_web - Araña web - [Accedido el 28 de Junio] https://www.promptcloud.com/blog/data-scraping-vs-data-crawling/ - Data Scraping Vs Data Crawling | Web Crawling | PromptCloud - [Accedido el 28 de Junio]
45 ANEXO I: MANUAL DE USUARIO 1 MENÚ 1.1 OPCIONES MI PERFIL Muestra la información de su perfil de investigador dentro de la aplicación. Tenga en cuenta que esta información ha sido obtenida de forma automatizada y debe ser comprobada. NOTIFICACIONES Área donde se muestra la actividad de los coautores de las publicaciones. Estas podrían ser erróneas si no tiene su perfil actualizado. MENÚ PERSONAL Opciones adicionales del usuario. INVESTIGADORES Buscar investigadores y descargar resúmenes. GRUPOS PERSONALIZADOS Administración de los grupos personalizados. OTRAS BÚSQUEDAS Realizar búsquedas avanzadas de departamentos, centros, grupos personalizados y áreas de investigación. 2 MI PERFIL 2.1 PERFILES En esta apartado se encuentras los perfiles que el sistema ha encontrado basándose en su nombre. BORRAR PERFIL Si cree que alguno de los perfiles que se muestran no le pertenece, puede borrarlo pulsando el botón con una X.
46 AÑADIR PERFIL Puede añadir un perfil pulsando “Añadir perfil”. En el siguiente cuadro de diálogo podrá rellenar: Nombre: el nombre que aparece en el perfil. Id y Sitio Web: dependiendo del sitio web que desea utilizar el id lo puede obtener de la barra de direcciones del navegador, en negrita está marcado lo que debería utilizar. o ResearchGate: http://www.researchgate.net/profile/Ricardo_Conejo o ResearcherID: http://www.researcherid.com/rid/J-7272-2013 o GooleScholar: https://scholar.google.es/citations?user=4eo8Zj8AAAAJ o Scopus: http://www.scopus.com/authid/detail.url?authorId=6602861828 o ORCID: http://orcid.org/0000-0003-0810-4608 2.2 FIRMAS En esta apartado se encuentras las firmas que el sistema ha encontrado en relación a las publicaciones dentro de su departamento y a los perfiles asociados.
47 BORRAR FIRMA Si cree que alguna de las firmas que se muestran no se corresponde con su nombre o firma habitual, puede borrarla pulsando el botón con una X. AÑADIR FIRMA Puede añadir una firma pulsando en “Añadir firma”. En el siguiente cuadro de diálogo podrá rellenar con su firma y el portal correspondiente. RECOMENDAR FIRMAS En base a las firmas de las publicaciones de su departamento, el sistema le dará un listado de posibles firmas a utilizar. Para utilizar esta función pulse en "Recomendar firmas" , seleccione las que desee y pulse el botón “Añadir seleccionadas”.
48 2.3 ACTUALIZAR Una vez que haya actualizado su información referente a perfiles y firmas, puede solicitar una actualización de su perfil pulsando en el botón que se muestra a continuación. El tiempo que tarda en actualizar puede variar dependiendo del volumen de las actualizaciones pendientes. 2.4 VER ESTADÍSTICAS Para visualizar toda las publicaciones obtenidas a partir de sus datos y sus estadísticas, pulse el siguiente botón. 3 ESTADÍSTICAS 3.1 RESUMEN Visión global de las publicaciones en revistas/conferencias/etc. obtenidas.
49 3.2 MENÚ ACCIONES Listado de acciones disponibles a realizar desde las estadísticas. 3.3 VERSION IMPRIMIBLE Imprime un resumen de las publicaciones obtenidas (de momento solo imprime publicaciones en revistas). Para utilizar esta función presionar el siguiente botón: Se desplegará un cuadro de dialogo como el siguiente, donde podrá elegir el formato y otras opciones. 3.4 VER LÍNEAS Lista todas las palabras claves asociadas a sus publicaciones, cada una tiene una puntuación basada en un heurístico el cual a su vez se basa en los índices de calidad. Puede ordenar la tabla pulsando sobre las cabeceras de las columnas.
50 Para ver las líneas, pulse la siguiente opción del menú de acciones: Al final de la página se cargará una tabla como la que se puede ver a continuación: 3.5 VER PUBLICACIONES Lista todas sus publicaciones, con una puntuación basada en los índices de calidad. La fiabilidad es calculada de forma automática basada en los coautores, perfiles, fuentes de obtención. Puede ordenar la tabla pulsando sobre las cabeceras de la misma, para filtrar las columnas utilice expresiones regulares si lo desea. Para ver esta lista, pulse en la siguiente opción del menú de acciones: Al final de la página se cargará una tabla como la que se puede ver a continuación: VALIDAR PUBLICACIÓN Pulse en el icono con la mano y el dedo pulgar apuntando hacia arriba . RECHAZAR PUBLICACIÓN Pulse en el icono con la mano y el dedo pulgar apuntando hacia abajo . CAMBIAR FUENTE Pulse sobre el nombre la fuente y se desplegará un cuadro de dialogo como el siguiente:
51 Al desplegarse el cuadro de diálogo escriba el nombre o ISBN de la fuente y pulse sobre el correcto. Recuerde que deberá esperar a que sea aprobada su solicitud. VER MÁS INFORMACIÓN Pulse sobre el icono con forma de lupa para ver más información de la publicación . Se desplegará un cuadro de dialogo como el siguiente con la información de la publicación: