ner-prostata-xlmr

Reconoce 10 tipos de entidad en texto clínico en español sobre cáncer de próstata: edad, fechas, tipo de cáncer, Gleason, TNM, biomarcadores, tratamientos, cirugías, medicamentos y dosis. Es FacebookAI/xlm-roberta-base afinado para clasificación de tokens con etiquetas BIO.

Advertencia. Las particiones del corpus se solapan: 683 de las 991 oraciones de prueba (68,9 %) y 812 de las 929 de validación (87,4 %) son idénticas a alguna de entrenamiento. En las 308 oraciones de prueba que no están en entrenamiento, el F1 por entidad es 96,99 %. Detalles en «Limitaciones».

Resultados en prueba

F1 por entidad con seqeval: una entidad cuenta como acierto sólo si coinciden inicio, fin y tipo.

Conjunto Oraciones Entidades Precisión Recall F1
Prueba completa 991 1 974 96,92 % 97,37 % 97,14 %
Prueba no vista 308 1 079 96,86 % 97,13 % 96,99 %

La prueba no vista son las oraciones de testing_cleaned.bio que no aparecen idénticas en training.bio.

F1 por tipo de entidad (soporte: entidades de ese tipo en cada conjunto):

Tipo F1 (completa) Soporte F1 (no vista) Soporte
BIOMARCADOR 98,54 % 208 97,78 % 114
CANCER 96,71 % 364 98,06 % 231
CIRUGIA 89,39 % 65 84,93 % 35
DOSIS 90,10 % 189 91,40 % 92
EDAD 98,77 % 80 97,96 % 48
FECHA 99,75 % 401 99,52 % 211
GLEASON 96,57 % 160 95,97 % 136
MEDICAMENTO 99,09 % 164 97,78 % 45
TNM 99,47 % 93 99,36 % 78
TRATAMIENTO 97,60 % 250 96,59 % 89

Rejilla

Se afinaron dos modelos con lotes de 8, 16 y 32. F1 por entidad en la prueba completa (en negrita, el publicado):

Modelo Lote 8 Lote 16 Lote 32
BETO (dccuchile/bert-base-spanish-wwm-cased) 96,79 % 96,16 % 96,84 %
xlm-roberta-base 97,06 % 97,14 % 96,87 %

Entre modelos y entre lotes hay menos de un punto. De XLM-RoBERTa se usó la versión base: en el punto de NER el enunciado del taller dice «XML-Roberta» sin tamaño, aunque enlace la large, y la base tiene el mismo codificador que BETO (12 capas de 768 dimensiones); sólo su vocabulario es mayor (250 002 piezas frente a 31 002), lo que la lleva a unos 278 M parámetros frente a unos 110 M.

Etiquetas

Esquema BIO: B-TIPO marca la primera palabra de una entidad, I-TIPO las siguientes y O lo que no es entidad. Son 21 etiquetas: O más B- e I- para cada tipo.

Tipo Qué marca Ejemplos anotados en el corpus Entidades en entrenamiento
BIOMARCADOR marcador de laboratorio, con o sin su valor PSA, PSMA, «PSA en 9,9 ng/dl», «Creatinina 0.7» 895
CANCER tipo de cáncer o lesión tumoral «adenocarcinoma de próstata», «lesiones metastásicas», «metastásico óseo» 1 207
CIRUGIA procedimiento quirúrgico «prostatectomía radical», «orquiectomía bilateral», «linfadenectomía» 254
DOSIS dosis, fracciones o ciclos «20 fracciones de 3 Gy», «200mCi», «4 ciclos» 785
EDAD edad del paciente «72 años», «64 años» 246
FECHA fecha o referencia temporal «14/02/2024», «2014», «hoy» 1 262
GLEASON puntuación de Gleason «Gleason 3+4», «Gleason score 4+3» 598
MEDICAMENTO fármaco goserelina, abiraterona, docetaxel 483
TNM estadificación TNM «cT4N0Mx», «ct2nxm0», «M0» 355
TRATAMIENTO tratamiento, como radioterapia u hormonoterapia IMRT, SBRT, «bloqueo hormonal», «Lutecio-177 PSMA» 1 130

Datos

Corpus de texto clínico en español sobre cáncer de próstata, en formato BIO (palabra y etiqueta separadas por tabulador), entregado por el profesor del curso. No está publicado en el Hub.

Partición Fichero Oraciones
Entrenamiento training.bio 3 106
Validación validation_cleaned.bio 929
Prueba testing_cleaned.bio 991

El entrenamiento tiene 67 934 tokens, el 77,6 % con etiqueta O. Tres etiquetas corruptas (un 0 y una cadena vacía en prueba, una , en validación) se normalizaron a O. La etiqueta de cada palabra se asigna a su primer subtoken; los demás subtokens y los tokens especiales se ignoran en la pérdida (-100).

Configuración

  • Lote 16, hasta 8 épocas con Early Stopping (paciencia 3) sobre el F1 por entidad de validación. Se conserva la mejor época.
  • Tasa de aprendizaje 3e-5 con decaimiento lineal, calentamiento del 10 %, weight decay 0,01, AdamW.
  • Longitud máxima de 256 subtokens, con padding dinámico (DataCollatorForTokenClassification).
  • Semilla 42. Entrenado en fp16 en una GPU Tesla T4 de Google Colab, en 5,6 minutos.
  • La rejilla de lotes se completó en varias sesiones de Colab.

Uso

from transformers import pipeline

ner = pipeline("token-classification", model="andresdfx/ner-prostata-xlmr",
               aggregation_strategy="first")

texto = ("Paciente masculino de 72 años con antecedentes médicos de hipertensión "
         "arterial (HTA). El puntaje de Gleason reportado fue 3+3.")
for e in ner(texto):
    print(e["entity_group"], round(float(e["score"]), 3),
          texto[e["start"]:e["end"]].strip(" .,;:"))
# EDAD 0.997 72 años
# GLEASON 0.999 Gleason
# GLEASON 0.996 3+3

aggregation_strategy="first" da a cada palabra la etiqueta de su primer subtoken, que es como se entrenó. Con "simple" el pipeline etiqueta también subtokens interiores que el modelo no aprendió a clasificar: con este mismo texto devuelve además GLEASON ado (de «reportado»), y en otros parte palabras («a» + «denocarcinoma»). Toma el fragmento del texto original con start y end (con transformers 5, word puede perder los espacios). Antes de un número puede aparecer una pieza solapada del mismo tipo («9» y «9,9 ng/dL»): conviene unir las piezas contiguas o solapadas del mismo tipo.

Limitaciones

  • Solapamiento entre particiones. 683 de las 991 oraciones de prueba (68,9 %) y 812 de las 929 de validación (87,4 %) son idénticas a alguna de training.bio, que además tiene 823 oraciones duplicadas. El F1 de la prueba completa (97,14 %) se mide en buena parte sobre oraciones vistas. En las 308 oraciones no vistas (1 079 entidades) es 96,99 % (precisión 96,86 %, recall 97,13 %). El Early Stopping y la elección de la mejor época se guiaron por una validación casi toda vista.
  • Los tipos más débiles son CIRUGIA (89,4 % de F1 en la prueba completa, 65 entidades; 84,9 % en la no vista, 35) y DOSIS (90,1 %, 189 entidades).
  • El texto clínico del enunciado, que es el ejemplo del widget, es una reescritura del primer caso de training.bio: ilustra la salida, pero no mide generalización.
  • El corpus etiqueta las menciones aunque estén negadas: en training.bio, «lesiones metastásicas» en «sin evidencia de lesiones metastásicas» lleva CANCER. El modelo hace lo mismo: en el texto clínico del enunciado marca como CANCER «lesiones metastásicas» (de «no evidenció lesiones metastásicas») y «metástasis» (de «negativa para metástasis»). Que detecte una entidad no significa que el hallazgo esté presente.
  • No se evaluó con textos de otra fuente. Cada configuración se entrenó con una sola semilla (42), y la publicada es la de mayor F1 en prueba de la rejilla, así que esa cifra es algo optimista.
  • Es un modelo hecho para un taller académico. No debe usarse para tomar decisiones clínicas.

Autoría

Julián Andrés Castaño Espinosa. Entrega individual de la Actividad 10 (Taller de clasificación de texto y NER) de Procesamiento de Lenguaje Natural (750137), Maestría Virtual en Computación para el Desarrollo de Aplicaciones Inteligentes, Universidad del Valle, periodo 2026-II. Profesor: Raúl Ernesto Gutiérrez de Piñérez Reyes.

Downloads last month
9
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for andresdfx/ner-prostata-xlmr

Finetuned
(4,303)
this model