DatiLab - Laboratorio de datos

NER Personalizado: Cómo Entrenar tu Propio Modelo de Reconocimiento de Entidades con IA

Publicado el 10 de septiembre de 2026

#Inteligencia Artificial,NER Personalizado,Reconocimiento de Entidades Nombradas,Procesamiento de Lenguaje Natural,spaCy,Python,Machine Learning
NER Personalizado: Cómo Entrenar tu Propio Modelo de Reconocimiento de Entidades con IA

NER Personalizado: Cómo Entrenar tu Propio Modelo de Reconocimiento de Entidades con IA

El Reconocimiento de Entidades Nombradas (NER, por sus siglas en inglés) es una de las técnicas más poderosas dentro del Procesamiento de Lenguaje Natural (PLN). Permite identificar y clasificar automáticamente elementos clave en un texto, como nombres de personas, organizaciones, lugares, fechas, productos y mucho más. Pero ¿qué sucede cuando los modelos genéricos no son suficientes para tu caso de uso específico? Ahí es donde entra el NER personalizado.

En el ecosistema tecnológico latinoamericano, y particularmente en Colombia, empresas de sectores como fintech, legaltech, salud digital y e-commerce están comenzando a adoptar soluciones de PLN adaptadas a sus necesidades particulares. Según el informe Estado del Desarrollo de Software en Colombia 2023 de MinTIC, más del 34% de las empresas tech del país están invirtiendo activamente en soluciones de inteligencia artificial, lo que abre una enorme oportunidad para implementar NER personalizado en contextos locales.

¿Qué es el NER y por qué necesitas uno personalizado?

Un modelo NER estándar, como los que vienen preentrenados en spaCy o Hugging Face, está entrenado con corpus generales en inglés o español neutro. Esto significa que puede reconocer entidades comunes como PERSON, ORG o GPE, pero fallará cuando necesites identificar entidades específicas de tu dominio.

Imagina que trabajas en una empresa colombiana de seguros y necesitas extraer automáticamente de contratos: nombres de asegurados, números de póliza, coberturas específicas o municipios del territorio nacional. Un modelo genérico simplemente no estará optimizado para esto. Un NER personalizado te permite definir tus propias categorías de entidades y entrenarlo con datos propios de tu negocio.

Casos de uso reales en Colombia

  • Sector legal: Extracción de partes procesales, juzgados, artículos del Código Civil colombiano en documentos jurídicos.
  • Sector salud: Identificación de medicamentos, diagnósticos CIE-10, EPS y centros médicos en historias clínicas.
  • Fintech y banca: Reconocimiento de entidades financieras reguladas por la SFC, productos bancarios y montos en transacciones.
  • E-commerce: Extracción de marcas, referencias de productos y ciudades de despacho en descripciones de pedidos.
  • Medios y periodismo: Identificación de políticos, partidos, municipios y eventos en noticias nacionales.

Herramientas principales para construir un NER personalizado

El ecosistema open source ofrece excelentes opciones para desarrollar modelos NER a medida. Las más utilizadas por la comunidad de desarrolladores en Colombia y Latinoamérica son:

1. spaCy

spaCy es probablemente la librería de PLN más popular para producción. Ofrece un pipeline modular que permite entrenar componentes NER de forma eficiente. Su versión 3.x introdujo el sistema de configuración basado en archivos config.cfg, lo que facilita la reproducibilidad de experimentos.

import spacy
from spacy.tokens import DocBin

nlp = spacy.blank("es")
ner = nlp.add_pipe("ner")
ner.add_label("POLIZA")
ner.add_label("ASEGURADO")
ner.add_label("MUNICIPIO_COL")

2. Hugging Face Transformers

Para casos donde se requiere mayor precisión, los modelos basados en transformers como BERT, RoBERTa o los modelos multilingües como bert-base-multilingual-cased ofrecen resultados superiores. La comunidad hispanohablante también puede aprovechar modelos como dccuchile/bert-base-spanish-wwm-cased (BETO), entrenado específicamente en español.

3. Label Studio y Doccano

Antes de entrenar cualquier modelo, necesitas datos anotados. Herramientas como Label Studio o Doccano permiten crear interfaces de anotación colaborativa donde tu equipo puede etiquetar entidades en textos reales de tu dominio.

Paso a paso: Entrenando tu primer NER personalizado con spaCy

Paso 1: Preparación y anotación de datos

La calidad de tu modelo depende directamente de la calidad de tus datos de entrenamiento. Como regla general, necesitas al menos 200-500 ejemplos anotados por categoría de entidad para obtener resultados aceptables. Para entidades muy específicas o con poca variabilidad, puedes comenzar con menos.

El formato de anotación en spaCy utiliza offsets de caracteres:

TRAIN_DATA = [
  ("La póliza No. 123456 cubre al asegurado Juan Pérez en Medellín.",
   {"entities": [(13, 19, "POLIZA"), (43, 53, "ASEGURADO"), (57, 65, "MUNICIPIO_COL")]})
]

Paso 2: Conversión al formato DocBin

spaCy 3.x requiere que los datos de entrenamiento estén en formato binario .spacy:

from spacy.tokens import DocBin

db = DocBin()
for text, annotations in TRAIN_DATA:
    doc = nlp.make_doc(text)
    ents = []
    for start, end, label in annotations["entities"]:
        span = doc.char_span(start, end, label=label)
        if span is not None:
            ents.append(span)
    doc.ents = ents
    db.add(doc)
db.to_disk("./train.spacy")

Paso 3: Configuración y entrenamiento

Genera el archivo de configuración base con el comando:

python -m spacy init config config.cfg --lang es --pipeline ner

Luego entrena el modelo:

python -m spacy train config.cfg --output ./output --paths.train ./train.spacy --paths.dev ./dev.spacy

Paso 4: Evaluación y métricas

Las métricas clave para evaluar un modelo NER son Precisión, Recall y F1-Score por categoría. Un F1-Score superior a 0.85 se considera bueno para la mayoría de aplicaciones en producción. spaCy genera estas métricas automáticamente durante el entrenamiento.

Desafíos específicos del español colombiano

El español hablado y escrito en Colombia presenta particularidades que pueden afectar el rendimiento de los modelos NER:

  • Topónimos locales: Nombres de municipios, veredas y barrios con grafías únicas (Ubaté, Chiquinquirá, Buenaventura) que no aparecen en corpus internacionales.
  • Jerga y regionalismos: Términos coloquiales que pueden ser parte de entidades nombradas en contextos informales.
  • Abreviaciones institucionales: Siglas como DIAN, SFC, ICBF, Colpensiones que deben ser reconocidas como organizaciones.
  • Nombres compuestos: La alta frecuencia de nombres y apellidos compuestos en Colombia (Juan Carlos, María Fernanda) puede dificultar la segmentación de entidades de tipo persona.

Para mitigar estos desafíos, se recomienda enriquecer el vocabulario del modelo con gazzetteers (listas de entidades conocidas) específicos para Colombia, como el listado oficial de municipios del DANE o el directorio de entidades del Estado.

Integración en producción: APIs y microservicios

Una vez entrenado el modelo, el siguiente paso es integrarlo en tus aplicaciones. La práctica más común es exponer el modelo como una API REST usando FastAPI o Flask:

from fastapi import FastAPI
import spacy

app = FastAPI()
nlp = spacy.load("./output/model-best")

@app.post("/ner")
def extract_entities(text: str):
    doc = nlp(text)
    return [{"text": ent.text, "label": ent.label_, "start": ent.start_char, "end": ent.end_char} for ent in doc.ents]

Para equipos en Colombia que trabajan con infraestructura cloud, tanto AWS SageMaker, Google Cloud AI Platform como Azure Machine Learning ofrecen opciones para desplegar modelos de PLN con escalabilidad automática, lo que es crucial para aplicaciones con alto volumen de documentos.

Consideraciones éticas y de privacidad

En Colombia, la Ley 1581 de 2012 (Ley de Protección de Datos Personales) y su decreto reglamentario establecen obligaciones claras sobre el tratamiento de datos personales. Al construir un NER personalizado que procesa nombres, documentos de identidad u otra información personal, debes asegurarte de:

  • Obtener consentimiento informado para el uso de datos en entrenamiento de modelos.
  • Implementar técnicas de anonimización o seudonimización en los datos de entrenamiento cuando sea posible.
  • Documentar el propósito del tratamiento de datos en tu política de privacidad.
  • Considerar el uso de Federated Learning para entrenar modelos sin centralizar datos sensibles.

El futuro del NER personalizado en Colombia

La adopción de modelos de lenguaje grande (LLMs) como GPT-4, Claude o Llama 3 está abriendo nuevas posibilidades para el NER. Técnicas como el few-shot prompting permiten realizar extracción de entidades sin necesidad de entrenamiento formal, simplemente describiendo las entidades en el prompt. Sin embargo, para aplicaciones en producción con requisitos de latencia y privacidad, los modelos NER tradicionales siguen siendo la opción más práctica y eficiente.

En el contexto colombiano, iniciativas como Colombia Productiva y los programas de transformación digital del MinTIC están impulsando la adopción de IA en PyMEs, lo que representa una oportunidad enorme para desarrolladores y consultores especializados en PLN que puedan ofrecer soluciones NER adaptadas a sectores específicos del mercado nacional.

Preguntas Frecuentes (FAQ)

¿Cuántos datos necesito para entrenar un NER personalizado?

Depende de la complejidad de tus entidades. Para entidades bien definidas y con patrones claros, puedes comenzar con 100-200 ejemplos por categoría. Para entidades ambiguas o con mucha variabilidad, se recomiendan 500 o más ejemplos. La calidad de la anotación es más importante que la cantidad.

¿Es mejor usar spaCy o Hugging Face para NER personalizado?

spaCy es ideal para producción por su velocidad y facilidad de integración. Hugging Face ofrece mayor precisión gracias a los transformers, pero requiere más recursos computacionales. Para la mayoría de casos de uso en empresas colombianas medianas, spaCy con el modelo es_core_news_lg como base es un excelente punto de partida.

¿Puedo usar NER personalizado con documentos en PDF?

Sí, pero primero necesitas extraer el texto del PDF usando librerías como pdfplumber, PyMuPDF o servicios de OCR como Google Document AI o AWS Textract para documentos escaneados. Una vez tienes el texto plano, el NER funciona normalmente.

¿Qué tan costoso es entrenar y desplegar un modelo NER?

El entrenamiento de un modelo NER con spaCy puede realizarse en una máquina local con CPU en pocas horas para datasets pequeños. Para modelos basados en transformers, se recomienda usar GPU. En términos de infraestructura cloud, una instancia de entrenamiento en AWS o GCP puede costar entre 1 y 10 USD por hora dependiendo del hardware. El despliegue como API puede hacerse de forma muy económica con contenedores en servicios serverless.

¿El NER personalizado funciona bien con textos informales o con errores ortográficos?

Los modelos NER son sensibles a errores ortográficos y variaciones de escritura. Para mejorar la robustez, puedes implementar un paso de preprocesamiento con corrección ortográfica, o incluir ejemplos con errores típicos en tus datos de entrenamiento. También existen técnicas de data augmentation que generan variaciones de tus ejemplos para hacer el modelo más robusto.

Conclusión

El NER personalizado representa una de las inversiones más rentables que puede hacer un equipo de desarrollo en Colombia cuando trabaja con grandes volúmenes de texto no estructurado. Desde la extracción de información en contratos legales hasta el análisis de noticias o la automatización de procesos en salud, las aplicaciones son prácticamente ilimitadas. La combinación de herramientas maduras como spaCy y Hugging Face, junto con el creciente ecosistema de IA en Colombia, hace que este sea el momento ideal para comenzar a explorar estas tecnologías.

¿Ya estás trabajando con NER en algún proyecto? ¿Tienes dudas sobre cómo adaptar estas técnicas a tu caso de uso específico? Déjanos tu comentario y con gusto te orientamos. También puedes compartir este artículo con tu equipo de desarrollo para que todos estén al tanto de estas poderosas herramientas de inteligencia artificial.

📩 Contacto

Hablemos de tu próximo proyecto

¿Listo para llevar tu negocio al siguiente nivel?. Completa el formulario y te contactaremos en unas horas.

Teléfono

+57 321 557 7073

Ubicación

Bogotá, Colombia

Envíanos un mensaje

Al enviar este formulario, aceptas nuestra política de privacidad.