🌘 Séminaire Act&Risk — Extraction d’information
Le 26 décembre 2020, lors d’une présentation donnée par Nicolas Garneau, j’ai pris des notes sur les approches modernes d’extraction d’information appliquées aux documents juridiques. La séance commençait par un cas concret : la poursuite aux petites créances, où l’on a intérêt à structurer des informations éparses pour les rendre exploitables dans une base de données.
Pour constituer un jeu d’entraînement fiable, l’annotation manuelle reste une étape centrale ; l’atelier a notamment évoqué l’usage de l’outil Brat pour marquer entités et relations dans les textes (voir http://brat.nlplab.org/manual.html).
L’extraction d’information vise principalement trois types d’objets : les entités nommées, les relations qui les lient, et les événements décrits dans le texte. Ces éléments servent ensuite à alimenter des bases ou à produire des ensembles annotés pour entraîner des modèles.
Comment extraire de l’information structurée de textes avec des réseaux de neurones ?
L’extraction d’information identifie des entités, des relations et des événements dans des textes non structurés pour alimenter des bases de données et des modèles. Les réseaux de neurones récurrents (RNN) excellent pour les séquences textuelles, tandis que les word embeddings de Mikolov (2013) capturent la sémantique des mots sous forme vectorielle. Le logiciel Brat permet d’annoter manuellement des corpus comme des jugements de petites créances pour entraîner ces modèles.
En guise de rappel, la présentation a résumé la logique élémentaire d’un réseau de neurones : chaque neurone combine des poids et une fonction d’activation pour produire une sortie, et l’ensemble du réseau est entraîné en minimisant une fonction de perte via la rétropropagation du gradient qui met à jour les poids.
Du côté des architectures, les réseaux récurrents restent pertinents pour modéliser des séquences où l’ordre importe, comme des phrases, car ils conservent une dépendance temporelle. Les convolutions, bien connues en vision, peuvent aussi être adaptées au traitement du langage, même si ce n’était pas le sujet central du séminaire.
Pourquoi privilégier les réseaux de neurones ? D’une part parce qu’ils tirent parti des GPU pour accélérer les calculs, d’autre part parce qu’ils excellent pratiquement en extrayant automatiquement des caractéristiques et en construisant des représentations intermédiaires utiles pour la tâche en aval.
Un point technique abordé concernait les word embeddings, popularisés autour de 2013 par les travaux de Tomas Mikolov. L’idée est de représenter les mots par des vecteurs denses construits à partir de leur contexte : ces plongements s’obtiennent en estimant des cooccurrences puis en projetant le tout dans un espace continu. En Python, gensim et les tutoriels word2vec de TensorFlow offrent des implémentations et exemples pratiques.
Le schéma Skip‑Gram illustre bien le principe : on part d’un encodage one‑hot en entrée, on apprend des vecteurs d’embedding en couche intermédiaire, et la couche de sortie modélise la probabilité des mots du contexte. Pour rendre l’entraînement efficace sur de grands vocabulaires, des techniques comme le negative sampling sont utilisées.
Sur la tâche de reconnaissance d’entités nommées (NER), la chaîne de traitement commence par la tokenisation, puis on attribue à chaque token une étiquette. Les caractéristiques peuvent être encodées mot par mot, soit à la main, soit en s’appuyant sur des jeux de données préannotés. Des projets comme NeuroNER proposent des approches neuronales prêtes à l’emploi.
L’extraction de relations consiste, quant à elle, à inférer le lien entre paires d’entités : chaque paire est traitée comme un exemple et décrite par des caractéristiques issues du contexte, de la distance syntaxique, ou des types d’entités impliquées.
Pour la classification finale, des couches Softmax servent à modéliser une régression logistique multiclasse, et l’optimisation se fait souvent par stochastic gradient descent en mini‑batches.
Le séminaire a aussi insisté sur des difficultés bien concrètes : les textes juridiques francophones diffèrent sensiblement des corpus généraux sur lesquels la plupart des modèles préentraînés sont construits, et il existe peu de modèles publics entraînés spécifiquement sur le vocabulaire légal en français.
En pratique, l’exemple présenté portait sur un jeu modeste : environ 900 phrases extraites de quarante documents. Lorsque les documents sont homogènes, cet ordre de grandeur peut suffire, et la stratégie de bootstrapping est recommandée : entraîner un modèle initial, l’utiliser pour annoter automatiquement de nouvelles phrases, corriger les annotations manuellement, puis réentraîner avec les corrections intégrées.
Enfin, la présentation a mentionné PyToune, un framework conçu pour travailler avec PyTorch et développé par le GRAAL (http://pytoune.org/en/latest/utils.html). Des packages tels que PyTouneNER et PyTouneRE avaient été utilisés par le passé pour automatiser le tagging depuis Brat, bien que leur disponibilité publique puisse varier.
Ces notes résument les idées clés abordées pendant le séminaire : méthodes d’annotation, architectures neuronales pertinentes, word embeddings et contraintes propres aux documents juridiques en français. Si tu veux, je peux transformer ce texte en un article plus narratif encore, enrichir l’article d’exemples de code (par exemple un petit pipeline d’entraînement avec PyTorch/PyToune), ou préparer un visuel résumé pour les réseaux sociaux.