WellcomeBertMesh

Wellcome
Clasificación de texto

WellcomeBertMesh es construido por el equipo de ciencia de datos en WellcomeTrust para etiquetar subvenciones biomédicas con Encabezamientos de Materias Médicas (Mesh). Aunque fue desarrollado con la intención de ser utilizado en subvenciones de investigación, debería ser aplicable a cualquier tipo de texto biomédico cercano al dominio en el que fue entrenado, que son los resúmenes de publicaciones biomédicas. El modelo se inspira en BertMesh que está entrenado en el texto completo de publicaciones biomédicas y utiliza BioBert como su modelo preentrenado. WellcomeBertMesh utiliza el último modelo de estado del arte en el dominio biomédico, que es PubMedBert de Microsoft, y adjunta una cabeza de atención multietiqueta que esencialmente permite al modelo prestar atención a diferentes tokens por etiqueta para decidir si se aplica. Entrenamos el modelo usando datos de la competencia BioASQ que consiste en resúmenes de publicaciones de PubMed. Utilizamos datos de 2016-2019 para entrenar y de 2020-2021 para probar, lo que nos da ~2.5M de publicaciones para entrenar y 220K para probar. Esto es de un total de 14M publicaciones. Toma 4 días entrenar WellcomeBertMesh en 8 GPUs Nvidia P100. El modelo logra un 63% de micro f1 con un umbral de 0.5 para todas las etiquetas. El código para desarrollar el modelo es de código abierto y se puede encontrar en https://github.com/wellcometrust/grants_tagger

Como usar

⚠️ Necesitas transformers 4.17+ para que el ejemplo funcione debido a su reciente soporte para modelos personalizados. Puedes usar el modelo directamente desde el hub pero porque contiene una función forward personalizada debido a la cabeza de atención multietiqueta tienes que pasar trust_remote_code=True. Puedes acceder a las probabilidades para todas las etiquetas omitiendo return_labels=True.

from transformers import AutoModel, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(
"Wellcome/WellcomeBertMesh"
)
model = AutoModel.from_pretrained(
"Wellcome/WellcomeBertMesh",
trust_remote_code=True
)

text = "This grant is about malaria and not about HIV."
inputs = tokenizer([text], padding="max_length")
labels = model(**inputs, return_labels=True)
print(labels)

Funcionalidades

Clasificación de texto
Transformers
PyTorch
Extracción de características
Código personalizado

Casos de uso

Etiquetar subvenciones biomédicas con Encabezamientos de Materias Médicas (Mesh)
Aplicación a cualquier tipo de texto biomédico cercano al dominio entrenado