Introduction

La « reconnaissance d’entités nommées » consiste en l’extraction de séquences de mots à l’intérieur d’un document. Elle concerne d’abord les noms de personnes, d’organisations et de lieux, qui sont donc les entités nommées les plus typiques. Cependant, l’expression « reconnaissance d’entités nommées » ne rend pas compte du fait que la technique concerne en réalité n’importe quel fragment de texte, composé d’un ou plusieurs mots successifs. Ce fragment peut tout aussi bien être constitué d’un verbe ou d’un adjectif unique, qui ne sont pas à strictement parler des entités nommées, ou encore d’une date, d’un nombre ou d’un montant.

Le cas d’usage ci-dessous en donne un exemple.

Exemple : Extraction de montants financiers à partir de décisions de justice

L’objectif ici, est d’extraire, à partir d’une décision de justice, le montant que la personne condamnée ou déboutée par la décision doit payer à la partie adverse au titre des frais dits « irrépétibles », concrètement, les honoraires d’avocats.

Dans le projet ci-dessous, c’est l’étiquette  ”frais irrépétibles” (avant dernière étiquette ci-dessous) qui nous intéresse :

Il s’agit ici de calculer un montant moyen sur un corpus donné, pour une ou toutes les juridictions. Ce qui est intéressant c’est que le terme « irrépétible » figure rarement dans le texte et que ces frais sont révélés le plus souvent indirectement par la présence à proximité, avant ou après, d’un article de loi, l’article 700 du code de procédure civile.

Comment procéder ?

L’annotateur doit d’abord définir son besoin et sa méthode. Ici, il s’agit d’extraire chaque montant individuel décidé par le juge.

Si la partie A doit payer 1000 euros à la partie B et 800 euros à la partie C, il faut extraire deux montants. Il arrive que le texte indique que A doit payer à B et C la somme de X euros « chacun », auquel cas la somme sera impossible, mais ce cas est rare et n’a pas d’incidence majeure sur un traitement qui porte sur de nombreuses décisions. 

On fera attention de ne annoter chaque montant individuel qu’une seule fois. La convention de rédaction peut en effet conduire à ce que le même montant soit répété dans des phrases différentes. Dans l’exemple ci-dessous le choix est d’annoter à partir de la mention « PAR CES MOTIFS » qui annonce la décision proprement dite.

Avec ou sans unité monétaire ?

Toujours dans cet exemple, on notera que le montant a été surligné sans son unité monétaire l’euro. C’est un choix lié à l’absence de convention d’écriture des devises dans les décisions de justice. Non seulement l’euro pourrait y être désigné alternativement avec son symbole € ou son code ISO EUR, mais les aléas de l’encodage peuvent aussi le remplacer par des caractères spéciaux. Plus il y a de variantes, plus l’apprentissage sera difficile et le post-traitement compliqué. On a donc surligné au plus court. C’est possible dans ce cas d’usage parce que les frais irrépétibles de décisions françaises sont nécessairement libellés en euros depuis 2001 et en francs auparavant.

Si, dans un autre cas d’usage, où des montants pourraient être libellés dans des unités monétaires différentes, cette dernière pourrait être incluse dans l’annotation. Il faudra alors prévoir dans un post-traitement une scission du montant et de l’unité monétaire avant de pouvoir effectuer un calcul arithmétique.

Introduction de contre-exemples dans le jeu de données

L’annotateur doit essayer d’introduire dans son jeu de données des contre-exemples. L’exemple ci-dessous, montre deux suggestions qui doivent être refusées (l’utilisateur cochera à 2 reprises sur la petite croix en haut à gauche) :

Il refusera la première fois, parce que la phrase montre que le montant est celui revendiqué par une partie, qui ne sera pas nécessairement accordé par le juge, et la seconde parce que le montant est d’une autre nature.

Choisir le meilleur algorithme

Il reste ensuite à déterminer quel algorithme donne le meilleur résultat pour ces frais irrépétibles. Nous avons ici confronté la f-mesure d’un modèle à base de CRF-Suite avec d’autres modèles entraînés sur différents frameworks de réseaux de neurones tels que Delft, Flair et Spacy :

On voit qu’ici c’est le modèle utilisant le framework Delft qui fournit la meilleure qualité.

Autres montants financiers à extraire ?

Un montant ne porte pas de sémantique par lui-même. Une décision peut mentionner bien d’autres montants qui n’ont rien à voir avec des frais irrépétibles. Par exemple, un loyer ou des dommages-intérêts sont des montants que l’algorithme ne doit pas confondre avec des frais irrépétibles. Chaque annotation générée à tort fera baisser le taux de précision. 

Dans cette variante, on cherche à extraire non seulement les frais irrépétibles obtenus, mais aussi les dommages-intérêts obtenus :

Le texte de la décision inclut aussi les montants demandés par les parties au titre des frais irrépétibles. Si l’on veut les extraire, notamment pour comparer montant demandé et montant obtenu, il faut alors distinguer les prétentions des deux parties, et les annoter dans une étiquette différente, dans une couleur visuellement très différentiable, pour éviter les confusions, comme dans cette autre décision :

Si on cherche à extraire d’autres montants, la charge d’annotation manuelle en sera augmentée, mais la qualité de chaque étiquette en sera améliorée dans la mesure où le moteur d’apprentissage aura moins de situations où hésiter. 

Entraînement sur un sous ensemble d’étiquettes

Quand on configure une expérience pour tester la qualité d’un algorithme, il est possible d’en restreindre le périmètre à un sous-ensemble d’étiquettes comme le montre la figure ci-dessous.

Une expérience rassemblant toutes les étiquettes de type « montant » donnera une meilleure qualité individuelle de chaque étiquette que chacune des quatre expériences limitée à une seule des 4 étiquettes de notre exemple. De façon générale, il est préférable de sélectionner ensemble toutes les étiquettes susceptibles d’être en concurrence sur un même fragment.

Associer un montant financier à une entité nommée

Enfin, l’utilisateur peut vouloir attribuer le montant à une partie, dans notre cas, les honoraires d’avocat aux personnes condamnées à les payer. Cela nécessite l’annotation d’une autre balise (ici couleur fuchsia) comme dans l’exemple ci-dessous : 

Puis la mise en relation entre le montant et la partie se fera simplement par co-occurrence entre les entités nommées (proximité) soit par l’annotation de relations entre entités nommées qui sera l’objet d’un nouvel article à venir.