Alternativas de SpaCy para la extracción de entidades (NER)

SpaCy lleva varios años siendo un estándar de facto para toda empresa dispuesta a lanzar un proyecto de extracción de entidades. ¿Qué ha hecho que SpaCy sea tan popular? ¿Y existen buenas alternativas a spaCy en 2023 para cualquiera que intente iniciar un proyecto de extracción de entidades? Vamos a discutir estos puntos en este artículo.

SpaCy

SpaCy para la extracción de entidades

La primera versión de spaCy se publicó en 2015 y rápidamente se convirtió en un marco estándar para la extracción de entidades a nivel empresarial (también conocido como NER).

Si tienes un trozo de texto no estructurado (procedente de la web, por ejemplo) y quieres extraer de él datos estructurados, como fechas, nombres, lugares, etc. spaCy es una solución muy buena.

SpaCy es interesante porque dispone de varios modelos preformados en una veintena de idiomas (más información aquí). Significa que no tiene que entrenar necesariamente su propio modelo para la extracción de entidades. También significa que, si desea entrenar su propio modelo, puede partir de un modelo preentrenado en lugar de empezar desde cero, lo que podría ahorrarle mucho tiempo.

SpaCy está considerado como un framework de "grado de producción" porque es muy rápido, fiable y viene con una completa documentación.

Sin embargo, si las entidades predeterminadas que admiten los modelos preentrenados de spaCy no son suficientes, tendrá que trabajar en la "anotación de datos" (también conocida como "etiquetado de datos") para entrenar su propio modelo. Este proceso lleva mucho tiempo y muchos proyectos de extracción de entidades empresariales fracasan debido a este reto.

Supongamos que desea extraer los títulos de los puestos de trabajo de un texto (de un currículum, por ejemplo, o de la página web de una empresa). Como los modelos preentrenados de spaCy no admiten este tipo de entidades por defecto, tendrá que enseñar a spaCy a reconocer los títulos de los puestos de trabajo. Tendrá que crear un conjunto de datos de entrenamiento que contenga varios miles de ejemplos de extracciones de títulos de puestos de trabajo (¡y puede que incluso muchos más!). Puede utilizar un software de anotación de pago como Prodigy (creado por el equipo de spaCy), pero sigue implicando mucho trabajo humano. De hecho, es bastante habitual que las empresas contraten a un grupo de contratistas durante varios meses para llevar a cabo un proyecto de anotación de datos. Un trabajo así es tan repetitivo y aburrido que los conjuntos de datos resultantes suelen contener muchos errores...

Ejemplo de anotación de datos
Ejemplo de anotación de datos

Veamos qué soluciones alternativas podrías probar en 2023.

Stanford CoreNLP

Stanford CoreNLP

La primera versión de Stanford CoreNLP se publicó en 2013. Se trata de un framework Java (mientras que spaCy es uno Python) que permite realizar extracción de entidades con muy buenos resultados.

Stanford CoreNLP también propone modelos preentrenados, pero menos que spaCy (más información aquí).

La precisión de este marco es similar a la de spaCy, pero depende de los datos que se analicen. Por ejemplo, Stanford CoreNLP da mejores resultados en datos jurídicos. También cabe señalar que algunas entidades se tratan de forma ligeramente diferente en comparación con spaCy (es el caso de la entidad GPE, por ejemplo).

En cuanto al rendimiento, Stanford parece claramente más lento que spaCy, lo que podría ser un problema si se intenta alcanzar un rendimiento muy alto.

Flair

Flair PNL

Flair es un framework de Python más reciente (lanzado en 2018) basado en el framework de aprendizaje profundo PyTorch.

Está ganando mucha popularidad porque alcanza una mayor precisión en muchos idiomas en comparación con spaCy. Se proponen varios modelos preentrenados (más información aquí).

Sin embargo, esta mejora de la precisión se produce a costa de la velocidad. Su rendimiento será mucho menor en comparación con spaCy.

Modelos Generativos de IA (GPT-J, GPT-3...)

Hace un par de años, empezó a aparecer un nuevo tipo de modelos de IA: los modelos generativos. Estos modelos se crearon inicialmente para la generación de texto (escribir el principio de un fragmento de texto y dejar que el modelo genere el resto), pero la gente se dio cuenta rápidamente de que estos modelos eran muy buenos en todo tipo de casos de uso de procesamiento del lenguaje natural, incluida la extracción de entidades.

Los modelos generativos más populares en la actualidad son GPT-3, GPT-J, GPT-NeoX, T5 y Bloom. Todos estos modelos de aprendizaje profundo utilizan la arquitectura Transformer, inventada por Google en 2017.

Esta nueva generación de modelos de IA es muy pesada y cara de ejecutar. Suelen requerir hardware de gama alta basado en una o varias GPU. Además, son más lentos que frameworks como spaCy. Pero gracias a estos modelos ahora es posible extraer cualquier tipo de entidad sin necesidad de entrenar un modelo dedicado.

Extraer cualquier entidad sin crear un modelo dedicado es posible gracias al aprendizaje por pocos disparos. Esta técnica consiste en mostrar rápidamente al modelo lo que se quiere hacer con solo hacer un par de ejemplos en tiempo de ejecución. Obtenga más información sobre el aprendizaje de pocos disparos aquí.

Volviendo a nuestro ejemplo de extracción de títulos de trabajo, si desea extraer títulos de trabajo con un modelo como GPT-J no necesitará anotar ningún dato. Le ahorrará semanas o meses de trabajo humano. Y lo más probable es que la precisión sea mucho mayor que la de cualquier extracción de entidades con spaCy.

Consulte nuestro artículo sobre cómo realizar fácilmente la extracción de entidades con modelos GPT.

Conclusión

SpaCy es un magnífico marco de procesamiento del lenguaje natural que muchas empresas utilizan hoy en día para tareas de extracción de entidades.

Sin embargo, spaCy y alternativas como Stanford CoreNLP o Flair son limitadas en términos de precisión, y requieren un tedioso trabajo de anotación para extraer nuevas entidades. En 2023 se podrán utilizar varios modelos alternativos basados en la generación de texto para la extracción de entidades sin ninguna anotación, como GPT-J, GPT-NeoX, GPT-3... Estos nuevos modelos ayudarán realmente a que cada vez más empresas tengan éxito en sus proyectos de extracción de entidades.

Si desea utilizar GPT-J y GPT-NeoX, no dude en probarlos en la API de NLP Cloud (pruébelo aquí)!

Juliette
Responsable de marketing de NLP Cloud