Edit model card

Biomedical language model for Spanish

Biomedical pretrained language model for Spanish. For more details about the corpus, the pretraining and the evaluation, check the official repository.

Tokenization and model pretraining

This model is a RoBERTa-based model trained on a biomedical corpus in Spanish collected from several sources (see next section). The training corpus has been tokenized using a byte version of Byte-Pair Encoding (BPE) used in the original RoBERTA model with a vocabulary size of 52,000 tokens. The pretraining consists of a masked language model training at the subword level following the approach employed for the RoBERTa base model with the same hyperparameters as in the original work. The training lasted a total of 48 hours with 16 NVIDIA V100 GPUs of 16GB DDRAM, using Adam optimizer with a peak learning rate of 0.0005 and an effective batch size of 2,048 sentences.

Training corpora and preprocessing

The training corpus is composed of several biomedical corpora in Spanish, collected from publicly available corpora and crawlers. To obtain a high-quality training corpus, a cleaning pipeline with the following operations has been applied:

  • data parsing in different formats
    • sentence splitting
    • language detection
    • filtering of ill-formed sentences
    • deduplication of repetitive contents
    • keep the original document boundaries

Finally, the corpora are concatenated and further global deduplication among the corpora has been applied. The result is a medium-size biomedical corpus for Spanish composed of about 963M tokens. The table below shows some basic statistics of the individual cleaned corpora:

Name No. tokens Description
Medical crawler 903,558,136 Crawler of more than 3,000 URLs belonging to Spanish biomedical and health domains.
Clinical cases misc. 102,855,267 A miscellany of medical content, essentially clinical cases. Note that a clinical case report is a scientific publication where medical practitioners share patient cases and it is different from a clinical note or document.
Scielo 60,007,289 Publications written in Spanish crawled from the Spanish SciELO server in 2017.
BARR2_background 24,516,442 Biomedical Abbreviation Recognition and Resolution (BARR2) containing Spanish clinical case study sections from a variety of clinical disciplines.
Wikipedia_life_sciences 13,890,501 Wikipedia articles crawled 04/01/2021 with the Wikipedia API python library starting from the "Ciencias_de_la_vida" category up to a maximum of 5 subcategories. Multiple links to the same articles are then discarded to avoid repeating content.
Patents 13,463,387 Google Patent in Medical Domain for Spain (Spanish). The accepted codes (Medical Domain) for Json files of patents are: "A61B", "A61C","A61F", "A61H", "A61K", "A61L","A61M", "A61B", "A61P".
EMEA 5,377,448 Spanish-side documents extracted from parallel corpora made out of PDF documents from the European Medicines Agency.
mespen_Medline 4,166,077 Spanish-side articles extracted from a collection of Spanish-English parallel corpus consisting of biomedical scientific literature. The collection of parallel resources is aggregated from the MedlinePlus source.
PubMed 1,858,966 Open-access articles from the PubMed repository crawled in 2017.

Evaluation and results

The model has been fine-tuned on three Named Entity Recognition (NER) tasks using three clinical NER datasets:

  • PharmaCoNER: is a track on chemical and drug mention recognition from Spanish medical texts (for more info see: https://temu.bsc.es/pharmaconer/).

  • CANTEMIST: is a shared task specifically focusing on named entity recognition of tumour morphology, in Spanish (for more info see: https://zenodo.org/record/3978041#.YTt5qH2xXbQ).

  • ICTUSnet: consists of 1,006 hospital discharge reports of patients admitted for stroke from 18 different Spanish hospitals. It contains more than 79,000 annotations for 51 different kinds of variables.

We addressed the NER task as a token classification problem using a standard linear layer along with the BIO tagging schema. We compared our models with the general-domain Spanish roberta-base-bne, the general-domain multilingual model that supports Spanish mBERT, the domain-specific English model BioBERT, and three domain-specific models based on continual pre-training, mBERT-Galén, XLM-R-Galén and BETO-Galén. The table below shows the F1 scores obtained:

Tasks/Models bsc-bio-es XLM-R-Galén BETO-Galén mBERT-Galén mBERT BioBERT roberta-base-bne
PharmaCoNER 0.8907 0.8754 0.8537 0.8594 0.8671 0.8545 0.8474
CANTEMIST 0.8220 0.8078 0.8153 0.8168 0.8116 0.8070 0.7875
ICTUSnet 0.8727 0.8716 0.8498 0.8509 0.8631 0.8521 0.8677

The fine-tuning scripts can be found in the official GitHub repository.

Intended uses & limitations

The model is ready-to-use only for masked language modelling to perform the Fill Mask task (try the inference API or read the next section)

However, the is intended to be fine-tuned on downstream tasks such as Named Entity Recognition or Text Classification.


To be announced soon.


This work was funded by the Spanish State Secretariat for Digitalization and Artificial Intelligence (SEDIA) within the framework of the Plan-TL.


The models published in this repository are intended for a generalist purpose and are available to third parties. These models may have bias and/or any other undesirable distortions.

When third parties, deploy or provide systems and/or services to other parties using any of these models (or using systems based on these models) or become users of the models, they should note that it is their responsibility to mitigate the risks arising from their use and, in any event, to comply with applicable regulations, including regulations regarding the use of artificial intelligence.

In no event shall the owner of the models (SEDIA – State Secretariat for digitalization and artificial intelligence) nor the creator (BSC – Barcelona Supercomputing Center) be liable for any results arising from the use made by third parties of these models.

Downloads last month
Hosted inference API
Mask token: <mask>
This model can be loaded on the Inference API on-demand.