Repositorio oficial del Centro de Supercomputación de Barcelona (BSC) modelos de lenguaje previo a la pretrada biomédica y clínica para español.
Lanzamos nuestros mejores modelos bajo la licencia Apache 2.0 para fomentar el desarrollo de aplicaciones de PNL españolas en los dominios biomédicos y clínicos.
Entrenamos dos modelos y los hacemos disponibles en Huggingface 'Models Hub en los siguientes enlaces:
Además, una versión de Former Long ha sido capacitada para poder trabajar con tareas que requieren contextos más grandes, como la codificación clínica. Los corpus utilizados son los mismos que a continuación. El modelo también se puede encontrar en Hugginface:
Atentamos nuestros modelos para la tarea de reconocimiento de entidad nombrada (NER) y hacemos los mejores modelos disponibles en Huggingface 'Models Hub en los siguientes enlaces:
Los corpus de capacitación están compuestos por varios corpus biomédicos en español, recopilados de corpus y rastreadores disponibles públicamente, y un corpus clínico del mundo real recopilado de más de 278K documentos clínicos y notas. Para obtener un corpus de capacitación de alta calidad mientras se conserva las idiosincrasias del lenguaje clínico, se ha aplicado una tubería de limpieza solo a los corpus biomédicos, manteniendo el corpus clínico sin limpieza. Esencialmente, las operaciones de limpieza utilizadas son:
Luego, los corpus biomédicos se concatenan y se han aplicado una deduplicación global más entre los corpus biomédicos. Los resultados son un corpus clínico de aproximadamente 91 millones de tokens y un corpus biomédico de aproximadamente 963 millones de tokens. Finalmente, el corpus clínico se concatena al corpus biomédico limpio que resulta en un corpus biomédico clínico de tamaño mediano para español compuesto por más de 1B tokens. La siguiente tabla muestra algunas estadísticas básicas de los corpus limpios individuales:
| Nombre | No. Tokens | Descripción |
|---|---|---|
| Rastreador médico | 903,558,136 | Crawler de más de 3.000 URL que pertenecen a dominios biomédicos y de salud españoles. |
| Casos clínicos Misc. | 102,855,267 | Una mezcla de contenido médico, esencialmente casos clínicos. Tenga en cuenta que un informe de caso clínico es una publicación científica donde los médicos comparten casos de pacientes y es diferente de una nota o documento clínico. |
| Documentos de EHR | 95,267,20 | Colección de más de 278k documentos clínicos, incluidos informes de alta, notas clínicas de cursos e informes de rayos X, para un total de 91 millones de tokens. https://huggingface.co/plantl-gob-es/longformer-base-4096-biomedical-clinical-es |
| Escándalo | 60,007,289 | Las publicaciones escritas en español se arrastraban por el servidor español de Scielo en 2017. |
| Barr2_background | 24,516,442 | Reconocimiento y resolución de la abreviatura biomédica (Barr2) que contiene secciones de estudio de caso clínico español de una variedad de disciplinas clínicas. |
| Wikipedia_life_sciences | 13,890,501 | Los artículos de Wikipedia se arrastraron 01/04/2021 con la Biblioteca de Wikipedia API Python que comienza desde la categoría "Ciencias_DE_LA_VIDA" hasta un máximo de 5 subcategorías. Luego se descartan múltiples enlaces a los mismos artículos para evitar repetir contenido. |
| Patentes | 13,463,387 | Google Patente en dominio médico para España (español). Los códigos aceptados (dominio médico) para los archivos JSON de patentes son: "A61b", "A61c", "A61f", "A61h", "A61k", "A61l", "A61M", "A61b", "A61p". |
| EMEA | 5,377,448 | Documentos españoles extraídos de corpus paralelos hechos de documentos PDF de la Agencia Europea de Medicamentos. |
| Mespen_medline | 4,166,077 | Artículos de lado español extraídos de una colección de corpus paralelo español-inglés que consiste en literatura científica biomédica. La colección de recursos paralelos se agregan de la fuente MedlinePlus. |
| Pubmed | 1.858.966 | Artículos de acceso abierto del repositorio de PubMed se arrastró en 2017. |
Los modelos han sido ajustados en las tareas de reconocimiento de entidad nombrada (NER) utilizando tres conjuntos de datos clínicos NER, como Pharmaconer, Cantemist e Ittusnet. Abordamos la tarea NER como un problema de clasificación de token utilizando una capa lineal estándar junto con el esquema de etiquetado bio. Comparamos nuestros modelos con el modelo robla-base de dominio general de dominio, el modelo multilingüe de dominio general que admite MBERT español, el modelo inglés específico de dominio BioBert y tres modelos específicos de dominio basados en el pretraben continuo, Mbert-Galén, XLM-R-Galén y Beto-Galén. La siguiente tabla muestra las puntuaciones F1 obtenidas:
| Tareas/modelos | BSC-bio-es | BSC-BIO-EHR-ES | XLM-R-GALÉN | Beto-gale | mbertalén | mbert | Biobert | base roberta |
|---|---|---|---|---|---|---|---|---|
| Farmaconario | 0.8907 | 0.8913 | 0.8754 | 0.8537 | 0.8594 | 0.8671 | 0.8545 | 0.8474 |
| Cantemista | 0.8220 | 0.8340 | 0.8078 | 0.8153 | 0.8168 | 0.8116 | 0.8070 | 0.7875 |
| Ictusnet | 0.8727 | 0.8756 | 0.8716 | 0.8498 | 0.8509 | 0.8631 | 0.8521 | 0.8677 |
El siguiente ejemplo, muestre cómo predecir entidades el modelo BSC-BIO-EHR-ES ajustado en el conjunto de datos Pharmaconer:
from transformers import AutoTokenizer , AutoModelForTokenClassification , pipeline
tokenizer = AutoTokenizer . from_pretrained ( "PlanTL-GOB-ES/bsc-bio-ehr-es-pharmaconer" )
model = AutoModelForTokenClassification . from_pretrained ( "PlanTL-GOB-ES/bsc-bio-ehr-es-pharmaconer" )
pipe = pipeline ( task = 'token-classification' , model = 'PlanTL-GOB-ES/bsc-bio-ehr-es-pharmaconer' )
sentence = 'Por el hallazgo de múltiples fracturas por estrés, se procedió a estudio en nuestras consultas, realizándose análisis con función renal, calcio sérico y urinario, calcio iónico, magnesio y PTH, que fueron normales.'
results = pipe ( sentence )
print ( results ) # Expected output with the predicted entities:
[
{'word': 'Ġcalcio', 'score': 0.9963880181312561, 'entity': 'B-NORMALIZABLES', 'index': 24, 'start': 137, 'end': 143}, {'word': 'Ġcalcio', 'score': 0.9965023398399353, 'entity': 'B-NORMALIZABLES', 'index': 29, 'start': 163, 'end': 169}, {'word': 'Ġmagnesio', 'score': 0.996299147605896, 'entity': 'B-NORMALIZABLES', 'index': 32, 'start': 178, 'end': 186}, {'word': 'ĠPTH', 'score': 0.9950509667396545, 'entity': 'B-PROTEINAS', 'index': 34, 'start': 189, 'end': 192}
]
Primero, clona el proyecto:
git clone https://github.com/PlanTL-GOB-ES/lm-biomedical-clinical-es/blob/master/README.md
Configure un entorno virtual de Python y activelo
python3.8 -m venv venv; source venv/bin/activate
Instale todos los paquetes de Python requeridos en el entorno virtual que ejecuta la siguiente línea desde la carpeta principal del proyecto: pip install -r requirements.txt .
Finalmente, ejecute el siguiente comando en la carpeta principal del proyecto: bash ner.sh [MODEL_NAME] [DATASET_NAME] [SEED] , donde
[MODEL_NAME] : Huggingface 'Nombre del modelo del modelo previamente que desea usar.[DATASET_NAME] : Huggingface 'Nombre del conjunto de datos del conjunto de datos NER para usar. Se puede elegir de "plantl-gob-es/cantemist-gan" y "plantl-gob-es/farmaconer", dependiendo del conjunto de datos que desee usar.[SEED] : la semilla que quieres usar. Esto permite reproducir los mismos resultados. El script ner.sh ajusta un modelo de lenguaje previo a la aparición para la tarea NER que aplica un cabezal de clasificación lineal. De manera predeterminada, la ejecución del ajuste fino para 10 épocas con una evaluación en el desarrollo del desarrollo en cada época. El modelo que logra el mejor rendimiento en el conjunto de desarrollo se selecciona como modelo final y se evalúa en el conjunto de pruebas. El mejor modelo capacitado es almacenar en una ruta de salida del tipo ./output/model-$model_name/dataset-$dataset_name/seed-$seed junto con las carpetas de los puntos de control y los datos de tensorboard (dentro del directorio tb ).
Por ejemplo, para ajustar el modelo de lenguaje BSC-BIO-EHR-ES en el conjunto de datos Pharmaconer, ejecute el comando:
bash ner.sh PlanTL-GOB-ES/bsc-bio-ehr-es PlanTL-GOB-ES/pharmaconer 42
Si usa estos modelos, cite nuestro trabajo:
@inproceedings{carrino-etal-2022-pretrained,
title = "Pretrained Biomedical Language Models for Clinical {NLP} in {S}panish",
author = "Carrino, Casimiro Pio and
Llop, Joan and
P{`a}mies, Marc and
Guti{'e}rrez-Fandi{~n}o, Asier and
Armengol-Estap{'e}, Jordi and
Silveira-Ocampo, Joaqu{'i}n and
Valencia, Alfonso and
Gonzalez-Agirre, Aitor and
Villegas, Marta",
booktitle = "Proceedings of the 21st Workshop on Biomedical Language Processing",
month = may,
year = "2022",
address = "Dublin, Ireland",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2022.bionlp-1.19",
doi = "10.18653/v1/2022.bionlp-1.19",
pages = "193--199",
abstract = "This work presents the first large-scale biomedical Spanish language models trained from scratch, using large biomedical corpora consisting of a total of 1.1B tokens and an EHR corpus of 95M tokens. We compared them against general-domain and other domain-specific models for Spanish on three clinical NER tasks. As main results, our models are superior across the NER tasks, rendering them more convenient for clinical NLP applications. Furthermore, our findings indicate that when enough data is available, pre-training from scratch is better than continual pre-training when tested on clinical tasks, raising an exciting research question about which approach is optimal. Our models and fine-tuning scripts are publicly available at HuggingFace and GitHub.",
}
Este proyecto tiene licencia bajo la licencia Apache, versión 2.0
Copyright (c) 2021 Secretaría de Estado de Digitalización E Inteligencia Artificial (Sedia)
Este trabajo fue financiado por la Secretaría de Estado española para la digitalización y la inteligencia artificial (SEDIA) en el marco del Plan-TL.
Los modelos publicados en este repositorio están destinados a un propósito generalista y están disponibles para terceros. Estos modelos pueden tener sesgo y/o cualquier otra distorsión indeseable.
Cuando terceros, implementan o proporcionan sistemas y/o servicios a otras partes utilizando cualquiera de estos modelos (o utilizando sistemas basados en estos modelos) o convertirse en usuarios de los modelos, deben tener en cuenta que es su responsabilidad mitigar los riesgos que surgen de su uso y, en cualquier caso, cumplir con las regulaciones aplicables, incluidas las regulaciones sobre el uso de la inteligencia artificial.
En ningún caso, el propietario de los modelos (Sedia - Secretaría de Estado para la Digitalización y la Inteligencia Artificial) ni el Creador (BSC - Barcelona SuperComuting Center) será responsable de cualquier resultado derivado del uso realizado por terceros de estos modelos.
LOS MODELOS Publicados en este Repositorio Tienen una finalidad generalista y están una disposición de Terceros. ESTOS MODELOSO PUEDEN TENER SESGOS Y/U OTRO TUPO DE DISTORSIONES INDESEABLES.
Cuando Terceros Desplieguen o proporcionen Sistemas y/o Servicios a Otras Partes Usando USando Alguno de Estos Modelo (o utilizando sistemas basados en objetos) Y, en Todo Caso, Cumplir con la Normativa Aplicable, incluyendo la Normativa en Materia de Uso de Inteligencia Artificial.
En Ningún Cano El Propietario de Los Modelos (Sedia - Secretaría de Estado de Digitalización E Inteligencia Artificial) Ni El Creador (BSC - Centro de Supercomputación de Barcelona) Responsables de Serán de Los Resultados Derivados del Uso Que Hagan Terceros de Estos Modelo.