Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Nous avons présenté dans la partie précédente les différentes stratégies d'annotation possibles. Nous décrivons dans cette partie le travail préparatoire à la campagne d'annotation, particulièrement important pour réussir une campagne d'annotation.
Mener à bien un projet d'annotation nécessite la mobilisation d'une équipe dont les membres remplissent des fonctions bien précises. En plus des personnes en charge de réaliser les annotations (on parlera d'annotateurs), un profil ayant des connaissances métier (chef de projet) et un profil technique (data scientist) seront nécessaires.
Un chef de projet disposant des connaissances métier sera nécessaire. Ses attributions seront de :
Etablir le schéma d'annotation (conjointement avec les autres parties prenantes du projet)
Former les annotateurs (plus de détail dans la partie Conduire votre campagne d'annotation, au paragraphe Etape 3: Former et mobiliser les annotateurs)
Estimer le temps moyen pour annoter un document afin de mesurer la charge de travail nécessaire
Etablir un plan d'annotation prévisionnel définissant le nombre moyen de documents à annoter par annotateurs et par jour
Suivre l'avancement des annotations
S'assurer de la qualité des annotations
En fonction de la complexité du projet, le chef de projet pourra faire appel à d'autres experts métier.
Un profil de type data scientist permettra, en complément du suivi qualitatif assuré par l'expert métier, de mettre en oeuvre un suivi de l'avancement et de la qualité des annotations par des méthodes de data science (plus de détails sur les métriques de qualité dans la suite). L'avantage de ce type de suivi est d'être généralisable à un grand nombre de documents annotés sans nécessiter de coût humain supplémentaire. Par opposition, le suivi qualitatif de l'expert métier permettra de prendre en compte les cas particuliers et les spécificités métier mais le temps nécessaire au suivi sera proportionnel au nombre de documents vérifiés. Les deux types de suivi sont donc complémentaires.
Le data scientist pourra également mettre en oeuvre des méthodes informatiques ou de machine learning afin de pré-annoter les documents et permettre d'accélérer le processus d'annotation (plus de détails à ce sujet dans la partie Conduire votre campagne d'annotation, au paragraphe Etape 6 : Accéler le processus d'annotation).
Les attributions du profil de type data scientist sont de :
S'assurer de la qualité des annotations (par des tests de cohérence sur les données annotées)
Pré-annotater les documents
Prioriser les documents à annoter (par des méthodes d'échantillonnage à définir en fonction de différents critères à déterminer avec le métier)
Si nécessaire, analyse et traitements des documents annotés afin de visualiser différentes métriques et/ou intégrer les documents annotés à la solution d'Intelligence Artificielle
Ce rôle sera plus ou moins nécessaire en fonction du logiciel d'annotation retenu et pourra être assuré par le data scientist. Les attributions de l'administrateur de la plateforme d'annotation sont de :
S'assurer de l'installation du logiciel, de la création de comptes utilisateurs pour les différents annotateurs
Charger les documents à annoter sur la plateforme
S'assurer du stockage des annotations Ce dernier aspect est particulièrement important. Le travail d'annotation est coûteux en temps, il est donc primordial de veiller à avoir des sauvegardes régulières afin de ne pas perdre le travail des annotateurs.
Le profil des annotateurs dépend du type de tâche d'annotation à effectuer. Certaines tâches nécessitent seulement la maîtrise de la langue française (identifier les noms et prénoms de personnes physiques dans un texte par exemple) et ne font pas appel à d'autres connaissances spécifiques. D'autres tâches nécessitent en revanche un certain niveau d'expertise et il faudra veiller à recruter les bons profils d'annotateurs.
L'annotateur a pour attributions de :
Comprendre la tâche (le temps nécessaire à la montée en compétence ne doit pas être négligé)
Annoter les documents
Faire remonter des questions, des difficultés au fil de l'annotation au chef de projet
L'annotation est généralement une étape liminaire d'un projet ayant une finalité plus large. Une réflexion globale sur la problématique du projet est indispensable avant le démarrage effectif de la phase d'annotation, afin que les annotations réalisées permettent de répondre de manière efficace à la problématique. Le travail d'annotation pourrait être différent selon l'application visée et la problématique choisie. Il est donc important de répondre à un certain nombre de questions:
A quel problème répond le projet ?
Quel est le contexte du projet ? A quelle mission de service public contribue le projet ? A quel problème doit répondre le projet ? Des solutions pour répondre à ce problème sont-elles déjà en place ? Si oui quelles sont leurs limites ou leurs défauts ?
Quels sont les objectifs stratégiques du projet ? A quel objectif de mon organisation répond le projet (intérêt général, amélioration de la qualité d'un service, etc.) ?
Quels objectifs opérationnels du projet ?
Quels sont les impacts attendus de la solution dans l'organisation du service (du point de vue des agents publics et/ou des utilisateurs du service) ?
Existe-t-il des projets similaires desquels je gagnerais à prendre connaissance ? Bien que chaque projet ait ses spécificités, il peut être utile de se renseigner sur d'autres projets ayant une problématique similaire. Parmi les grandes problématiques en traitement du langage naturel, on trouve la classification de documents (par exemple, déterminer si un e-mail est un spam ou non), l'extraction d'informations (par exemple, identifier les moyens et la conclusion dans un décision de justice), la priorisation de documents à traiter (par exemple, attribuer un note de gravité à des signalements d'événements sanitaires), corriger des erreurs de saisies dans un formulaires (par exemple, le projet AMI IA de la DGCL), détecter des éléments manquants dans un texte (par exemple, projet AMI IA pour la DGGN de détecter les éléments manquants dans un plainte déposée en ligne).
Quel est le périmètre de la solution ? Cette question aura en général un impact direct sur le périmètre des données à annoter, elle est donc très importante. Le périmètre peut être géographique, fonctionnel, etc.
Le schéma d'annotation est un modèle qui permet de décrire les annotations de votre projet. Il doit découler de la problématique définie précédemment. Concrètement, il est constitué a minima d'un ensemble d'étiquettes (c'est-à-dire des termes permettant de caractériser telle ou telle information dans un document) et d'une définition précise de ces différentes étiquettes. Pour certains projets, le schéma d'annotation peut en plus être défini par une hiérarchisation entre les étiquettes ou encore par des relations entre les termes. L'ensemble des étiquettes peuvent en effet être hiérarchisées entre elles (par exemple, un schéma peut se décliner en thèmes et sous-thèmes, où à chaque thème correspond une liste spécifique de sous-thèmes). Le schéma d'annotation est parfois complété par une tâche d'identification de relations entre les entités annotées (par exemple, une tâche d'annotation pourra être de relier un pronom au nom auquel il se rapporte).
La problématique métier à laquelle le projet répond est souvent complexe, avec beaucoup de cas particuliers ou d'exceptions aux règles usuelles. Etablir un schéma d'annotation implique souvent un travail de simplification (qui a également pour conséquence une perte d'information ou de précision). Il est important cependant ne pas simplifier à l'extrême, et donc de trouver un bon équilibre entre simplicité et adéquation à la problématique métier. Afin de trouver cet équilibre, un processus itératif est généralement la meilleure méthode à adopter. Si l'annotation a pour objectif d'entraîner un algorithme d'intelligence artificielle, il ne faut pas exclure a priori des spécificités ou des consignes qui seraient trop difficiles à reproduire par une solution automatique.
::: tip Exemple du choix des catégories pour pseudonymiser les décisions de justice: Afin de limiter au maximum le risque de réidentification, il faut se demander quelles informations doivent être retirées et comment les catégoriser. Un nombre restreint de catégories (nom, prénom, adresse, date de naissance par exemple) aura pour avantage des consignes d'annotations plus simples, alors qu'une catégorisation plus fine (personnes physiques, personnes morales, adresse complète, lieu de résidence par exemple) permettra de mieux cibler certaines informations sensibles. :::
Il est important d'évaluer la clarté du schéma d'annotation ainsi que la reproductibilité des tâches d'annotation entre différents annotateurs. En effet des consignes d'annotation peu claires ou intéreprétables de façon différente par différents annotateurs auront pour conséquences :
De rendre inopérable l'évaluation de la qualité des annotations
De compromettre l'automatisation de la tâche par un algorithme d'intelligence artificielle
Exemple: Analyse de l'ironie dans des tweet. Des interprétations différentes du langage, des prises en compte différentes du contexte peuvent amener deux personnes différentes à percevoir différemment le caractère ironique ou non d'un tweet. Ce papier de chercheurs en traitement automatique du langage présente un schéma d'annotation permettant d'analyser l'ironie dans les tweets.
Elaborer un schéma d'annotation nécessite de prendre en compte à la fois la problématique du projet et les caractéristiques des documents à annoter. Ainsi, l'approche itérative préconise d'élaborer un premier schéma d'annotation répondant à la problématique, de le tester en annotant des documents puis de le réviser au fur et à mesure de l'annotation. C'est en général en annotant que l'on s'aperçoit si le schéma d'annotation est adapté ou non aux documents.
Par exemple, pour un projet d'annotation de réponses à un questionnaire en texte libre, on peut avoir une idée a priori des thématiques abordées, ce qui permet d'élaborer une première version du schéma d'annotation, mais l'annotation des réponses pourra faire émerger de nouvelles thématiques qui pourront venir compléter ou modifier le schéma d'annotation.
La documentation est essentielle et doit évoluer tout au long de la campagne. En gardant une trace de la démarche adoptée et en recensant les difficultés rencontrées, la documentation est très utile pour que tous les membres de l'équipe projet partagent le même niveau d'information. Cette documentation pourra également bénéficier à d'autres projets similaires.
Plusieurs types de documentations s'adressant à différentes fonctions dans le projet sont utiles : une documentation générale, une documentation pour les annotateurs et une documentation pour l'administrateur de la plateforme d'annotation.
Une documentation générale permet de décrire le contexte et les objectifs du projet et d'expliquer pourquoi l'annotation est nécessaire. Cette documentation s'adresse à toute personne souhaitant comprendre le projet (directeur, grand public si le projet est open source). Il est également important de documenter le cheminement intellectuel menant au schéma d'annotation et les différentes itérations s'il y en a eu.
Cette documentation est le support de formation des annotateurs, elle est donc très importante, et doit notamment inclure :
La description du projet, qui permet de donner aux annotateurs une vision claire de l'application visée
Le schéma synthétique d'annotation (c'est-à-dire la liste des labels du schéma d'annotation, hiérarchisés le cas échéant)
L'explication des différents labels : définitions précises qui gagnent à être complétées par l'explication des choix méthodologiques effectués et de la logique de l'annotation visée
S'il existe des relations à annoter entre les termes, explications et exemples pour chacune des relations
Liste des cas particuliers ou des cas susceptibles de poser des difficultés, accompagnée d'exemples concrets (ne pas hésiter à faire des captures d'écran du logiciel d'annotation). Cette partie peut prendre la forme d'une rubrique de Questions / Réponses.
Documentation pour la prise en main du logiciel d'annotation (comment se connecter, accéder aux documents à annoter, comment appliquer le schéma d'annotation, comment enregistrer un document annoté finalisé, etc.)
Il est également important de documenter le fonctionnement de la plateforme d'annotation en rédigeant un guide à destination de l'administrateur de la plateforme d'annotation. Ce guide pourra expliquer :
Comment créer des comptes aux annotateurs
Comment charger des documents sur la plateforme
Comment attribuer des documents aux annotateurs
Comment suivre l'avancement des annotations
Comment corriger les annotations
Comment exporter les documents annotés
Pour analyser le contenu de vos données, entraîner des algorithmes supervisés et mener à bien votre projet d’intelligence artificielle, vous aurez besoin de données « structurées » ou « annotées ».
Il se peut que vos données soient déjà structurées, c’est-à-dire collectées en amont de façon à ce qu’elles apparaissent dans un tableau, avec des lignes correspondant à des observations et des colonnes correspondant à des variables. En intégrant un processus de structuration de la donnée ex ante, vous bénéficiez d’un gain de temps significatif et n’aurez probablement pas besoin d’une phase d’annotation, vos données étant déjà structurées.
Par opposition, vous aurez probablement besoin d’annoter vos données si elles sont « non structurées », c’est-à-dire non descriptibles par un modèle prédéfini, non catégorisées et potentiellement très diverses (images, textes, vidéos, etc.). Le caractère non structuré des données rend leur exploitation par des algorithmes d’intelligence artificielle beaucoup plus complexe. Dans ce cas, vous aurez besoin d’organiser une phase d’annotation.
La phase d’annotation, qui consiste à assigner une ou plusieurs étiquettes à des éléments d’un jeu de données, permet ainsi la constitution d’un jeu de données structuré, rendant possible l’entraînement d’algorithmes supervisés.
::: lexique Annotation L'annotation est la tâche qui consiste à attribuer à chaque donnée le label qui lui correspond. Par exemple, à attribuer le label « chien » ou « chat » à une base de photographies d'animaux. Ou encore à attribuer le label correct entre « nom », « prénom », « adresse », « date » ou « aucun » à chacun des mots d'un document. On distinguera l'annotation manuelle, lorsque cette tâche est effectuée par un humain, de l'annotation automatique, lorsque cette tâche est effectuée par un programme informatique. :::
La pertinence et la performance de votre solution d’IA dépendra fortement de la qualité des données, dont la qualité des étiquettes est une dimension importante ; même si d’autres aspects qualitatifs peuvent entrer en jeu (complétude des variables explicatives, valeurs aberrantes, etc.). La phase d’annotation doit donc être réalisée en veillant à obtenir des étiquettes de bonne qualité. Ce guide présente les étapes clés et quelques bonnes pratiques afin d’y parvenir.
Ce guide propose des étapes et bonnes pratiques pour conduire une campagne d’annotation nécessaire à un projet d’intelligence artificielle, notamment lorsqu’on ne dispose pas de données structurées. Ce guide se concentrera essentiellement sur l'annotation de documents textuels, mais beaucoup d'éléments se généralisent aux projets d'annotation d'autres types de documents.
Ce guide est susceptible d'intéresser différents types de profils amenés à être impliqués dans une campagne d'annotation:
Chef de projet/responsable de la mise en œuvre d’une campagne d’annotation
Expert métier
Data scientist, développeur ou designer
Nous le verrons, réussir une campagne d’annotation nécessite d’impliquer conjointement des profils techniques et des profils «métier».
Ce guide est composé de quatre parties et d'un lexique :
Introduction : pourquoi annoter ?
Ouvrage collectif sur l'annotation linguistique : Handbook of Linguistic Annotation, Springer, 2017
I.
II.
III.
VI.
Le propose les définitions de termes techniques utilisés de façon récurrente dans ce guide.
Ce document est un outil évolutif et ouvert. Vous pouvez contribuer à l'améliorer en proposant une modification sur ou en l'équipe du Lab IA d'Etalab.
portant sur la préparation et l'organisation de campagnes d'annotation
Un sondage sur les logiciels d'annotation consultable
Un avec de nombreux critères pris en compte
L'objectif de cette partie est de lister un ensemble de critères à prendre en compte pour le choix d'un logiciel d'annotation. De nombreux logiciels d'annotation sont disponibles (certains sont open source, d'autres sont payants). Certains critères seront plus ou moins déterminants en fonction des spécificités de chaque projet.
Dans certains cas, les besoins en termes d'annotation peuvent être très spécifiques et il peut être bénéfique de développer un logiciel d'annotation "sur mesure" (ce qui suppose d'avoir les ressources pour un tel développement, qui nécessite un développeur et un designer).
Lorsque le logiciel a une communauté d'utilisateurs et de développeurs actifs, de nouvelles fonctionnalités ou des améliorations sont susceptibles d'être développées. Un autre avantage des logiciels open source est qu'ils sont gratuits.
En particulier, le caractère open source pourra permettre d'avoir :
Des contributions actives au code source
Une communauté d'utilisateurs importante (cela aura pour avantage de pouvoir en général bénéficier d'aide à la résolution de bugs, en postant des issues par exemple)
Les logiciels d'annotation n'offrent pas tous les mêmes fonctionnalités. Il est important de choisir un logiciel qui soit adapté aux types de tâches définies par votre schéma d'annotation. Parmi les types d'annotation, on trouve :
Classification de document (attribuer un label à chaque document)
Sequence to sequence (NER, POS Tagging, extraction d'information ): attribuer un label à un sous-ensemble de mots du documents
Relations : fonction qui permet deux entités annotées entre elles (les liens peuvent dirigés ou non)
Question-Réponse
Parsing syntaxique (ex : Treebank, voir l'article et pour une application en français voir The French Question Bank )
L'UX est également un aspect important. Parmi les critères de l'expérience utilisateur, on compte :
La sélection des segments
La facilité à sélectionner parmi différents tags
La gestion de tags multiples
Les raccourcis claviers pour les différents tags
La facilité à corriger un tag erroné
La facilité à corriger la longueur du segment sélectionné
La lisibilité du texte et des annotations
La gestion des textes longs
Les formats d'entrées et de sorties permis par le logiciel font partie des critères à prendre en compte, en particulier pour permettre une interopérabilité entre différents logiciels. Parmi les formats standards de données textuelles annotées, on compte :
CONLL
xml / html
JSON
Lorsque plusieurs annotateurs contribuent au projet, il est particulièrement recommandé d'utiliser un logiciel qui propose une interface de gestion de projet afin que le chef de projet puisse suivre l'avancement du projet et contrôler et corriger les annotations des différents annotateurs.
L'aspect collaboratif
Les différents rôles: administrateur/manager, curateur, annotateur
Le suivi de l'avancée des différentes tâches
La facilité d'attribuer les documents aux différents annotateurs
Le suivi de la qualité
Correction des annotations par le chef de projet
Résolution des conflits (lorsqu'un même document est annoté par plusieurs annotateurs avec des divergences)
Le crowdsourcing : le fait de pouvoir collecter des annotations d'un public très large (exemple de la plateforme d'annotation PIAF)
Certains logiciels d'annotation incluent des modules de suggestions d'annotations (à l'aide de modèle d'apprentissage automatique notamment) ou permettent d'implémenter des règles de pré-annotation déterministes.
Les fonctionnalités à rechercher dans ce domaines peuvent être :
La suggestion de tags par des modèles entraînés directement dans la plateforme
La possibilité d'intégrer votre propre modèle de pré-annotation
La facilité d'installation du logiciel d'annotation est également un critère à prendre en compte et le choix optimal dépendra des compétences disponibles dans votre équipe (certains logiciels open source nécessitent des compétences en développement informatique pour l'installation), de vos ressources informatiques (serveur disponible) de la sensibilité de vos données.
Saas ou on premise : un logiciel SaaS (Software as a Service) est directement utilisable en ligne alors qu'un logiciel on premise aura son architecture hébergée sur votre propre serveur
Docker ou non : Docker permet de faciliter le déploiement du logiciel sur un serveur
Docker est un logiciel libre permettant de lancer des applications dans des conteneurs logiciels. Il permet ainsi de faciliter le déploiement d'une application sur un serveur.
Les solutions Saas présentent l'avantage de ne nécessiter ni serveur ni installation. Si les données à annoter sont sensibles, il faudra cependant s'assurer que les modalités de stockage des données sur la solution en ligne sont conformes aux exigences de sécurité et de protection des données.
Beaucoup de projets réalisés à partir de données non structurées nécessitent une phase d'annotation, le recours à l'annotation n'est pourtant pas systématique. A cette question préalable de la nécessité ou non d'une phase d'annotation, s'ajoute celle de la stratégie d'annotation à adopter : annoter la totalité du corpus de données à la main ou automatiser le processus d'annotation ?
Il faut dans un premier temps prendre en compte la nature des données à analyser :
Les données sont-elles structurées, semi-structurées, non structurées ?
Est-ce un stock de données historiques qui ne sera pas réalimenté dans le futur ou un flux de données alimenté en continu ?
Quel est le volume total des données ?
Les réponses à ces différentes questions seront déterminantes pour les choix à effectuer en termes d'annotation : dois-je annoter ou non ? Quelle stratégie d'annotation adopter ? Nous revenons d'abord sur la différence entre annotation manuelle et annotation automatique, puis nous présenterons les différentes façons d'automatiser l'annotation.
L'annotation manuelle est la tâche réalisée par un humain qui consiste à attribuer un label à un document ou à un sous ensemble d'un document. On parle d'annotation automatique lorsque cette tâche est réalisée par un programme informatique. L'automatisation de l'annotation peut être réalisée à l'aide de différentes méthodes. On distingue parmi les méthodes les plus courantes :
les moteurs de règles
les algorithmes d'apprentissage supervisé qui nécessitent une phase d'annotation au préalable
Ces méthodes, ainsi que dans quels cas de figures elles sont appropriées, sont détaillées dans la suite de cette partie.
L’annotation manuelle est une tâche longue et coûteuse, il est donc important de ne pas se lancer tête baissée dans une phase d'annotation. Les données structurées sont souvent complexes à analyser, ce qui rend nécessaire une phase d'annotation pour les structurer. Il arrive cependant que des données en apparence non structurées présentent des régularités fortes qui permettent d'automatiser la structuration de l'information qu'elles contiennent en ayant recours à un ensemble de règles prédéfinies et donc de se passer d'annotation.
On parle alors de structuration de la donnée ou d'annotation par moteur de règles.
Un moteur de règles est un ensemble de règles prédéfinies « à l'avance ». Par exemple, une règle de pseudonymisation pourrait être « si le mot qui suit "Monsieur" ou "Madame" commence par une majuscule, alors ce mot est un prénom ». La complexité du langage naturel et la diversité des formulations rencontrées dans les documents fait que ce type de moteur de règles a de fortes chances de faire beaucoup d'erreurs dans des textes complexes, ou dont la forme varie souvent. :::
Exemple avec des données textuelles : Extraction d'informations à partir de formulaires au format word Vous disposez d'un ensemble de documents textuels comme des réponses à un questionnaire. Vous cherchez à extraire un certain nombre d'informations de ces documents (nom, prénom, adresse par exemple). Des règles informatiques simples de recherche textuelle (le texte entre "Nom" et "Prénom" permet d'extraire le nom, le texte entre "Prénom" et "Adresse" permet d'extraire le prénom) peuvent dans certains cas permettre d'extraire les informations.
Exemple avec des données images : anonymisation des bulletins de salaires scannés Vous disposez de bulletins de salaire au format image que vous souhaitez anonymiser (par exemple, retirer les données à caractère personnel comme les noms, prénoms, adresses). Il est très probable que tous les bulletins aient le même format et donc que les informations à retirer se retrouvent précisément au même endroit de l'image. Appliquer des règles déterministes du type mettre un carré noir de taille lxL aux coordonnées xy permet d'éviter de recourir à une annotation manuelle de tous les documents, qui reviendrait à demander à une personne, à l'aide d'un outil d'annotation d'image, d'identifier sur chaque document les endroits où se trouvent les informations à caractère personnel.
Si le volume des données est relativement limité, il n’est pas nécessairement pertinent d’envisager des méthodes d’IA pour structurer la donnée. Par exemple, vous souhaitez analyser les réponses en texte libre à un questionnaire, afin d’en tirer des conclusions précises sur les thématiques abordées par les répondants. Si le volume des données est faible, une étape d’annotation seule pourra répondre à votre objectif sans être trop coûteux en temps. Nous ne donnons pas ici de seuil de nombre de documents permettant de juger de la pertinence ou non de la mise en place de solutions d’IA car l’évaluation du temps nécessaire à l’annotation manuelle du jeu de données dépendra de la nature et de la longueur des documents, ainsi que de la complexité de la tâche d’annotation.
En revanche, si l’on est confronté à un volume important de documents ou à un flux continu de documents, il est en général pertinent d’envisager d’automatiser le processus d’annotation. Dans ce cas, la phase d’annotation aura pour objectif d’annoter une partie des documents (encore une fois, le volume nécessaire de documents annotés dépendra de la nature des documents et de la complexité de la tâche) afin d’entraîner un algorithme supervisé à automatiser cette tâche.
Pour résumer, voici un schéma du questionnement à suivre pour déterminer si un projet nécessite ou non une phase d'annotation et choisir la bonne stratégie d'annotation.
Schéma du questionnement à suivre pour déterminer si un projet nécessite une phase d'annotation
"Puis-je extraire les informations dont j'ai besoin à l'aide d'un moteur de règles avec une précision suffisante ?" : la question du seuil de précision minimale résulte souvent d'un arbitrage avec d'autres variables et en particulier avec les ressources à disposition pour l'annotation
"Ai-je beaucoup de données à annoter ou ai-je un flux continu de données ?" Le seuil maximal de données dépendra notamment de la complexité de la tâche d'annotation, des ressources disponibles pour l'annotation manuelle comparées aux ressources pour l'automatisation.
Le besoin en annotation peut parfois mettre en lumière un mode de collecte de la donnée qui n'est pas adapté aux besoins des utilisateurs. Le travail d'annotation ex post aurait parfois pu être évité en intégrant un processus de structuration de la donnée ex ante, cette dernière solution permettant un gain de temps souvent significatif par rapport à la première.
::: tip Par exemple, l'enregistrement dans un système d'information d'une procédure ou d'une déclaration est réalisé via une application permettant à des agents de remplir un certain nombre de champs. Certains champs à remplir en texte libre peuvent ainsi nécessiter une annotation ex post afin d'utiliser l'information qu'ils contiennent alors que la même information aurait pu être saisie via un menu déroulant comportant une liste prédéfinie de champs pour être directement exploitable. :::
Le projet en quelques chiffres :
Le projet : Annoter des paragraphes Wikipedia afin de constituer une jeu de données francophone de questions-réponses
Le temps moyen pour annoter un paragraphe : eniron 5 min par paragraphe
L'équipe d'annotateurs : équipe de contributeurs volontaires ( 640 contributeurs en septembre 2020)
Le nombre de paires de questions-réponses réalisées en septembre 2020: 8640
Le schéma synthétique d'annotation : trouver 5 questions portant sur un paragraphe donné et souligner la réponse correspondante dans le texte du paragraphe
Capture d'écran de la plateforme d'annotation Piaf, en bas de l'écran, un exemple d'une question rédigée par un annotateur et de la réponse correspondante que l'annotateur doit souligner dans le texte en haut de l'écran
Le projet en quelques chiffres :
Le volume de documents : 180 000 décisions (bases de données « Jurinet » et « Jurica ») par an, un stock de 3 millions de décisions de justice à diffuser
Le temps moyen pour annoter un document : entre 5 et 10 min par décision
L'équipe d'annotateurs : 10 ETP à temps plein
Le schéma synthétique d'annotation : nom et prénom de personne physique, date de naissance, adresse
Résultats obtenus : l'algorithme d'IA développé permet d'obtenir un taux d'erreur moyen de 1%
Le projet en quelques chiffres :
Le projet: Développer un outil d'intelligence artificielle capable de repérer automatiquement les constructions illégales
L'équipe d'annotateurs : 4 agents sur une période de 4 semaines, à raison d'1 à 2 heures par jour
Volume de documents annotés: 6 000 images
Le schéma synthétique d'annotation : caravane, mobiles homes, construction en dur, construction légère, piscine, décharge, déchets industriels, navires
Une capture d'écran du logiciel d'annotation développé pour la DDTM de l'Hérault
Concrètement, avec un moteur de règles, le passage de la donnée non-structurée à de la données structurée se fait par un programme informatique qui implémente des règles déterministes. Si cette méthode fournit des résultats satisfaisants, elle s'avère alors beaucoup moins coûteuse que l'annotation manuelle. Si en revanche, un moteur de règles ne permet pas d'attendre des résultats avec le niveau de précision souhaité, vous devrez probablement avoir recours à l'annotation manuelle. Nous verrons dans la partie comment les moteurs de règles, lorsqu'ils ne donnent pas de résultats assez satisfaisant pour se passer d'annotation, peuvent tout de même permettre d'accélérer le processus d'annotation grâce à la pré-annotation.
Ce schéma simplifie une réalité souvent plus complexe, et vous pourrez en pratique être amené à tester différentes méthodes, voire à combiner ces différentes méthodes. Par exemple, un moteur de règles pourra s'avérer insuffisant en termes de performance mais pourra être utile comme aide à l'annotation. On parle alors de pré-annotation (sujet qui sera détaillé dans la partie ). De plus, la plupart des questions n'ont en général pas de réponses univoques, en particulier :
Les exemples de projets comportant une phase d'annotation sont nombreux. Par exemple plus de la moitié des projets sélectionnés dans le cadre de l'Appel à Manifestation d'Intérêt pour l'intelligence artificielle ( et ) ont nécessité une phase d'annotation. Cette section présente quelques exemples dans le secteur public.
est un projet porté par le Lab IA d'Etalab qui a pour but de constituer un jeu de données francophone pour entraîner des algorithmes d’intelligence artificielle (IA) de questions-réponses. Ces derniers permettent de trouver des réponses à des questions précises portant sur un ensemble de documents. Construire des algorithmes performants de questions-réponses (question-answering en anglais) compte aujourd’hui parmi les tâches les plus complexes du traitement du langage naturel. Or avant le lancement du projet en 2019, il n'existait pas de jeu de données de ce type en français. Les algorithmes de questions-réponses sont pourtant utiles dans beaucoup de domaines, et les sont nombreux, on y compte par exemple la création d'agents conversationnels ou l'amélioration de moteurs de recherche en permettant des réponses plus ciblées.
La tâche d'annotation consiste ici à annoter des paragraphes de Wikipédia. Pour chaque paragraphe, l'annotateur a pour tâche de trouver cinq questions portant sur le paragraphe et y souligner la réponse correspondante. Pour plus d'information, vous pouvez vous référer au . Une a été développée et permet à toute personne francophone d'annoter des paragraphes afin d'alimenter le jeu de données. Nous reviendrons plus tard sur cette méthode de crowd sourcing des annotations.
La Cour de Cassation est chargée de la diffusion des décisions de justice. Le périmètre de diffusion est étendu depuis la publication du décret sur . Cette diffusion ne peut cependant se faire qu'après avoir occulté des décisions de justice les éléments à caractère personnel. Afin de mettre en œuvre cette occultation, la Cour de Cassation a recours à une équipe d'une dizaine d'annotateurs afin d'identifier dans les décisions les éléments à caractère personnel (noms, prénoms, adresses, dates de naissance), qui doivent être retirés avant diffusion. Afin d'automatiser ce processus, la cour de cassation à fait appel à des data scientists via le programme pour développer une solution d'Intelligence Artificielle de pseudonymisation des décisions : c'est le projet . Cette solution est basée sur un algorithme entraîné à partir d'un corpus de décisions annotées manuellement. Afin d'optimiser le processus d'annotation, la Cour de cassation va développer un logiciel d'annotation via le projet .
Pour plus d'information sur la pseudonymisation de documents textuels à l'aide de méthodes d'intelligence artificielle, vous pouvez consulter notre .
Ce projet, réalisé dans le cadre de la première saison de l' à la , vise a développer un modèle d’analyse d’images aériennes ou satellites pour automatiser le pré-repérage des infractions potentielles liées à la cabanisation. Cette automatisation nécessite une phase d'annotation manuelle d'images satellites. La tâche d'annotation consiste à repérer sur l'image les zones correspondant à plusieurs types d'objet (caravanes, mobile homes, constructions en dur, piscines, navires) et à leur attribuer le label correspondant. Un logiciel d'annotation d'image a été développé à cet effet.
Le travail préparatoire décrit dans la partie précédente a permis d'identifier une équipe, de formuler clairement la problématique de votre projet et d'élaborer le schéma d'annotation. La campagne d'annotation peut commencer.
La formation et la mobilisation des annotateurs est un aspect très important. Le caractère répétitif - qui plus est souvent complexe - de la tâche d'annotation est susceptible d'entraîner des erreurs dans l'annotation (oubli d'une section de texte à annoter ou attribution d'un mauvais label par exemple). Bien former et mobiliser les annotateurs, au démarrage ainsi que tout au long du projet, permet de limiter ce risque d'erreurs. Nous verrons dans la partie suivante quels dispositifs d'évaluation des annotations permettent par ailleurs de s'assurer de la qualité des annotations.
En amont du projet, il est important de bien expliquer les enjeux du projet à l'équipe d'annotateurs ainsi que le rôle clé de l'annotation dans le projet. Cet on-boarding peut aussi être l'opportunité d'acculturer les annotateurs à l'Intelligence Artificielle.
PIAF: un projet collaboratif : C'est notamment le pari fait par le projet collaboratif PIAF (voir l'exemple présenté en partie Mon projet nécessite-t-il une phase d'annotation et quelle stratégie d'annotation adopter ?), pour lequel ont été organisés des annotathons dont le but était de former les annotateurs à l'IA tout en récoltant des contributions au projet d'annotation. Cet article détaille la méthodologie adoptée pour ce projet
Il peut aussi être bénéfique au projet d'impliquer les annotateurs dans l'élaboration du schéma d'annotation, dans la mesure où cette élaboration passe par une phase d'itérations entre définition du schéma et annotation de documents. L'implication des annotateurs aura également pour avantage une meilleure appropriation de leur part des tâches à effectuer.
La documentation (décrite dans la partie Préparer votre campagne d’annotation) est centrale pour la formation. La documentation peut également être complétée par un quizz qui recense les principaux types d'éléments à annoter et fournit des exemples de cas les plus difficiles.
Afin de mobiliser les annotateurs tout au long du projet, il est important de maintenir une dynamique d'échange. Il peut être utile de mettre en place des outils de partage (messagerie instantanée, forum de discussion, documents collaboratifs) afin de permettre à l'équipe projet d'échanger sur leurs difficultés, de se poser des questions et de s'entraider. Des sessions d'harmonisation régulières peuvent aussi être mises en place afin de communiquer sur les avancées du projet et partager des éventuels changements ou points d'attention sur l'annotation.
Afin de rendre l'annotation plus ludique, il est envisageable de "gamifier" l'annotation, en attribuant des bagdes, ou en faisant apparaître une jauge d'avancement des annotations (le fait de voir que le projet avance peut constituer une source de motivation).
Lorsque le but de l'annotation est de développer un algorithme automatisant une tâche, la présence d'erreurs dans le corpus annoté servant à l'entraînement risque de conduire l'algorithme à reproduire les erreurs de l'annotation manuelle. Ce phénomène bien connu est désigné par l'expression "Garbage In, Garbage Out". S'assurer d'obtenir des annotations de qualité est donc particulièrement important. Nous proposons ci-après quelques recommandations pour le suivi de la qualité des annotations.
Un jeu de données que l'on appelle "Gold Standard" est constitué de documents annotés pour lesquels les annotations ont été vérifiées et sont donc de qualité certaine. Ce jeu de données peut être utilisé de plusieurs façons.
D'une part, les documents correspondants (sans les annotations) peuvent être donnés à annoter aux annotateurs au début de projet, pour s'assurer que la tâche soit bien comprise par les annotateurs ou pour vérifier que le schéma d'annotation ne soit pas ambigu (c'est-à-dire qu'il puisse conduire deux annotateurs à annoter le même document de façon correcte mais différente). En effet, en comparant les annotations réalisées par les annotateurs et celles dont on est certain de la qualité, on peut faire remonter les erreurs ou ambiguïtés. Ces erreurs permettront soit d'identifier les éléments du schéma d'annotation à réexpliquer, soit de corriger le schéma d'annotation afin de lever certaines ambiguïtés.
D'autre part, le jeu de données "Gold Standard" peut servir de jeu de données de test, afin d'évaluer l'algorithme développé sur un jeu de données dont la qualité soit la plus fiable possible.
::: lexique Jeu de données d'apprentissage et jeu de données de test Afin de développer un modèle d'apprentissage supervisé, un jeu de données labélisées est nécessaire. Ce jeu de données est alors divisé en deux (en général par un échantillonnage aléatoire) : un jeu de données d'apprentissage et un jeu de données de test. Le jeu d'apprentissage, comme son nom l'indique, est utilisé pendant la phase d'apprentissage, afin de trouver une fonction qui permette de prédire le label à partir des variables en entrée. Afin de s'assurer que l'algorithme ait de bonnes performances sur des exemples différents de ceux utilisés lors de la phase d'apprentissage, les différentes métriques de performance de l'algorithme (justesse, précision, rappel, ...) sont calculées sur le jeu de données de test. :::
Tout au long du projet, il est conseillé de faire annoter une partie des documents par plusieurs annotateurs, afin de comparer leurs annotations. Si des divergences trop importantes sont remontées lors de la comparaison (voir le paragraphe ci-dessous sur les métriques de justesse), il faut alors identifier si la divergence provient d'une erreur d'un des annotateurs ou si elle provient d'une ambiguïté du schéma d'annotation qui peut conduire à deux façons correctes d'annoter le même document.
Tout au long du projet, il est également conseillé que l'expert métier relise ponctuellement un certain nombre de documents annotés et sélectionnés aléatoirement afin de s'assurer de la qualité des annotations.
Pour certains projets, il est possible d'implémenter des tests automatiques traduisant des règles métier que les annotations doivent respecter. Lorsque de tels tests sont implémentables, ils permettent de faire remonter de façon automatique des documents annotés comportant un fort risque d'erreurs et qui seront donc à vérifier en priorité par l'expert métier.
Des métriques existent pour comparer les annotations réalisées par différents annotateurs: le Fleiss-Kappa pour comparer les annotations entre n annotateurs et le Kappa de Cohen pour comparer les annotations de deux annotateurs seulement. Des librairies dans les langages open source R ou Python permettent d'implémenter ces métriques.
Calculer ces métriques suppose cependant des choix méthodologiques plus ou moins complexes selon la complexité du schéma et des consignes d'annotation. Ces choix méthodologiques sont très bien détaillés dans la partie intitulée "Mesure des accords inter- et intra-annotateur" de la thèse de doctorat citée dans les ressources.
L'annotation manuelle étant un processus long et couteux en temps, il est souvent judicieux d'employer des méthodes automatiques ou semi-automatiques afin d'accélérer le processus d'annotation.
::: lexique La pré-annotation La pré-annotation consiste à annoter de façon automatique les documents, afin que l’annotateur les vérifie, en les complétant ou en les corrigeant si nécessaire. :::
Plusieurs possibilités sont envisageables pour mettre en œuvre la pré-annotation, détaillées dans les deux paragraphes ci-dessous.
Cette méthode présente l'avantage de ne pas nécessiter de données annotées. Elle peut donc être implémentée dès le début du projet. Dans certains cas, des règles simples peuvent permettre d'annoter des documents avec une performance plus ou moins bonne. Par exemple, afin de repérer les nom de personnes physiques dans un document, on peut utiliser la règle : tout ce qui suit "Madame" ou "Monsieur" est un nom de personne physique. Bien évidemment, cette règle ne permettra pas de repérer tous les noms de personnes physiques (certains noms ne seront pas précédés de Madame ou Monsieur) et conduira également à des faux-positifs (certains mots qui suivent Monsieur ou Madame ne seront pas des personnes physiques). L'implémentation de ce type de règles par des méthodes informatiques peut cependant permettre d'accélérer le processus d'annotation, afin d'annoter les cas simples, c'est-à-dire ceux qui sont conformes à certains règles métier ou d'usage.
La pertinence de cette méthode est à évaluer au cas par cas avec les experts métiers, afin d'identifier l'ensemble des règles pertinentes. Une fois ces règles établies, il faudra les traduire informatiquement afin de pré-annoter les documents, un travail à réaliser par un profil de data scientist.
Snorkel est un outil open source développé par une équipe de Standford University permettant d'annoter des documents de façon automatique par le croisement de différentes règles métier. Une librairie est disponible en Python pour implémenter ces méthodes et de nombreux exemples et tutoriels sont proposés sur le site du projet.
Ce type de méthodes nécessite un premier jeu de données annotées. Une fois qu'un premier jeu de données annotées est constitué, il est alors possible d'entraîner un premier algorithme d'apprentissage afin de labéliser les documents. Ce processus est itératif : il est en effet difficile de connaître à l'avance la taille minimale requise du jeu d'apprentissage permettant de bonnes performances. On peut alors, à partir d'un faible volume de données, entraîner un premier algorithme qui n'aura probablement pas des performances suffisantes pour passer en production, mais dont on peut cependant espérer qu'il permette d'accélérer le processus d'annotation. Il faudra veiller à calibrer l'algorithme pour favoriser la précision au rappel, ce qui impliquera pour l'annotateur de corriger peu des champs annotés automatiquement (un taux de faux positifs faible) mais de rajouter les labels que l'algorithme omettra (taux de faux négatifs plus élevé).
Dans un projet d'annotation, les documents à annoter sont souvent sélectionnés aléatoirement parmi l'ensemble des documents.
::: lexique Active learning L'active learning est un champ de l'apprentissage automatique qui fait interagir l'algorithme d'apprentissage avec le système en charge de la labélisation (l'annotateur dans notre cas). Cette méthode est particulièrement utile dans les situations où l'obtention de labels est coûteuse. Au fur et à mesure de l'annotation, l'algorithme va apprendre à prioriser les documents à faire annoter afin de maximiser le gain d'information du nouveau document annoté, et ainsi permettre de minimiser le nombre de documents nécessaires pour entraîner un algorithme avec de bonnes performances. :::
L'idée sous-jacente est que tous les documents n'apporteront pas la même contribution à l'algorithme d'apprentissage. Pour plus d'informations à ce sujet, cet article détaille comment implémenter des méthodes d'active learning appliquées à l'annotation de documents textuels.
Conduire une campagne d'annotation est souvent complexe. Une fois la campagne terminée, en faire le bilan pourra s'avérer fort utile à de futurs projets impliquant de l'annotation, en documentant la démarche, le déroulement de la campagne ainsi que les métriques clés. Nous proposons dans cette partie une liste, non exhaustive, de métriques et de questions à se poser pour faire le bilan de votre campagne d'annotation et en tirer des enseignements.
Durée de la campagne d'annotation
Nombre d'annotateurs mobilisés
Volume total de documents annotés
Temps moyen passé à annoter un document
Dans le cas où une solution d'automatisation de l'annotation a été développée à l'aide d'outils d'intelligence artificielle :
Métriques de performance de l'algorithme d'automatisation de l'annotation (justesse, précision, rappel, F1-Score) globales et ventilées selon les différentes catégories d'annotations si pertinent
Evolution de ces différentes métriques en fonction de la taille de l'échantillon d'apprentissage
Adéquation du logiciel d'annotation (au vu notamment des différents critères listés dans la partie Critères de sélection d’un logiciel d’annotation de documents textuels )
Adéquation du schéma d'annotation (lisibilité, reproductibilité, couverture des cas particuliers)
Si les objectifs de volumes de documents à annoter initialement prévus ont été revus à la baisse, en identifier les raisons, qui peuvent être liées :
aux difficulté de mobiliser les annotateurs
au temps d'annotation par document plus long que prévu
aux itérations pour trouver un schéma d'annotation plus nombreuses que prévu, ce qui a ralenti le démarrage effectif de la campagne
Au-delà de la documentation développée au cours du projet et en fin de projet qui constituent des ressources potentiellement utiles à d'autres projets, une campagne d'annotation peut aussi être l'opportunité de constituer des ressources mutualisables. Lorsque les règles de protection de données le permettent, publier en open data un corpus de données annotées peut permettre à d'autres projets de se réaliser. Si la publication en open data n'est pas envisageable, le corpus de données annotées pourra s'avérer utile à de futurs projets de votre organisation. Il est donc utile de conserver ce corpus avec la documentation associée.
Lorsqu'un logiciel d'annotation est développé pour répondre au besoin spécifique de votre projet, il peut également être intéressant de publier le code source de l'application sur un repertoire public de type GitHub (on parle alors de code open source).
Dans cette annexe, nous recensons les définitions des termes techniques utilisés dans ce guide.
L'active learning est un champ de l'apprentissage automatique qui fait interagir l'algorithme d'apprentissage avec le système en charge de la labélisation (l'annotateur dans notre cas). Cette méthode est particulièrement utile dans les situations où l'obtention de labels est coûteuse. Au fur et à mesure de l'annotation, l'algorithme va apprendre à prioriser les documents à faire annoter afin de maximiser le gain d'information de la nouvelle donnée annotée, et ainsi permettre de minimiser le nombre de documents nécessaires pour entraîner un algorithme avec de bonnes performances.
L'annotation est la tâche qui consiste à attribuer à chaque donnée le label qui lui correspond. Par exemple, à attribuer le label « chien » ou « chat » à une base de photographies d'animaux. Ou encore à attribuer le label correct entre « nom », « prénom », « adresse », « date » ou « aucun » à chacun des mots d'un document. On distinguera l'annotation manuelle, lorsque cette tâche est effectuée par un humain, de l'annotation automatique, lorsque cette tâche est effectuée par un programme informatique.
L'apprentissage supervisé est une tâche d'apprentissage automatique qui consiste à partir d'exemples labélisés, à trouver une fonction permettant d'attribuer un label à chaque exemple à partir d'un ensemble de caractéristiques (variables ou features). Cette fonction pourra être appliquée à de nouveaux exemples non labélisés afin de leur attribuer une prédiction du label. L'apprentissage non supervisé, par opposition, a pour objectif de déterminer des structures sous-jacentes à un ensemble de données non-labélisées (regroupement d'exemples similaires ou détection d'anomalies par exemple).
Docker est un logiciel libre permettant de lancer des applications dans des conteneurs logiciels. Il permet ainsi de faciliter le déploiement d'une application sur un serveur.
Un jeu de données tabulaire se présente sous forme d'un tableau dont les lignes sont des entrées et les colonnes des catégories d'information. Par exemple, un tableur CSV ou une base SQL dans lesquels chaque ligne correspond à un individu et chaque colonne à ses caractéristiques propres (nom, âge, profession, etc.). Les données tabulaires sont des données structurées.
À l'inverse des données tabulaires, les données non structurées sont des données qui ne sont pas stockées sous un format prédéfini et où l'information est donc plus dispersée. Cela recouvre par exemple le texte libre comme des documents administratifs, des lettres, des décisions de justice, mais aussi des images, des enregistrement sonores, des vidéos, etc.
Le format CoNLL, pour « Conference on Natural Language Learning », est un format général, dont il existe de nombreuses versions et déclinaisons, couramment employé pour les tâches de traitement automatique du langage naturel. Il décrit des données textuelles sous forme de colonne selon un nombre d'attributs : catégorie d'entité nommée, nature grammaticale, etc. Il permet ainsi de stocker un texte annoté.
Afin de développer un modèle d'apprentissage supervisé, un jeu de données labélisées est nécessaire. Ce jeu de données est alors divisé en deux (en général par un échantillonnage aléatoire) : un jeu de données d'apprentissage et un jeu de données de test. Le jeu d'apprentissage, comme son nom l'indique, est utilisé pendant la phase d'apprentissage, afin de trouver une fonction qui permette de prédire le label à partir des variables en entrée. Afin de s'assurer que l'algorithme ait de bonnes performances sur des exemples différents de ceux utilisés lors de la phase d'apprentissage, les différentes métriques de performance de l'algorithme (justesse, précision, rappel, ...) sont calculées sur le jeu de données de test.
En informatique, une librairie, aussi appelée « bibliothèque de code » ou « package », est un ensemble de code prêt à l'usage qui peut être facilement importé et réutilisé par un utilisateur pour que celui-ci n'ait besoin de réécrire ces portions de code. Par exemple, la librairie « NLTK » sous Python permet d'utiliser tout un ensemble de méthode pour pré-traiter des données textuelles. Les librairies permettent ainsi un énorme gain de temps en évitant que de nombreux développeurs ne codent des portions de code identiques chacun de leur côté.
Un moteur de règles est un ensemble de règles prédéfinies « à l'avance ». Par exemple, une règle de pseudonymisation pourrait être « si le mot qui suit "Monsieur" ou "Madame" commence par une majuscule, alors ce mot est un prénom ». La complexité du langage naturel et la diversité des formulations qui se trouvent dans les documents fait que ce type de moteur de règles a de fortes chances de faire beaucoup d'erreurs dans des textes complexes, ou dont la forme varie souvent.
La pré-annotation consiste à annoter de façon automatique les documents, afin que l’annotateur les vérifie, en les complétant ou en les corrigeant si nécessaire.
Le guide de la CNIL sur l'anonymisation des données définit l'anonymisation comme « un traitement de données personnelles réalisé de manière à ce qu'on ne puisse plus attribuer les données relatives à une personne physique sans avoir recours à des informations supplémentaires. En pratique la pseudonymisation consiste à remplacer les données directement identifiantes (nom, prénom, etc.) d’un jeu de données par des données indirectement identifiantes (alias, numéro dans un classement, etc.) ».
La reconnaissance d'entités nommées, ou Named Entity Recognition (NER) en anglais, est une tâche d'apprentissage supervisée où les données d'entrées sont chacun des mots d'un document et le label qu'on leur attribue est une catégorie sémantique à laquelle il se rattache : par exemple « nom », « prénom », « adresse », « date ».
Le traitement automatique du langage (TAL), aussi connu sous l'acronyme « NLP » pour Natural Language Processing, désigne le domaine de l'intelligence artificielle qui s'intéresse au texte. Il regroupe plusieurs grands types de tâches, comme la reconnaissance d'entités, les agents conversationnels, la classification de documents, le question-answering, etc.