Alternatives SpaCy pour l'extraction d'entités (NER)

Depuis plusieurs années, SpaCy est un standard de facto pour toute entreprise désireuse de lancer un projet d'extraction d'entités. Qu'est-ce qui a rendu spaCy si populaire ? Et existe-t-il de bonnes alternatives à spaCy en 2023 pour quiconque tente de lancer un projet d'extraction d'entités ? Discutons de ces points dans cet article.

SpaCy

SpaCy pour l'extraction d'entités

La première version de spaCy a été publiée en 2015 et elle est rapidement devenue un cadre standard pour l'extraction d'entités de niveau entreprise (également connue sous le nom de NER).

Si vous avez un morceau de texte non structuré (provenant du web par exemple) et que vous voulez en extraire des données structurées, comme des dates, des noms, des lieux, etc. spaCy est une très bonne solution.

SpaCy est intéressant car plusieurs modèles pré-entraînés sont disponibles dans une vingtaine de langues. (voir la suite ici). Cela signifie que vous ne devez pas nécessairement former votre propre modèle pour l'extraction d'entités. Cela signifie également que, si vous souhaitez former votre propre modèle, vous pouvez partir d'un modèle pré-formé au lieu de partir de zéro, ce qui peut vous faire gagner beaucoup de temps.

SpaCy est considéré comme un framework de "qualité production" car il est très rapide, fiable et accompagné d'une documentation complète.

Cependant, si les entités par défaut supportées par les modèles pré-entraînés de spaCy ne sont pas suffisantes, vous devrez travailler sur "l'annotation des données" (également connue sous le nom d'"étiquetage des données") afin d'entraîner votre propre modèle. Ce processus prend énormément de temps et de nombreux projets d'extraction d'entités d'entreprise échouent à cause de ce défi.

Disons que vous voulez extraire les titres de postes à partir d'un texte (d'un CV par exemple, ou d'une page web d'entreprise). Comme les modèles pré-entraînés de spaCy ne supportent pas une telle entité par défaut, vous devrez apprendre à spaCy à reconnaître les titres de postes. Vous devrez créer un ensemble de données d'entraînement qui contient plusieurs milliers d'exemples d'extractions de titres de postes (et peut-être même beaucoup plus !). Vous pouvez utiliser un logiciel d'annotation payant comme Prodigy (créé par l'équipe de spaCy), mais cela implique quand même beaucoup de travail humain. Il est en fait assez courant de voir des entreprises embaucher un groupe de contractants pendant plusieurs mois pour mener à bien un projet d'annotation de données. Un tel travail est tellement répétitif et ennuyeux que les jeux de données résultants contiennent souvent beaucoup d'erreurs...

Exemple d'annotation de données
Exemple d'annotation de données

Voyons quelles solutions alternatives vous pourriez essayer en 2023 !

Stanford CoreNLP

Stanford CoreNLP

La première version de Stanford CoreNLP a été publiée en 2013. Il s'agit d'un framework Java (alors que spaCy est un framework Python) qui permet d'effectuer des extractions d'entités avec de très bons résultats.

Stanford CoreNLP propose également des modèles pré-entraînés, mais moins que spaCy. (voir la suite ici).

La précision de ce cadre est similaire à celle de spaCy, mais elle dépend des données que vous analysez. Par exemple, Stanford CoreNLP donne de meilleurs résultats sur les données juridiques. Il convient également de noter que certaines entités sont traitées de manière légèrement différente par rapport à spaCy (c'est le cas de l'entité GPE par exemple).

En ce qui concerne les performances, Stanford semble clairement plus lent que spaCy, ce qui peut être un problème si vous essayez d'atteindre un débit très élevé.

Flair

Flair NLP

Flair est un framework Python plus récent (sorti en 2018) basé sur le framework d'apprentissage profond PyTorch.

Il gagne en popularité car il atteint une plus grande précision dans de nombreuses langues par rapport à spaCy. Plusieurs modèles pré-entraînés sont proposés (voir la suite ici).

Toutefois, cette amélioration de la précision se fait au détriment de la vitesse. Votre débit sera beaucoup plus faible que celui de spaCy.

Modèles d'IA génératifs (GPT-J, GPT-3...)

Il y a quelques années, un nouveau type de modèles d'IA a commencé à apparaître : les modèles génératifs. Ces modèles ont été initialement créés pour la génération de texte (écrire le début d'un morceau de texte et laisser le modèle générer le reste) mais les gens ont rapidement réalisé que ces modèles étaient très bons pour toutes sortes de cas d'utilisation du traitement du langage naturel, y compris l'extraction d'entités.

Les modèles génératifs les plus populaires aujourd'hui sont GPT-3, GPT-J, GPT-NeoX, T5 et Bloom. Tous ces modèles d'apprentissage profond utilisent l'architecture Transformer, inventée par Google en 2017.

Cette nouvelle génération de modèles d'IA est très lourde et coûteuse à exécuter. Ils nécessitent généralement du matériel haut de gamme basé sur un ou plusieurs GPU. Ils sont également plus lents que des frameworks comme spaCy. Mais grâce à ces modèles, il est désormais possible d'extraire n'importe quel type d'entité sans avoir à former un modèle dédié !

Il est possible d'extraire n'importe quelle entité sans créer de modèle dédié grâce à l'apprentissage en quelques clics. Cette technique consiste à montrer rapidement au modèle ce que vous voulez faire en ne faisant que quelques exemples au moment de l'exécution. Pour en savoir plus sur l'apprentissage du "few-shot", cliquez ici.

Pour en revenir à notre exemple d'extraction de titres de poste, si vous souhaitez extraire des titres de poste avec un modèle comme GPT-J, vous n'aurez pas besoin d'annoter de données. Vous économiserez ainsi des semaines ou des mois de travail humain. Et la précision sera très probablement beaucoup plus élevée que n'importe quelle extraction d'entité avec spaCy.

Consultez notre article sur la manière de réaliser facilement l'extraction d'entités avec des modèles GPT.

Conclusion

SpaCy est un excellent cadre de traitement du langage naturel qui est utilisé en production par de nombreuses entreprises aujourd'hui pour des tâches d'extraction d'entités.

Cependant, spaCy et les alternatives telles que Stanford CoreNLP ou Flair sont limitées en termes de précision, et elles nécessitent un travail d'annotation fastidieux afin d'extraire de nouvelles entités. En 2023, plusieurs modèles alternatifs basés sur la génération de texte pourront être utilisés pour l'extraction d'entités sans aucune annotation, comme GPT-J, GPT-NeoX, GPT-3... Ces nouveaux modèles aideront réellement de plus en plus d'entreprises à réussir leurs projets d'extraction d'entités.

Si vous souhaitez utiliser GPT-J et GPT-NeoX, n'hésitez pas à faire un essai sur l'API NLP Cloud. (Essayez-le ici)!

Juliette
Responsable du marketing chez NLP Cloud