/DL-patogen-colab-DIIC

Estudio del carácter patogénico de variantes humanas mediante deep learning. Fine-tuning de BERT para la representación de enfermedades: un método de aprendizaje sobre datasets de textos biomédicos.

Primary LanguageJupyter Notebook

Fine-tuning de BERT para la representación de enfermedades

Repositorio que recoge la implementación de los experimentos del TFG "Fine-tuning de BERT para la representación de enfermedades: un método de aprendizaje sobre datasets de textos biomédicos". Autor: Domingo Méndez García, Grado en Ingeniería Informática Universidad de Murcia.

Configuración previa

Ficheros a añadir al directorio para el funcionamiento de los scripts:

Modelos finales y datos utilizados para el entrenamiento

Los dos modelos finales fine-tuneados mediante el programa src/fine-tuning/evaluation/grid.py están disponibles en https://huggingface.co/DingoMz/dmg-hpo-pa-pritamdeka. Todos fueron entrenados a partir del modelo base https://huggingface.co/pritamdeka/BioBERT-mnli-snli-scinli-scitail-mednli-stsb by Deka, Pritam and Jurek-Loughrey, Anna and others, 2022. La carpeta output tiene los resultados de evaluación a lo largo del fine-tuning de otros modelos ajustados. Los modelos son directorios de la forma fine-tuned-*. Para cada uno la información de evaluación está en el subirectorio eval y la información de cómo se realizó el fine-tuning, en el fichero README.md dentro del directorio del modelo.

Los ficheros usados para el entrenamiento y evaluación de los modelos están disponibles en https://huggingface.co/datasets/DingoMz/pubmed-hpo-pa-corpus (temporalmente privado debido a dudas sobre el copyright de los abstracts en los datasets). Fuente de los datos de texto: National Center for Biotechnology Information. Pubmed, 2024. URL: https:// pubmed.ncbi.nlm.nih.gov/ (citado 2024-06-01).

La carpeta data contiene algunos de estos ficheros: índices de fenotipos, corpus de abstracts y conjuntos de evaluación.

Estructura del repositorio

  • README.md: descripción, referencias e información sobre la configuración previa para la ejecución.
  • data: datasets pequeños del repositorio \url{https://huggingface.co/datasets/DingoMz/pubmed-hpo-pa-corpus}. El subdirectorio abstracts contiene los csv de corpus de abstracts y de datasets de entrenamiento, evaluation contiene los datasets de pares de fenotipos etiquetados para evaluación y phenotypes contiene los índices de fenotipos. En el subdirectorio onto se debe incluir la versión de la ontología para cargarla mediante pyHPO.
  • output: contiene los resultados de evaluación obtenidos para los modelos ajustados mediante fine-tuning. Cada directorio asociado a un modelo es de la forma "fine-tuned-*" y sus resultados de evaluación (correlaciones y MSE) están en su subdirectorio eval. Los directorios "grid*" corresponden a ejecuciones del programa grid.py y los ficheros "*scores*.csv" corresponden a los resultados de grid de hiperparámetros.
  • src: código fuente en scripts de python y jupyter notebooks.
    • util: utilidades para la obtención del corpus de abstracts. El programa phenotypes.py sirve para obtener índices de fenotipos siguiendo el algoritmo \ref{alg:selection-d}. pubmed.py sirve para realizar el web-scrapping a PubMed, que busca abstracts para cada fenotipo de un índice. Este programa permite procesamiento por lotes de fenotipos y en ese caso guarda los resultados en lotes en el directorio que se determine. join-abstracts.py permite juntar los lotes de abstracts obtenidos en un único fichero y clean_abstracts.py limpia los abstracts, eliminando las stopwords.
    • project_config: paquete que guarda variables globales para mantener la coherencia entre distintos notebooks.
    • fine-tuning/evaluation: notebooks para las pruebas de fine-tuning y evaluación del modelo a lo largo del proceso. grid.py permite realizar fine-tuning para todas las combinaciones de un grid de hiperparámetros y guardar los resultados en un subdirectorio de output. MSESimilarityEvaluator.py implementa la subclase de SentenceEvaluator que obtiene la medida de evaluación de MSE entre la similitud coseno y la similitud de referencia de un conjunto de pares de textos. plot_lprogress sirve para obtener gráficas a partir de los csv con datos de evaluación de un modelo en su subdirectorio eval. lprogress-big.ipynb se usó para el fine-tuning de la primera iteración y results-lprogress.ipynb muestra los resultados del modelo obtenido. Este último tiene un resumen del fine-tuning para la iteración 1 y es reproducible.
    • analysis: notebooks para la selección de fenotipos de la iteración 2.
    • preprocessing: notebooks para el preprocesado del corpus de abstracts de PubMed que se realizó en la iteración 2. Con abstracts-sda.ipynb y pairings.ipynb se obtuvieron los datasets de entrenamiento, índices de fenotipos (train y test) y datasets de evaluación (train y test) para las iteraciones 2 y 3.