IA pour le texte : TAL, NLP et NER

Lien

Le Traitement Automatique du Langage (TAL / NLP Neural Language Processing) a le vent en poupe. La sémantique contenue dans la langue naturelle écrite peut être ainsi extraite en utilisant des méthodes statistiques. Des logiciels dédiés à la reconnaissance des entités nommées / Named Entity Recognition (NER), et au plongement lexical / Word Embedding sont apparus. Ils permettent de construire par apprentissage supervisé ou non des modèles de langage qui vont permettre l’extraction de mots simples (tokens, uni-gram) et de groupes de mots (di-gram, tri-gram) dans des textes distincts de ceux ayant servi à l’apprentissage.

Un modèle spécifique d’une langue (modèle de langage) est préalablement entrainé sur des données particulières. Cette étape fort délicate nécessite d’importantes ressources informatiques en terme de calcul et fait appel aux processeurs graphiques (GPU) des ordinateurs. De multiples opérations plus complexes mais peu couteuses deviennent ensuite possibles. Des mots et groupes de mots typés peuvent être extraits des textes d’un corpus. Des noms de personne, d’organismes, de lieux, de dates, ou de terminologie métier deviennent détectés dans des textes à l’aide du modèle.

Des possibilités de prédiction supplémentaires incluent la mise en évidence des émotions, le classement des textes en catégories prédéfinies, des liens sémantiques, l’analyse de la réputation, la traduction automatique. La génération automatique de textes d’un style particulier, de même que la réponse intelligente à des questions du public, l’autocomplétion d’une requête deviennent possibles. Les capacités du modèle peuvent être évaluées statistiquement. Nous nous intéresserons ici essentiellement à l’extraction automatique de mots-clés typés, autrement dit à l’indexation automatique à l’aide d’une IA.

Quelques logiciels libres et des services cloud payants dédiés à la reconnaissance des entités dans des textes numériques sont listés et pour certains testés. Alors que les grands acteurs du numérique proposent des solutions commerciales, de petites sociétés et des solutions académiques se montrent performantes et développent en python et java essentiellement des librairies logicielles et des applications dédiées à l’entrainement de modèles et à leur fonctionnement sur des corpus de différentes natures.

  • Traitement Automatique du Langage Naturel en français, Maël Fabien : Lien

1. Extraction d’entités nommées

Logiciels en Python et licence libre, sauf signalement.

1.1 Stanford Natural Language Processing

  • We provide a widely used, integrated NLP toolkit, Stanford CoreNLP. Licence GNU V3.

1.2 spaCy

SpaCy est une bibliothèque logicielle Python de traitement automatique des langues développée par Matt Honnibal de l’entreprise Explosion AI.

  • spaCy : Lien
  • Introduction to Information Extraction using Python and spaCy, 2019 : Lien;
  • Natural Language Processing: Experimenting spaCy and updating the model (Part 5), smartlake : Lien
  • How to create custom NER model in Spacy, 2019 : Lien. Licence MIT.
  • Building a custom Named Entity Recognition model using SpaCy, 2020, Landstein : Lien
  • spaCy Tutorial to Learn and Master Natural Language Processing (NLP), 2020, Joshi : Lien
  • Building a Flask API to Automatically Extract Named Entities Using SpaCy. How to use the Named Entity Recognition module in spaCy to identify people, organizations, or locations in text, then deploy a Python API with Flask : Lien
  • Populating a Network Graph with Named-Entities, Ednalyn C. De Dios, 2020 : Lien
  • Building a Flask API to Automatically Extract Named Entities Using SpaCy, S. Li, 2019 : Lien

1.3 NLTK (Natural Language Toolkit)

  • Natural Language Processing with Python provides a practical introduction to programming for language processing. Written by the creators of NLTK, it guides the reader through the fundamentals of writing Python programs, working with corpora, categorizing text, analyzing linguistic structure, and more. Licence Apache.

1.4 gensim

Gensim is an open-source library for unsupervised topic modeling and natural language processing, using modern statistical machine learning. Gensim is implemented in Python and Cython. Licence LGPL

1.5 OpenNLP

  • Apache OpenNLP, Java, Licence Apache : Lien

1.6 scikit-learn

  • Scikit-learn; bibliothèque libre Python destinée à l’apprentissage automatique. Elle est développée par de nombreux contributeurs parmi lesquels Inria et Télécom Paris : Lien
  • Tutorial : Extracting Keywords with TF-IDF and Python’s Scikit-Learn, Kavita Ganesan : Lien
  • Named Entity Recognition and Classification with Scikit-Learn. How to train machine learning models for NER using Scikit-Learn’s libraries, 2018, Susan Li : Lien

1.7 AllenNLP

  • AllenNLP makes it easy to design and evaluate new deep learning models for nearly any NLP problem, along with the infrastructure to easily run them in the cloud or on your laptop. Lien

1.8 LexNLP

  • LexNLP is a library for working with real, unstructured legal text, including contracts, plans, policies, procedures, and other material. LexNLP provides functionality such as segmentation and tokenization, pre-trained classifiers for document type, broad range of fact extraction : Lien
  • LexNLP — Library For Automated Text Extraction & NER : Lien
  • LexNLP: Natural language processing and information extraction for legal and regulatory texts, M. J Bommarito II, D. M. Katz, E. M. Detterman, 2018 : Lien

2. Plongement lexical

Le plongement lexical (en anglais, word embedding) est une manière de représenter des mots comme des vecteurs, typiquement dans un espace de quelques centaines de dimensions. Un mot est transformé en chiffres. Le vecteur de représentation du mot est appris via un algorithme itératif à partir d’une grande quantité de texte. L’algorithme essaie de positionner les vecteurs dans l’espace de manière à rapprocher les mots sémantiquement proches, et éloigner les mots sémantiquement distants. En retrouvant les mots les plus proches dans l’espace de plongements d’un mot donné en entrée, le modèle permet d’identifier des synonymes ou des intrus dans une liste de mots, des qualificatifs d’un nom. Une fois qu’un modèle est obtenu, plusieurs tâches standards deviennent alors possibles.

2.1 word2vec

  • An Idiot’s Guide to Word2vec Natural Language Processing, 2018 : Lien
  • Word2Vec For Phrases – Learning Embeddings For More Than One Word, 2018 : Lien
  • The Illustrated Word2vec, Jay Alammar, : Lien

2.2 glove

Word embeddings for sentiment analysis, 2018 : Lien

2.3 FastText

fastText, developed by Facebook, is a popular library for text classification. The library is an open source project on GitHub, and is pretty active. The library also provides pre-built models for text classification, both supervised and unsupervised.

  • Bibliothèque : Lien
  • An intro to text classification with Facebook’s fastText (Natural Language Processing), Sunny Srinidhi, 2019 : Lien

2.4 BERT (Google)

  • Bidirectional Encoder Representations from Transformers (BERT), est un modèle de langage (en) développé par Google en 2018, pré-entrainée sur Wikipedia en anglais : Lien
  • Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing; Python, Tensor-Flow, english only, 2018 : Lien, Code Source
  • Google Open Sources BERT to Train Natural Language Models Without Breaking the Bank, 2018, Lien
  • 2019 — Year of BERT and Transformer : Lien
  • The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning), Jay Alammar : Lien
  • BERT : Faire comprendre le langage naturel à une machine, en pré-entraînant des Transformers bi-directionnels profonds, Paul Denoyes, 2019 : Lien

2.5 RoBERTa (Facebook)

RoBERTa builds on BERT’s language masking strategy, wherein the system learns to predict intentionally hidden sections of text within otherwise unannotated language examples. Implemented in PyTorch, modifies key hyperparameters in BERT, including training with much larger mini-batches and learning rates (Facebook 2019) : Lien

2.6 CamemBERT (Facebook, INRIA)

CamemBERT est un modèle linguistique français à la pointe de la technologie basé sur l’architecture RoBERTa (Facebook), pré-entrainée sur le sous-corpus français du nouveau corpus multilingue OSCAR. Nous évaluons CamemBERT dans quatre tâches différentes pour le français: 1/ étiquetage morpho-syntaxique (part-of-speech tagging : association des informations grammaticales aux mots d’un texte), 2/ analyse syntaxique (dependency parsing : extraction des arbres représentant la structure syntaxique d’une phrase), 3/ reconnaissance d’entités nommées (named entity recognition : mots ou groupes de mots catégorisés dans des classes telles que noms de personnes, noms d’organismes ou d’entreprises, noms de lieux, quantités, distances, valeurs, dates, etc.) et 4/ inférence en langue naturelle (natural language inference : implications, contradiction, neutralité) : Lien

FlauBERT

GETALP

Groupe d’Étude en Traduction Automatique/Traitement Automatisé des Langues et de la Parole, http://lig-getalp.imag.fr, Grenoble. FlauBERT is a French BERT trained on a very large and heterogeneous French corpus : Lien

2.7 GPT-2 (OpenAI)

OpenAI (Elon Musk, Tesla) est une entreprise à « but lucratif plafonné » en intelligence artificielle, basée à San Francisco. GPT2 est une AI capable d’écrire des articles de presse et des œuvres de fiction. Reposant sur un générateur de texte qui assimile les mots reçus et détermine la suite la plus logique qu’elle retransmet dans le même style : Lien

  • The Illustrated GPT-2 (Visualizing Transformer Language Models), Jay Alammar : Lien

2.8 Multi-Task Deep Neural Networks (MT-DNN, Microsoft)

MT-DNN incorporates the Tensorflow BERT pre-trained bidirectional transformer language model to obtain new state-of-the-art results on ten NLU tasks, including SNLI, SciTail, and eight out of nine GLUE tasks : Lien

2.9 ERNIE (Baidu)

Enhanced Representation through kNowledge IntEgration : Lien

2.10 Transformer-XL (Google)

On a parfois besoin de se référer à un mot ou à une phrase formulée plusieurs centaines de mots précédemment pour comprendre un article. Alors que les gens font cela naturellement, modéliser la dépendance à long terme avec des réseaux de neurones représente toujours un défi. Transformer-XL est capable de calculer les éléments de mots et groupes de mots vectorisés sans calcul global réitéré, ce qui conduit à une augmentation de la vitesse d’établissement d’un modèle. Lien

2.11 XLNet (Carnegie Mellon University, Google Brain)

We propose XLNet, a generalized autoregressive pretraining method that (1) enables learning bidirectional contexts by maximizing the expected likelihood over all permutations of the factorization order and (2) overcomes the limitations of BERT thanks to its autoregressive formulation. Furthermore, XLNet integrates ideas from Transformer-XL, the state-of-the-art autoregressive model, into pretraining. Empirically, XLNet outperforms BERT on 20 tasks, often by a large margin, and achieves state-of-the-art results on 18 tasks including question answering, natural language inference, sentiment analysis, and document ranking.

2.12 FLAIR

A very simple framework for state-of-the-art NLP. Developed by Zalando Research. Licence MIT.

2.12 Transformers (Hugging Face)

Transformers (formerly known as pytorch-transformers and pytorch-pretrained-bert) provides state-of-the-art general-purpose architectures (BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet, CTRL…) for Natural Language Understanding (NLU) and Natural Language Generation (NLG) with over 32+ pretrained models in 100+ languages and deep interoperability between TensorFlow 2.0 and PyTorch.

2.13 Simple Transformers

Simple transformers is based on the Transformers library by HuggingFace. Only 3 lines of code are needed to initialize a model, train the model, and evaluate a model. Currently supports Sequence Classification, Token Classification (NER), and Question Answering.

  • Simple Transformers – Named Entity Recognition with Transformer Models, Rajapakse, 2019 : Lien

2.14 Spark NLP

Spark NLP est une bibliothèque de TAL open source basée sur les langages de programmation Python, Java et Scala et construit sur TensorFlow pour ses fonctionnalités d’apprentissage. La bibliothèque offre des modèles pré-entrainés pour plusieurs langues incluant le français.

  • Spark NLP: State of the Art Natural Language Processing : Lien
  • Spark NLP sur Wikipedia : Lien
  • Modèles préentrainés : Lien
  • Named Entity Recognition (NER) with BERT in Spark NLP, 2020 : Lien

3. Réseaux et graphes d’information

3.1 node2vec

node2vec is an algorithmic framework for representational learning on graphs : Lien

3.2 PyTorch-BigGraph (PBG)

PyTorch-BigGraph (PBG) is a distributed system for learning graph embeddings for large graphs, particularly big web interaction graphs with up to billions of entities and trillions of edges : Lien

3.3 Oracle Labs PGX: Parallel Graph AnalytiX

Named Entity Disambiguation with Knowledge Graphs, Alberto Parravicini, 2019 : Lien

3.4 Outils de visualisation

  • Visualisation d’un Arbre des mots, par Jason Davies : Lien, par Fernanda Viégas, Martin Wattenberg : Lien
  • Nuage de mots-clés : Lien, par Jason Davies : Lien

4. Services NER des grands acteurs commerciaux

Les GAFA se positionne sur le NER.

4.1 IBM Natural Language Understanding

Fondée en 2009, la société AlchemyAPI a développé une offre SaaS de traitement de langue naturelle. AlchemyAPI est achetée par IBM et intégrée à l’offre cloud IBM Watson en 2015. En 2016 son nom devient Natural Language Understanding. Ce service peut traiter des contenus en anglais, français, allemand, espagnol et d’autres langues encore, avec des niveaux de fonctionnalités variables. Ainsi, la détection d’entités et concepts, les relations entre entités, la détection de mots-clés, l’analyse de sentiments et d’émotions, les rôles sémantiques (suivant un axe sujet-action-objet), la catégorisation du contenu dans un plan de classement propre font partie des fonctionnalités. Après copie du texte ou renseignement d’une URL, l’interface de démo propose des listes de mot-clés, d’entités nommées, de catégories, de concepts. Coût mensuel 107 €.

4.2 Amazon Comprehend

Amazon Web Services (AWS) s’est lancé relativement récemment (fin 2017) dans l’analyse en langue naturelle avec Amazon Comprehend. C’est un des nombreux services proposés par le géant du cloud computing. Comprehend peut traiter des contenus en anglais, français, espagnol, italien, portugais, allemand sur un ensemble d’opérations : langue, entités nommées et concepts, mots-clés, sentiment et syntaxe. Coût mensuel 107 €.

4.3 Microsoft Azure Analyse de texte

Cognitive Services Text Analytics est l’offre de Microsoft depuis 2016 au sein sa plateforme cloud Azure. Coût mensuel 202,4 €.

4.4 Google Cloud Natural Language

Google Cloud est une plateforme de cloud computing complète. Parmi les services proposés, Natural Language permet l’analyse de contenus textuels depuis mi 2016. Coût mensuel 67 €.

AutoML Natural Language permet la personnalisation des modèles de machine learning pour classifier du contenu en anglais dans un ensemble choisi de catégories.

5. Services cloud alternatifs

5.1 Unitex/GramLab

Unitex est un ensemble de logiciels permettant de traiter des textes en langues naturelles en utilisant des ressources linguistiques. Ces ressources se présentent sous la forme de dictionnaires électroniques, de grammaires et de tables de lexique-grammaire. Elles sont issues de travaux initiés sur le français par Maurice Gross au Laboratoire d’Automatique Documentaire et Linguistique (LADL) . Ces travaux ont été étendus à d’autres langues au travers du réseau de laboratoires RELEX. Lien

5.2 GATE.ac.uk

Plusieurs outils open source rassemblés sous le nom de GATE sont développés par un groupe spécialisé en TAL de l’Université de Sheffield.

5.3 Meaning Cloud

  • Solution entièrement cloud dédiée à l’analyse et à la classification des textes : [Accueil], [Démos]
  • Text analytics (Anglais, Espagnol, Français, Portugais, Italien) : [Démo]
  • Aide à la structuration de la base de données Mauriac en ligne : entre la reconnaissance d’identité nommée et la textométrie, Mélanie Aubry, 2019 : [Lien]

6. Bibliothèques logicielles, langages

Keras is an open-source neural-network library written in Python. It is capable of running on top of TensorFlow, Microsoft Cognitive Toolkit, R, Theano, or PlaidML.[2][3][4] Designed to enable fast experimentation with deep neural networks,

  • Initiation au Machine Learning avec Python – La théorie : Lien

Références

  • Comparatif des offres Cloud pour le traitement de la langue naturelle, Arnaud Cassaigne, 2019, Lien
  • Beyond Word Embedding, Part 1, 2018 : Lien
1 Star2 Stars3 Stars4 Stars5 Stars (Pas encore noté)
Loading...

Une réponse sur “IA pour le texte : TAL, NLP et NER”

  1. Merci pour cette analyse très détaillée du panorama des logiciels de NLP, qui me semble exhaustive, aux vues de mes connaissances.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *