¿Cómo implementar un NER?

Autor: | Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes qué es y cómo implementar un NER? NER es el acrónimo para named entity recognition y se encarga de etiquetar palabras en un texto en un conjunto de categorías (nombres de persona, de localización, de entidades de tiempo, etc.).

implementar un NER

Entonces, lo que nos permite un NER es, independientemente del contexto, hacer un taggeado por entidades. Por ejemplo, separar por ciudades, por la cardinalidad, por nombres de personas, empresas…

Implementar un NER

Las metodologías del NER han ido evolucionando para hacer estas clasificaciones, se han ido refinando desde lo más básico, que son las técnicas más clásicas y están basadas en reglas, como, por ejemplo, el módulo de re con Regex para hacer una detección de emails en Python.

Entonces, si hacemos un sistema basado en reglas, podemos implementar un NER que nos detecte emails simplemente usando esas reglas.

A lo largo del tiempo se han ido puliendo las metodologías para implementar un NER y se empezó a usar machine learning, donde se pudieron emplear la clasificación multiclase y el CRF.

Luego, llegaron métodos muchísimo más sofisticados basados en deep learning.

A diferencia de un problema de clasificación de documentos (en el que todo el documento se clasifica en una categoría), en el NER cada palabra (o, más correctamente, cada token) es etiquetado de forma secuencial.

Existen distintas aproximaciones para abordar este tipo de problemas y poder implementar un NER:

  • Clásicas: principalmente basadas en reglas.
  • Machine learning: aquí, a su vez, se distinguen dos categorías.
    • Clasificación multiclase: se busca clasificar cada token entre un conjunto de categorías sin información del contexto del token. Por ejemplo, podemos hacer una clasificación en la que tengamos los nombres de todas las empresas del mundo, tales como IBM, Microsoft, Google, etc.
    • CRF: se busca modelar el texto de manera secuencial mediante un grafo probabilístico. En cada token se extraen features que tratan de representar su contexto. A partir del contexto y las palabras, podemos hacer una identificación de entidades.
  • Deep learning: estado del arte (como en casi todas las áreas). Utilizar modelos como las Bi – LSTM (LSTM bidireccionales) permite inferir el contexto de un token de una manera más completa, tanto de tokens anteriores a él como de posteriores.
    Básicamente, las Bi – LSTM son redes neuronales que tratan las neuronas de manera secuencial. También se pueden hacer generación del lenguaje, un tema un poco más avanzado.

Lo que haremos nosotros es implementar un NER, una solución basada en un CRF:

¿Cómo implementar un NER?

Pasos que seguiremos para entrenar e implementar un NER

Es decir, un modelo de reconocimiento de entidades.

Etapa de entrenamiento

  1. Obtener un corpus de entrenamiento.
  2. Etiquetar todos los tokens. A aquellos que no corresponden a una categoría se les asocia la etiqueta o label ‘O’.
  3. Definir qué features se extraerán.
  4. Entrenar un modelo de clasificación secuencial para producir las etiquetas de los tokens.

Etapa de testeo

  1. Obtener un corpus de test etiquetado.
  2. Lanzar el modelo etiquetando los tokens.
  3. Analizar resultados.

IO/IOB Encoding

Existen dos maneras principales de etiquetar las etiquetas (IO e IOB) y poder implementar un NER. Estas son:

  • IO (insideoutside): cada token tendrá una etiqueta, no tiene en cuenta entidades compuestas por varios tokens o chuncks, como, por ejemplo, ‘Nueva York’.
  • IOB (insideoutsidebeginning): cada token tendrá una etiqueta. Sí se tienen en cuenta los chuncks. Para codificar el inicio y el final de las entidades, se incluyen los prefijos ‘B-‘ (beginning) e ‘I-‘ (inside) con el fin de indicar que un token es el inicio de una entidad o pertenece a la misma.
  • En ambos, la etiqueta ‘O’ (outside) significa que el token no pertenece a ninguna entidad.
¿Cómo implementar un NER?

Features

Algunas de las features que podemos extraer son:

  • Palabras:
    • El token actual e información sobre el mismo (mayúsculas, signos de puntuación…).
    • Tokens anteriores/posteriores e información sobre ellos.
    • Substrings (word shapes).
  • Información lingüística:
    • PoS tags (del token, de los anteriores/consecutivos).
  • Otras labels:
    • NER labels (del token actual, de los anteriores).

¿Quieres seguir avanzando?

Ahora que hemos visto cómo implementar un NER, es el momento de seguir aprendiendo. Para acceder a las opciones laborales del Big Data, una de las áreas en el mundo tech mejor pagadas y con mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva e íntegra adquirirás todos los conocimientos a nivel teórico y práctico imprescindibles para conseguir el trabajo de tus sueños en pocos meses. ¡No esperes más para impulsar tu carrera y pide ahora mismo más información!

Artículos ms leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado