El Reconocimiento de Entidades Nombradas (NER) identifica elementos clave en un texto, como personas, organizaciones, ubicaciones, fechas o cantidades. Es esencial en minería de información, chatbots, motores de búsqueda y análisis de documentos.
import spacy
nlp = spacy.load("es_core_news_md")
doc = nlp("Apple lanzó el iPhone en California en 2007")
for ent in doc.ents:
print(ent.text, ent.label_)
# Apple ORG
# iPhone MISC
# California LOC
# 2007 DATE
Las etiquetas pueden incluir: PERSON, ORG, LOC, DATE, MONEY, entre otras.
El NER puede integrarse en aplicaciones para:
import json
ents = [{"text": e.text, "label": e.label_} for e in doc.ents]
print(json.dumps(ents, ensure_ascii=False, indent=2))
Este formato facilita integrar la información extraída en APIs o bases de datos.
spaCy incluye un visualizador integrado (displacy):
from spacy import displacy
texto = "Lionel Messi juega para el Inter de Miami en Estados Unidos."
doc = nlp(texto)
displacy.serve(doc, style="ent")
Esto abre un servidor local con el texto resaltado en colores según el tipo de entidad.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Texto(BaseModel):
text: str
@app.post("/ner")
async def get_entities(item: Texto):
doc = nlp(item.text)
ents = [{"text": e.text, "label": e.label_} for e in doc.ents]
return {"entities": ents}
Podemos entrenar un modelo NER para dominios específicos:
El NER transforma texto no estructurado en datos estructurados útiles. Dominarlo permite construir soluciones de alto valor en sectores como salud, derecho, finanzas y marketing.