En un mundo donde el volumen de datos textuales crece exponencialmente, contar con herramientas que permitan estructurar y extraer información clave es fundamental. La extracción de entidades nombradas (Named Entity Recognition o NER) es una de las técnicas más potentes del procesamiento del lenguaje natural (NLP), y la biblioteca spaCy es una de las más eficientes y fáciles de usar para implementarla. En este post aprenderás qué es NER, cómo funciona, sus aplicaciones prácticas y cómo implementarla paso a paso con spaCy, desde la instalación hasta el entrenamiento personalizado.
¿Qué es la extracción de entidades nombradas (NER)?
La extracción de entidades nombradas es una técnica de NLP que identifica y clasifica automáticamente fragmentos de texto en categorías predefinidas como personas, organizaciones, lugares, fechas, cantidades, entre otros.
🔹 “Apple adquirió Beats por 3.000 millones de dólares en 2014.”
🔹 PERSON: Apple
🔹 ORG: Beats
🔹 MONEY: 3.000 millones de dólares
🔹 DATE: 2014
Esta estructura permite transformar texto no estructurado en datos que pueden ser analizados, visualizados o utilizados para alimentar otros sistemas.
¿Por qué es importante NER en procesamiento de texto?
NER no solo permite entender el contenido de textos largos, sino que también ayuda a automatizar tareas y tomar decisiones basadas en datos.
🔹 Extraer nombres de clientes, empresas o productos de correos o reseñas
🔹 Analizar menciones de marcas o figuras públicas en redes sociales
🔹 Automatizar la lectura de contratos y documentos legales
🔹 Facilitar la búsqueda avanzada en bases de datos o sitios web
Gracias a su capacidad para organizar grandes volúmenes de texto, NER se ha convertido en una técnica imprescindible para analistas, periodistas, investigadores y empresas.
¿Qué es spaCy y por qué usarlo para NER?
spaCy es una biblioteca de Python para procesamiento del lenguaje natural orientada a aplicaciones prácticas, rápidas y robustas.
🔹 Es open source y tiene soporte para múltiples idiomas
🔹 Incluye modelos preentrenados de NER que funcionan “out of the box”
🔹 Ofrece integración con frameworks de machine learning como PyTorch y TensorFlow
🔹 Es ideal para producción: rápida, optimizada y fácil de escalar
spaCy también permite entrenar modelos propios si necesitas detectar entidades específicas no cubiertas por defecto.
Instalación de spaCy y modelos preentrenados
Paso 1 – Instalar spaCy
pip install spacy
Paso 2 – Descargar un modelo de idioma
python -m spacy download en_core_web_sm
Puedes elegir modelos pequeños (sm), medianos (md) o grandes (lg), según el nivel de precisión requerido.
Cómo aplicar NER con spaCy en cinco pasos
1. Cargar spaCy y el modelo de lenguaje
import spacy
nlp = spacy.load("en_core_web_sm")
2. Procesar un texto
doc = nlp("Barack Obama fue presidente de Estados Unidos entre 2009 y 2017.")
3. Extraer entidades
for ent in doc.ents:
print(ent.text, ent.label_)
Resultado:
🔹 Barack Obama → PERSON
🔹 Estados Unidos → GPE
🔹 2009 → DATE
🔹 2017 → DATE
4. Visualizar entidades con displacy
from spacy import displacy
displacy.render(doc, style="ent", jupyter=True)
Este visualizador permite ver las entidades resaltadas en el texto con colores diferenciados.
5. Acceder a los spans de las entidades
entities = [(ent.text, ent.start_char, ent.end_char, ent.label_) for ent in doc.ents]
print(entities)
Esto es útil si quieres extraer las entidades para almacenarlas en bases de datos o visualizarlas en dashboards.
Categorías de entidades que detecta spaCy
spaCy viene con una lista predefinida de entidades que incluye:
🔹 PERSON: personas
🔹 ORG: organizaciones
🔹 GPE: ubicaciones geopolíticas
🔹 LOC: localizaciones
🔹 DATE: fechas
🔹 TIME: horas
🔹 MONEY: cantidades de dinero
🔹 PRODUCT: productos
🔹 EVENT: eventos históricos o deportivos
🔹 LAW: referencias legales
🔹 WORK_OF_ART: libros, películas, etc.
Puedes consultar todas las categorías en la documentación oficial o imprimirlas directamente desde tu entorno.
Aplicaciones prácticas de NER con spaCy
Análisis de medios y noticias
🔹 Extraer nombres de empresas mencionadas en artículos
🔹 Monitorizar eventos importantes por fecha y lugar
🔹 Detectar tendencias en coberturas periodísticas
CRM y atención al cliente
🔹 Detectar nombres, correos o ciudades en formularios
🔹 Automatizar el procesamiento de consultas por chat
🔹 Identificar temas frecuentes por entidad
Fintech y documentos legales
🔹 Extraer entidades legales de contratos automáticamente
🔹 Clasificar riesgos, partes y fechas clave
🔹 Digitalizar procesos de onboarding
Ciencia de datos y salud
🔹 Analizar estudios médicos extrayendo enfermedades, tratamientos y autores
🔹 Crear bases de datos estructuradas a partir de textos científicos
Entrenar tu propio modelo de NER con spaCy
Si necesitas detectar entidades personalizadas como nombres de productos, códigos internos o términos técnicos, puedes entrenar tu propio modelo.
H3: Paso 1 – Definir ejemplos de entrenamiento
TRAIN_DATA = [
("InspiraIA lanzó un nuevo modelo de NLP.", {"entities": [(0, 8, "ORG")]}),
("Juan compró el producto ZX-42.", {"entities": [(20, 25, "PRODUCT")]}),
]
H3: Paso 2 – Crear el modelo y añadir el componente de NER
import spacy
from spacy.training.example import Example
nlp = spacy.blank("es")
ner = nlp.add_pipe("ner")
ner.add_label("ORG")
ner.add_label("PRODUCT")
H3: Paso 3 – Entrenar el modelo
import random
nlp.begin_training()
for i in range(20):
random.shuffle(TRAIN_DATA)
for text, annotations in TRAIN_DATA:
doc = nlp.make_doc(text)
example = Example.from_dict(doc, annotations)
nlp.update([example])
Una vez entrenado, puedes guardar el modelo y aplicarlo a nuevos textos como lo harías con un modelo preentrenado.
Buenas prácticas en extracción de entidades con spaCy
🔹 Revisa las entidades manualmente para validar la precisión
🔹 Evita textos demasiado cortos que no proporcionen contexto
🔹 Usa modelos grandes para tareas complejas
🔹 Combina NER con reglas personalizadas para mejorar la cobertura
🔹 Entrena modelos solo cuando sea necesario: muchas veces los modelos por defecto son suficientes
Limitaciones y desafíos de NER
🔹 Ambigüedad: una palabra puede ser entidad en un contexto y no en otro
🔹 Idioma: los modelos por defecto pueden no tener soporte para todos los idiomas o dominios
🔹 Entidades complejas: algunas entidades son difíciles de extraer si no están bien formadas
🔹 Costo computacional: entrenar modelos personalizados requiere recursos y tiempo
Soluciones posibles incluyen el uso de transfer learning, anotación manual de más datos y ajuste de hiperparámetros.
La extracción de entidades nombradas (NER) es una herramienta poderosa para transformar texto sin estructura en datos valiosos. Con spaCy, puedes implementar NER de forma rápida, precisa y escalable, ya sea utilizando modelos preentrenados o desarrollando tus propios modelos para casos de uso específicos. Desde marketing y legaltech hasta ciencia de datos y análisis de medios, las posibilidades son enormes. Si estás trabajando con grandes volúmenes de texto, aprender a aplicar NER puede darte una ventaja competitiva significativa. Empieza hoy con spaCy y convierte tus textos en insights accionables.