Reingeniería de una aplicación de minería de datos para el rastreo del talento altamente calificado en la Web
Resumen del tema de la maestría
Aportar modificaciones en cada etapa del proceso con la finalidad de mejorar los scores de precisión y cobertura de la tarea de predecir el estatus de mobilidad a partir de una base de datos de potenciales miembros de las diásporas altamente calificadas.
Objetivos
- Enviar un artículo a congreso en sept-oct-nov 2015
- Primera reunión científica: mayo del 2015
- Segunda reunión científica: julio del 2015
- Aprender francés y pasar el Delf A1
- Estancia tentativa en Paris 13: ene-feb 2016
Plan de trabajo
TODO: Producción de un artículo científico sobre Multilingual Web People Search para Enero del 2016
- Bibliografía
- Especialmente aquella relacionada con la tarea de Web People Search
- Planteamiento de la tarea
- Se parte de un conjunto de nombres de personas con atributos de tres tipos: afiliación, lugar geográfico y temática de trabajo.
- Se parte también del conjunto resultante de snippets que un motor de búsqueda produce al interrogarlo con
- Nombre de la persona
- Nombre de la persona + afiliación
- Nombre de la persona + lugar geográfico
- Nombre de la persona + temática de trabajo
- Los resultados producidos por el motor de búsqueda son multilingües, y en cada uno de ellos hay una variación válida del nombre de la persona.
- La tarea consiste en 1) agrupar los resultados del motor de búsqueda de acuerdo al número de individuos presentes en el conjunto de resultados y 2) extraer atributos biográficos de los individuos
- Nos interesamos en los mismos atributos que en la tarea Attribute Extracion de WePS, pero con la diferencia de que buscamos también extraer información de movilidad reciente (cuartetas <fecha, afiliación, lugar geográfico, profesión>, ejemplo: <2010, LIPN-Paris 13, Villetaneuse, Ingeniero de investigación>).
- Creación del corpus
- Nos interesa particularmente encontrar del corpus
- # Cuántas personas distintas hay en el corpus
- # Cuántos snippets hay por persona
- # Cuántos snippets hay en el corpus
- # El porcentaje de multilingüismo en el corpus
- Medidas de evaluación
TODO CRÍTICO (Ene 2016): ingeniería de software y reingeniería UnoporunO
Visualización de resultados
- Hacer funcionar la rama Galilée del UnoporunO disponible en github
- DONE
- Reproducir la funcionalidad de UnoporunO.Galilée en Spring & MVC empezando por la administración de usuarios, permisos y acceso a la base de datos
- Visualización de consultas y de personas por cada consulta (detalle de la consulta)
- Fecha de entrega: 1o de septiembre del 2015
- Visualización del detalle de las personas
- Visualizar todos los snippets correspondientes a una persona
- Filtrar por características semánticas
- # Presencia de elementos biográficos
- # Presencia de nombres de organizaciones
- # Presencia de un nombre propio en el URL
- # etc… (c.f. artículo de JAP TAL 2012)
- Fecha de entrega: 14 de septiembre del 2015
Meta motor de búsqueda
- Hacer funcionar la rama Galilée del UnoporunO disponible en github o los scripts Python que nos permitan lanzar procesos de consulta desde la línea de comando
- Responsables :Víctor, Jorge
- Fecha de inicio: entre el 1o y el 15 de octubre de 2015
- Detectar automáticamente el idioma de un snippet de Google (Víctor)
- DONE
- Responsable :Víctor
- Incorporar Stanford POS-Tagger a UnoporunO (en español y en inglés)
- DONE
- Crear un método para calcular la especifidad de una combinación nombre/apellido
- Responsables: Omar Kebli, Jorge
- Plazo: Hasta el 14 de septiembre
- Mejorar el proceso de aprendizaje que permite clasificar los snippets que podrían tener rastros de movilidad profesional (Víctor,Jorge, Iván)
- Responsables: Víctor, Jorge, Iván
- Plazo: octubre-noviembre 2015
- Agregar un cálculo de similaridad semántica entre la palabra clave y los snippets resultantes de la consulta
- Responsables: Jorge
- Plazo: octubre-noviembre 2015
- Constituir el corpus
- Reconstituir el corpus del experimento de JapTAL 2012
- Responsable: Jorge
- Plazo: Del 1 de abril al 30 de mayo
- Constituir un corpus con 1000 uruguayos/cubanos/mexicanos cuya condición de movilidad profesional sea previamente conocida
- Responsable: Jorge
- Plazo: Septiembre 2015
TODO: Administrativo
- Definir nuevo ciclo de reuniones con el Mtro. Gustavo Márquez Flores (Hecho)
- DELF A1 (dic 2015) y A2 (mayo del 2016)
DONE: Puesta a nivel en Linux
- Febrero 2015
- Instalar Ubuntu o en su defecto Arch Linux (y acá la doc de Arch Linux y UEFI con Windows 8.1)
- Marzo-Abril 2015
- Instalar Java
- Instalar node.js y Express.js (lúdico-experimental)
- Instalar Hybernate
- Mayo-Junio 2015
- Scripting bash (.sh)
- Julio-Agosto 2015
- Instalar servidor UnoporunO
- Instalar MySQL (MariaDB)
- Crear la BD de UnoporunO
- Instalar y correr UnopornO
Segunda Reunión con Mtro. Gustavo Arturo Márquez Flores y Dr. Jorge García Flores
- Proponer una metodología para el desarrollo de software.
- Establecer el patrón de desarrollo (posiblemente MVC).
- Establecer la metodología para el ciclo de vida del proyecto
- Problemática que el software resuelve.
- Definición de usuarios finales.
- Justificación de la latencia del sistema y comparación con la búsqueda manual.
- Benchmarking con versiones anteriores del sistema.
- Definición de requerimientos
- Requerimientos funcionales (Justificación del lenguaje y tecnologías a utilizar).
- Requerimientos técnicos (Equipos y servidor de desarrollo).
- Propuesta de pruebas con usuarios finales, Jorge propone tres usuarios especializados, <Nombre> de Canada, <Nombre> de Francia, y finalmente <Nombre> de Uruguay.
Microproyecto científico (enero-febrero 2016)
El objetivo del micro proyecto es:
- Repetir dos de los experimentos reportado en el artículo de JapTal 2012
- Implementar y evaluar el impacto de una modificación relativa al tratamiento de los nombres propios.
Los experimentos que hay que repetir son los correspondientes a las secciones 4.4 (Snippets classifiers evaluation) y 4.6 (Automatic MTC task evaluation) del mencionado artículo.
Evaluación de clasificadores de resultados Google
El primer experimento consiste en comparar una serie de clasificadores basados en aprendizaje automático en la tarea de estimar, a partir de un conjunto de resultados de búsquedas de Google, cuáles predicen con menor margen de error la calidad informacional de cada resultado. Los resultados Google (o snippets) han sido anotados de acuerdo a su estatus informacional (anotación binaria: 0 no contiene información, 1 contiene información, referirse a la tabla unoporuno_snippet). En el artículo de JapTal 2012 fueron comparados cuatro clasificadores, siendo SVM el que ofrecía el menor margen de error. El estudiante es libre de agregar otros clasificadores al experimento.
Evaluación de la clasificación automática de personas
El experimento de JapTal 2012 evaluaba la capacidad del sistema de predecir automáticamente el estatus de movilidad (dos categorías: local o móvil) de 50 investigadores de la base de datos UnoporunO cuyos estatus de movilidad se conocen previamente (25 móviles, 25 locales). Repetir el experimento implica echar a andar la rama master del sistema UnoporunO original desarrollado en Python. En términos de la figura 1 del artículo de JapTal 2012 esto implicaría hacer funcionar los tres módulos posteriores a Web Search (es decir: name filtering, feaure analysis y classification and ranking. Tras la clasificación automática de los snippets usando un SVM, un módulo se encarga de utilizar una heurística basada en topónimos para decidir si el investigador es móvil o local.
Implementación y evaluación de una mejora relativa a los nombres propios
Esta mejora consiste en:
- 1 Estimar la probabilidad de ocurrencia de un nombre propio: la probabilidad de los nombres propios muy comunes tenderá a 1 mientras que la probabilidad de los nombres propios poco comunes tenderá a 0.
- Aplicar esta estimación a los 50 investigadores del corpus de prueba.
- Evaluar el margen de error de la estimación.
- Ajustar la estrategia de procesamiento de los snippets antes de su clasificación: en los snippets provenientes de investigadores con un nombre poco común, se procesarán solamente aquellos que resultan de consultas (o queries) consistentes únicamente en el nombre propio. Por el contrario, para los snippets correspondientes a personas con un nombre muy común, se privilegiarán aquellos que resulten de queries de tipo NOMBRE DEL INVESTIGADOR + TEMA DE INVESTIGACIÓN.
- Comparar la clasificación automática sin preprocesamiento de nombres propios con la que cuenta con dicho preprocesamiento
Resultados esperados
- Tabla comparativa de los distintos clasificadores aplicados al corpus de prueba (50 investigadores uruguayos: 25 móviles y 25 locales), es decir, el equivalente de la tabla 7 del artículo de JapTal (sólo las columnas relativas a la precisión del Top-5 de snippets (P@5), de la cobertura (o recall) de los top-5 snippets (R@5) y de la F-measure de los Top-5 snippets (F@5); las columnas relativas al ODR pueden ignorarse.
- Tabla 9: concentrado de la clasificación automática de personas en el corpus de prueba y test de ablación para estimar la contribución de cada descriptor (o Feature).
- Tabla 9 correspondiente a la versión con la mejora relativa a los nombres propios.
- Una presentación científica de 10 minutos bien estructurada, con la descripción de la metodología y los resultados de estos experimentos para ser defendida el viernes 26 de febrero en la sala de juntas del IIMAS.
Recursos
- Hay una versión funcional de UnoporunO (rama Galilée) instalada por Omar Kebli, funcionando en la dirección siguiente: http://tal.lipn.univ-paris13.fr/unoporuno/. La búsquedaid = 111 (tabla unoporunobusqueda) contiene el corpus de prueba con los 50 investigadores (y sus respectivos snippets). La busqueda_id=99 contiene a los 931 investigadores del corpus de aprendizaje (con sus respectivos snippets). * Todo lo necesario para hacer funcionar la rama master de la versión original de UnoporunO está en el repositorio github de UnoporunO ===== Bibliografía ===== ==== UnoporunO ==== - J. J. Garcia Flores, Pierre Zweigenbaum, Zhao Yue and W.A. Turner (2012) Tracking Researcher Mobility on the Web Using Snippet Semantic Analysis. In H. Ishara & K. Kanzaki, Advances in Natural Language Processing 8th International Conference on NLP, October 22-24, Kanazawa, Japan. (JapTAL 2012) Springer Lecture Notes in Computer Sciences, vol. 7614, ISBN 978-3-642-33983-7, pp. 180-191 y diapositivas y código fuente de la nueva versión - J. Garcia-Flores & W.A. Turner (2011) A Nominal Filter for Web Search Snippets: Using the Web to Identify Members of Latin America’s Highly Qualified Diaspora. In I.Z. Batyrshin & G. Sidorov, Mexican International Conference on Artificial Inteligence (MICAI 2011), IEEE press, ISBN: 978-1-4577-2173-1, pp. 45-50. - J. Garcia-Flores y W.A. Turner (2011) Técnicas de ingeniería lingüística para el estudio de migraciones altamente calificadas: buscando biotecnólogos argentinos en internet. In L. Luchilo, Más allá de la fuga de cerebros. Tendencias en la movilidad y migración calificada de argentinos, Editorial Universitaria de Buenos Aires EUDEBA, ISBN 978-9-5023-1861-5, pp. 315-324. ==== Web People Search ==== - Artiles, J., Gonzalo, J., Sekine, S.: The SemEval-2007 WePS Evaluation: Establishing a benchmark for the Web People Search Task. In: Proceedings of the Fourth International Workshop on Semantic Evaluations (SemEval-2007), ACL (2007) - Artiles, J., Gonzalo, J., Amigó, E.: The impact of query refinement in the web people search task In Proceedings of the ACL-IJCNLP 2009 Conference Short Papers. ACLShort ’09, Stroudsburg, PA, USA, Association for Computational Linguistics (2009) 361–364. - Artiles, J., Borthwick, A., Gonzalo, J., Sekine, S., Amigó, E.: WePS-3 Evaluation Campaign: Overview of the Web People Search Clustering and Attribute Extraction Task. In: Conference on Multilingual and Multimodal Information Access Evaluation (CLEF). (2010) ==== NLP ==== - Natural Language Processing with Python - Foundations of statistical Natural Language Processing (Manning & Schütze) - The Oxford Handbook on Computational Linguistics (Mitkov) ===== Referencias ===== * Manual de instalación (en francés) de la branche galilée de UnoporunO ===== Calendario de reuniones ===== * Nos vamos a ver todos los viernes de 10 a 13h a partir del 27 de marzo * Se propone una reunión en la que estén presentes el tutor y el cotutor (por definir fecha) ===== IDE MyEclipse ===== * MyEclipse Spring * Esta IDE facilita enormemente el desarrollo en el framework spring, ya que cuenta con librerías integradas para herramientas basadas en beans. Agiliza el arranque de los proyectos con spring, evitando la configuración manual necesaria en otras IDE's gratuitas. * Tecnología de Persistencia * My Ecplise permite integrar al framework de spring con las tecnologías de persistencia de Hibernate. La IDE cuenta con un asistente que se encarga de hacer la ingeniería inversa de las tablas de una base de datos, generando beans de entidad, DAOs (Data Access Objects) preparados para spring y transacciones lista para ser utilizadas con proyectos spring. * Precio aproximado: US$158.95