Tokenizador-medico-xlm-espanol2-sentencepiece
Un tokenizador especializado en español médico basado en el algoritmo Unigram de SentencePiece, compatible con la arquitectura XLM-RoBERTa.
Developed by: anvorja
Descripción
Este tokenizador ha sido entrenado con un amplio corpus de textos en español, con el objetivo de proporcionar una tokenización eficiente para textos del dominio médico. Utiliza el algoritmo SentencePiece Unigram, que ofrece ventajas significativas para el procesamiento de terminología médica compleja.
Características principales
- Algoritmo: SentencePiece Unigram
- Vocabulario: 52,000 tokens
- Tokens especiales:
<s>
,<pad>
,</s>
,<unk>
,<mask>
- Implementación: XLMRobertaTokenizerFast (basada en Rust para mayor eficiencia)
- Enfoque: Optimizado para textos médicos en español
- Compatibilidad: Diseñado para usar con modelos XLM-RoBERTa
Uso básico
from transformers import XLMRobertaTokenizerFast
# Cargar el tokenizador
tokenizer = XLMRobertaTokenizerFast.from_pretrained("anvorja/tokenizador-medico-xlm-espanol2-sentencepiece")
# Ejemplo de tokenización
texto = "El paciente presenta síntomas de hipertensión arterial y diabetes mellitus tipo 2."
tokens = tokenizer.tokenize(texto)
print(tokens)
# ['▁El', '▁paciente', '▁presenta', '▁síntomas', '▁de', '▁hipertensión', '▁arterial', '▁y', '▁diabetes', '▁melli', 'tus', '▁tipo', '▁2', '.']
# Tokenización para usar con modelos
inputs = tokenizer(texto, return_tensors="pt")
print(inputs)
Integración con modelos XLM-RoBERTa
from transformers import XLMRobertaModel, XLMRobertaTokenizerFast
# Cargar el tokenizador
tokenizer = XLMRobertaTokenizerFast.from_pretrained("anvorja/tokenizador-medico-xlm-espanol2-sentencepiece")
# Cargar un modelo pretrained
model = XLMRobertaModel.from_pretrained("xlm-roberta-base")
# Procesar texto
texto = "Paciente diagnosticado con carcinoma ductal infiltrante."
inputs = tokenizer(texto, return_tensors="pt")
outputs = model(**inputs)
# Las representaciones se pueden usar para tareas downstream
Ejemplo de tokenización de textos médicos
Texto médico | Tokens |
---|---|
"El paciente ha sido diagnosticado con neumonía." | ['▁El', '▁paciente', '▁ha', '▁sido', '▁diagnosticado', '▁con', '▁neumonía', '.'] |
"Prescripción: paracetamol 500mg cada 8 horas." | ['▁Pre', 'scripción', ':', '▁para', 'cet', 'amo', 'l', '▁50', '0mg', '▁cada', '▁8', '▁horas', '.'] |
"Ki67 56% positivo en células tumorales." | ['▁Ki', '67', '▁', '56', '%', '▁positivo', '▁en', '▁células', '▁tumorales', '.'] |
Detalles técnicos
Este tokenizador fue creado siguiendo estos pasos:
- Entrenamiento de un tokenizador SentencePieceUnigramTokenizer en un corpus extenso de español
- Conversión a PreTrainedTokenizerFast con configuración de tokens especiales
- Adaptación a XLMRobertaTokenizerFast para compatibilidad con la arquitectura XLM-RoBERTa
Ventajas del algoritmo Unigram para textos médicos
- Manejo probabilístico de segmentación: Permite múltiples formas de segmentar palabras complejas
- Mejor representación de términos técnicos: Segmenta términos médicos en subpalabras semánticamente significativas
- Eficacia con morfología compleja: Adecuado para la estructura de términos médicos con prefijos y sufijos latinos/griegos
- Tratamiento consistente: Maneja uniformemente símbolos, números y términos especiales comunes en textos médicos
Personalización para términos específicos
Si necesitas asegurarte de que ciertos términos médicos específicos (como marcadores tumorales, nombres de medicamentos, etc.) sean tratados como tokens únicos, puedes agregar estos términos al vocabulario:
# Agregar términos médicos específicos
nuevos_terminos = ["HER2+", "c-erbB-2", "TNM", "T1N0M0"]
num_agregados = tokenizer.add_tokens(nuevos_terminos)
print(f"Se agregaron {num_agregados} nuevos tokens")
# Si estás utilizando un modelo, debes redimensionar su capa de embeddings
model.resize_token_embeddings(len(tokenizer))
Citación
Si utilizas este tokenizador en tu investigación o aplicación, por favor considera citar:
@misc{anvorja2025medical-tokenizer,
author = {Vor Ja, An},
title = {Tokenizador médico XLM-RoBERTa español con Unigram},
year = {2025},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/anvorja/tokenizador-medico-xlm-espanol2-sentencepiece}}
}