Árbol de páginas

Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

Presentación de hijos

PROYECTO: SISTEMA DE BÚSQUEDA INTELIGENTE DE RELACIONES E IDONEIDAD INVESTIGADORA

Objetivo

Obtener un sistema inteligente que proporcione valor añadido a los clásicos sistemas de gestión de la investigación (en adelante, SGI) que se utilizan en las distintas universidades españolas, por la vía de facilitar, ante un término de búsqueda o un conjunto de términos de búsqueda, el resultado más idóneo de entre los investigadores disponibles o de entre las entidades gestionadas por el SGI (grupos de investigación o proyectos de investigación). Así, se puede interrogar al sistema para descubrir, de forma inteligente y optimizada, qué entidades son las más ajustadas a los términos introducidos para la búsqueda.

Introducción

Los SGI en las universidades españolas son herramientas software que permiten a la comunidad investigadora universitaria llevar el control completo de los distintos proyectos de investigación que se llevan a cabo. Se trata de sistemas de gestión que almacenan toda la información de las distintas convocatorias de financiación para los proyectos de investigación, las solicitudes de financiación de los distintos investigadores o grupos de investigación, los proyectos finalmente financiados y que se llevan a cabo, y los datos de los resultados de las investigaciones, bien sea en forma de publicaciones científicas o patentes. Todo ello manteniendo un control económico completo de los presupuestos de investigación, su ejecución y los gastos e ingresos de los mismos, y, a un tiempo, gestionando la producción científica y el propio curriculum currículum de todos los investigadores a lo largo de su carrera.

Una de las dificultades que los distintos SGIs presentes en la comunidad universitaria española es la gran cantidad de datos heterogéneos que se gestionan. De esta manera, resulta complicado con el paso de los años saber si para una determinada temática hay mucha o poca participación investgadora investigadora en una universidad concreta o si existe algún grupo o algún investigador individual más cercano, o más experimentado, en lo que se pretende buscar.

El gestor de la investigación no tiene el conocimiento completo de todas las áreas de investigación ni la profundidad de detalle para poder valorar si los proyectos de un determinado grupo son más cercanos a una u otra temática de búsqueda y debe recurrir al profesional investigador. 

Lo que se pretende con este sistema es facilitar al gestor de la investigación, e incluso al propio investigador, la búsqueda de resultados idóneos, incluso en forma de grafo con la relación de las entidades y su cercanía, para uno o varios argumentos de búsqueda. De esta manera, se facilita la interrogación a la amplia base de datos investigadora, ofreciendo resultados ordenados por idoneidad sin necesidad de una navegaciòn exhaustiva.

Fases del proyecto

FASE 1: ÍNDICE DE IDONEIDAD DE UNA CONVOCATORIA DE FINANCIACIÓN INVESTIGADORA 

Info
titleNOTA @Marcelino Cortina

Esta fase es la que cubrirá la necesidad de IA del Hito 3 del SGI. Hay que solventarla entre el 1 y el 31-JUL de 2022.

Plazo de desarrollo

1 mes

Objetivo de la fase

A partir de los datos introducidos en el SGI para una determinada convocatoria, proporcionar un scoring de idoneidad de la convocatoria para la universidad que se gestiona.

Descripción

Una vez que se carga una convocatoria, se toman los términos introducidos en el campo título y en el campo área temática y se calcula un scoring de idoneidad de que esa convocatoria sea interesante para la universidad y se devuelve al usuario el valor (informando de dónde cae el valor; por ejemplo, un scoring entre 0 y 10, siendo un valor entre 7-10 muy idóneo, entre 5-7 relativamente idóneo, entre 3-5 poco idóneo y menos de 3 nada idóneo). Para calcular ese scoring  se chequean los datos de investigaciòn global de la base de datos del SGI y se comparan con los términos de búsqueda (que vienen del título y del área temática).

Fuente de datos

Usuario desconocido (roberto.diaz) COMPLETAR (con ayuda de Usuario desconocido (covadonga.garcia) y Usuario desconocido (jesus.alvarez)).

Modelado del texto

Usuario desconocido (roberto.diaz) COMPLETAR.

Resultados de la búsqueda

Usuario desconocido (roberto.diaz) COMPLETAR (con ayuda de Usuario desconocido (covadonga.garcia) y Usuario desconocido (jesus.alvarez)).

Hay que generar ese valor de scoring y meterlo en un campo de la convocatoria que se llame ÍNDICE DE IDONEIDAD.

FASE 2: RANKING DE INVESTIGADORES A PARTIR DE UNA QUERY DE BÚSQUEDA

Info
titleNOTA @Marcelino Cortina

Las fases 2 y 3 durarán 9 meses más, hasta un total de 10 meses. 

Plazo de desarrollo

2 meses

Objetivo de la fase

Se trata de que el sistema inteligente ayude en la búsqueda de investigadores idóneos para una determinada búsqueda introducida manualmente.  

Descripción

A partir de una query de búsqueda, devolverá un listado de los investigadores de una institución ordenados según la importancia de los términos de búsqueda en su perfil investigador. 

Fuente de datos

El texto no estructurado es una de las mayores fuentes de información en nuestra vida diaria, tener dicho texto bien organizado puede ser de gran ayuda para ser humano. Debido a ello, los problemas modelización y estructuración matemática de texto han recibido mucha atención en los últimos años ya que permiten hacer analítica sobre esta fuente de información.

El principal de la inteligencia artificial a la hora de trabajar con texto, es que requiere de grandes volúmenes de datos así como de procesos para su estructuración matemática. Por todo esto, la tarea más crítica de este tipo de plataformas es la correcta modelización del texto. Otra de las principales limitaciones de este tipo de funcionalidades, es que están acotadas a un idioma concreto.

Para esta funcionalidad, será necesario disponer previamente de la información asociada a los investigadores de una institución (descripción del CV, listado de publicaciones, etc...). Además dicha información (tanto la información de los investigadores como las queries de búsqueda) deben estar en un único idioma (por ejemplo, inglés).

...

Se pretende, en esta primera fase inicial, realizar una prueba de concepto de un sistema capaz de recomendar a uno o varios investigadores en función de una cadena de búsqueda, cotejando la similitud semántica de dicha cadena con una nube de términos extraída de las publicaciones del personal investigador. 

Fuente de datos

A día de hoy todavía no se dispone en el SGI de un conjunto de datos relevante con información de pares "investigador  /  contenido-artículo".

Es por ello que se ha optado por trabajar con un conjunto de datos públicos formado por miles de artículos publicados en PubMed:

https://www.tensorflow.org/datasets/catalog/scientific_papers#scientific_paperspubmed

El fichero de datos se compone de líneas en formato "json", con la siguiente información:

CampoDescripción
article_idIdentificador único del artículo en PubMed
abstract_textAbstract del artículo
article_textContenido del artículo
section_namesLista de secciones dentro del artículo
sectionsContenido de cada sección


Por ejemplo:

Image Added


Procesamiento inicial de datos

La fuente de datos anterior carece, sin embargo, de información clave para nuestro propósito: el listado de autores de cada artículo.

Por ello, se ha obtenido dicha información mediante la API pública de PubMed, que ofrece una manera rápida y sencilla de obtener el resto de meta-información a partir del identificador del artículo:

https://api.ncbi.nlm.nih.gov/lit/ctxp

Una vez obtenido el listado de autores por artículo, se ha procedido a agrupar la información de cada artículo por autor, extrayendo del abstract una nube de términos.

El resultado final es un archivo en formato tabular con un registro por cada autor individual, y las siguientes columnas.

  • Author: nombre y apellidos del autor
  • Abstract: nube de términos extraida de los abstracts de los artículos publicados por el autor
  • n_articles: número de artículos de los que se ha extraído la información


Modelado del texto

En problemas de naturaleza tan compleja como los de este proyecto, los datos se transforman en un conjunto de características que resulten útiles para su comparación con la query de búsqueda, dichas características deben contener información relevante.

Para ello se

...

han implementado los siguientes procesos:

Preprocesado de texto:

El preprocesdo del texto se compone de los siguientes procesos:

Image Modified

Tokenización:

Tokenizar es el proceso de segmentar un texto en sus elementos semánticos básicos, es decir, dividir las frases en palabras. Para ellos eliminaremos los caracteres no alfanuméricos y utilizaremos el espacio como elemento separador.

Ejemplo:

Texto de entrada: 'DisPFL: Towards a Communication-Efficient Federated Learning'

Texto de salida: ‘DISPLF’ ‘TOWARDS’ ‘COMMUNICATION’ ‘EFFICIENT’ 'FEDERATED' 'LEARNING'

Stemming:

Es un proceso para reducir una palabra a su raíz (‘stem’ in inglés). Se utiliza para agrupar palabras con la misma información útil para la clasificación.

Por ejemplo, las palabras ‘Venta’, ‘Vender’, ‘Vendido’ y ‘Vendiendo’ pasan a ser ‘Vend’.

Para el proyecto se probarán diferentes algoritmos de stemming (Porter, Lancaster, …) y se seleccionará el que obtenga mejores prestaciones.

Eliminación de palabras frecuentes e infrecuentes:

Eliminación de palabras frecuentes: Son palabras sin significado semántico y que aportan poca información útil la temática del texto, que son filtradas antes del procesamiento del lenguaje natural de texto. Ejemplos de stopwords en español: ‘un’, ‘una’, ‘de’, ‘es’,…

Eliminación de palabras infrecuentes: Son palabras que aparecen con tan poco frecuencia que probablemente sea debido a que contienen una errata.

Modelado matemático del texto - Vectorización:

Tanto la información de la query como la información relativa a cada investigador, se modelará como un vector numérico. Para ello se barajarán diferentes alternativas:

        • Metrica TF-IDF (frecuencia de término – frecuencia de documento inversa): TF*IDF o tf-idf es el acrónimo de “Term Frequency times Inverse Document Frequency”, que podemos traducir como “frecuencia del término por frecuencia inversa de documento”. Es una métrica desarrollada dentro de la disciplina conocida como IR o Information Retrieval (Recuperación de la información) para encontrar el documento más relevante para cierto término dentro de una colección de documentos. Antes de internet se usaba para rankear documentos dentro de una biblioteca o red de bibliotecas. ¿Cómo funciona? Mide con qué frecuencia aparece un término o frase dentro de un documento determinado, y lo compara con el número de documentos que mencionan ese  término dentro de una colección entera de documentos.

Image Modified

        • Doc2Vec: Su objetivo es crear una representación vectorial de un documento, independientemente de su longitud.  Estos vectores de párrafo heredan una propiedad importante de los vectores de palabras: la semántica. De manera que vectores de párrafos cercanos se asocian con documentos que, semánticamente, tienen un contenido similar.


Image Modified

Resultados de la búsqueda

A la hora de devolver resultados, el vector modelado por la query, se comparará con los vectores obtenidos de cada investigador. A menor distancia, mayor afinidad de un investigador con el texto introducido.

El sistema devolverá los investigadores ordenados por distancia con la query de búsqueda.

Image Removed

Info
titleNOTA @Marcelino Cortina

Para las fases 2 y 3 sí que haremos interface. En el proyecto de AIE con la ayuda de PROUN. En el proyecto de IDEPA nosotros solos. 

FASE 3: GRAFO DE RELACIONES ENTRE ENTIDADES INVESTIGADORAS IDÓNEAS 

Info
titleNOTA @Marcelino Cortina

Las fases 2 y 3 durarán 9 meses más, hasta un total de 10 meses. 

Plazo de desarrollo

7 meses

Objetivo de la fase

Se trata de que el sistema inteligente ayude en la búsqueda de entidades investigadoras idóneas para una determinada búsqueda introducida manualmente, presentándolas además en un grafo de relaciones entre ellas.  

Descripción

Se entiende por entidades investigadoras estrictamente estos tres elementos presentes en el SGI: 

      1. Investigadores.
      2. Grupos de investigación.
      3. Proyectos de investigación.

A partir de una query de búsqueda, se devolverá un grafo con las entidades más idóneas para los términos de la query y sus relaciones entre sí. 

Usuario desconocido (roberto.diaz) ¿COMPLETAR?

Fuente de datos

Usuario desconocido (roberto.diaz) COMPLETAR (si es necesario con ayuda de Usuario desconocido (covadonga.garcia) y Usuario desconocido (jesus.alvarez)).

Modelado del texto

Usuario desconocido (roberto.diaz) COMPLETAR.

Resultados de la búsqueda

Usuario desconocido (roberto.diaz) COMPLETAR (si es necesario con ayuda de Usuario desconocido (covadonga.garcia) y Usuario desconocido (jesus.alvarez)).

...

titleNOTA @Marcelino Cortina

...

Dada la necesidad de un conjunto masivo de artículos para la creación de un modelo propio Doc2Vec, se ha hecho uso de un modelo pre-entrenado a partir de la Wikipedia en habla inglesa:

https://github.com/jhlau/doc2vec

Se han implementado, pues, dos técnicas de modelado diferentes con el fin de evaluar su efectividad.


Instalación

Nota: el proyecto requiere Python 2.7 para cargar los modelos de lenguaje Doc2Vec Gensim.

Requisitos:

Pasos a seguir:

  1. Crear entorno de conda:

    Bloque de código
    languagebash
    themeDJango
    conda create -n python2 python=2.7 anacond
  2. Activar entorno:

    Bloque de código
    languagebash
    themeDJango
    source activate python2
  3. Clonar proyecto:

    Bloque de código
    languagebash
    themeDJango
    git clone http://gitlab.treelogic.local/operaciones/hercules/sgi/sgi-ap
  4. Instalar dependencias:

    Bloque de código
    languagebash
    themeDJango
    cd <LOCAL_PATH>/sgi-ap
    pip install requirements.txt

    Nota: deberá cambiarse la cadena <LOCAL_PATH> por la ruta local del proyecto.


Uso


Una vez instalado el proyecto, para su ejecución deberán seguirse los siguientes pasos:

  1. Desde una ventana de línea de comandos, activar el entorno Python, en caso de que no haya sido activado previamente:

    Bloque de código
    languagebash
    themeDJango
    conda activate python2
  2. Ejecución del script de búsqueda de investigadores. Como se ha indicado, se dispone de dos implementaciones diferentes. Desde una ventana de línea de comandos, navegar al directorio raíz del proyecto (sgi-ap) y ejecutar:
    1. TF-IDF:

      Bloque de código
      languagebash
      themeDJango
      python ./src/ranking/rank_tfidf.py --file_path ./data/processed/abstracts_54-authors.csv --query "<YOUR_SEARCH_QUERY>"
    2. Doc2Vec: 

      Bloque de código
      languagebash
      themeDJango
      python ./src/ranking/rank_doc2vec.py --file_path ./data/processed/abstracts_54-authors.csv --query "<YOUR_SEARCH_QUERY>"

      Donde <YOUR_SEARCH_QUERY> corresponde con una cadena de búsqueda.

Exploración


Procederemos a continuación a usar la herramienta en un conjunto de datos obtenido del modo descrito anteriormente, y limitado a unos 21000 autores.

El fichero de datos puede encontrarse en la carpeta del proyecto:  /sgi-ap/data/processed/abstracts_21000-authors.csv

Realizamos la siguiente búsqueda, "vertebrobasilar dolichoectasia", mediante las dos implementaciones del proyecto. Primero, la correspondiente al algoritmo TF-IDF:

TF-IDF

Bloque de código
languagebash
themeDJango
python ./src/ranking/rank_tfidf.py --file_path ./data/processed/abstracts_21000-authors.csv --query "vertebrobasilar dolichoectasia"

El proceso tomará cierto tiempo (del orden de minutos). Este tiempo de espera podría acortarse significativamente en un entorno productivo mediante el pre-cálculo de los vectores (word embeddings) asociados a cada autor.

Se obtiene el siguiente resultado:

AutorDistancia coseno
Prakhar Gupta0.6096401793267894
Gaurav Shah0.6096401793267894
Mohd Khalid0.6096401793267894

(La columna "Distancia coseno" hace referencia a la "distancia" entre la cadena de búsqueda y la nube de términos asociada a cada investigador)

El número de resultados se está limitando a 3 por defecto, pero es posible fijar la longitud del resultado de búsqueda de acuerdo a lo deseado mediante el parámetro ""–n":

Doc2Vec

Bloque de código
languagebash
themeDJango
python ./src/ranking/rank_doc2vec.py --file_path ./data/processed/abstracts_21000-authors.csv --query "vertebrobasilar dolichoectasia"

Resultados:

AutorDistancia coseno
Prakhar Gupta0.3284202810813404
Gaurav Shah0.3284202810813404
Mohd Khalid0.3284202810813404


Se observa que, en el caso de ambas implementaciones, el resultado coincide con lo esperado, al ser los autores citados los únicos de todo el corpus de artículos con publicaciones referidas a dicha patología.

Anexo

Estructura del proyecto


Image Added