Calculer l’accord inter-annotateurs sur corpus oral

Bien qu’il ne s’agisse pas d’une question touchant directement aux corpus eux-mêmes (ou indirectement seulement, pour la gestion/valorisation des annotations faites sur ce corpus), l’accord inter-annotateurs revient constamment dans mon travail, du projet SegCor au projet DoReCo, et je voulais donc partager mon expérience à ce sujet.

Plus précisément, j’ai été fréquemment confronté au problème posé par la comparaison des segmentations, et je voulais présenter les trois manières dont ce problème a été traité à travers ces projets.

1. Deux types d’accord

Je ne suis ni statisticien ni TAListe, je ne pourrai donc pas introduire l’accord inter-annotateurs (ou accord « entre juges ») autrement que dans les termes concrets où j’y ai été confronté.

L’accord inter-annotateurs, pour moi, consiste à comparer deux « tires » d’une transcription. La tire, pour rappel, est une série de segments/intervalles temporels permettant d’aligner le texte au son. L’accord porte sur ces segments, composés de deux frontières temporelles (en (milli)secondes) et d’un contenu (sous forme de chaîne de caractères). Je parlerai ici de segment et d’unité indifféremment, avec mes excuses. L’important est que le désaccord peut porter soit sur le contenu textuel, soit sur le placement des frontières.

Parmi les travaux dans la continuité desquels notre étude prend position, nous pouvons distinguer ceux qui portent leur attention sur la question de l’attribution de catégories à des unités prédéfinies (la caractérisation) d’une part et ceux qui privilégient la question de la segmentation des unités d’autre part.

Mathet Y. & Widlöcher A. (2011). « Une approche holiste et unifiée de l’alignement et de la mesure d’accord inter-annotateurs ». TALN’11. (voir aussi Mathet et al. 2015)

Mathet, Widlöcher et Métivier (2015) utilisent les termes de « categorization » pour le contenu et de « unitizing » pour les frontières. J’utiliserai « catégorisation » et « segmentation » respectivement.

2. Catégorisation : l’exemple de l’annotation prosodique

Dans le cas de l’annotation prosodique réalisée dans le cadre du projet SegCor (Delafontaine, Ursi & Acosta 2018), toutes les annotations étaient alignées sur les syllabes, et partageaient donc les mêmes frontières temporelles. Autrement dit, l’accord portait seulement sur le contenu.

La catégorisation ne pose pas vraiment de problème. Le Kappa (de Cohen (1960) ou de Fleiss) est couramment utilisé pour cela, bien que son interprétation pose problème. Un Kappa va être entre 0 et 1, et les avis divergent pour savoir à partir d’où l’accord est considéré comme satisfaisant : entre 0.6-0.8 généralement (Landis & Koch 1977).

L’équipe SegCor travaillant sur les champs topologiques et constructions s’est reposée sur la table de contingence, avec précision, rappel et f-mesure. Le Kappa repose sur cette table (Santos 2018), en comparant les résultats obtenus avec des résultats hypothétiques dus au hasard. La table de contingence fournit un détail que le kappa-score résume.

Cette manière de mesurer l’accord est largement répandue, et pour l’annotation prosodique les outils étaient déjà en place, fournis par Mathieu Avanzi sous la forme d’un plugin du logiciel Praat.

3. Segmentation : l’exemple de l’annotation des périodes

Si l’annotation prosodique a pu se restreindre à la catégorisation pour le calcul de l’accord, l’annotation en champs topologiques et constructions se confrontait déjà à des segments divergeant en durée, et des discussions ont commencé pour calculer l’accord sur la segmentation, culminant avec l’atelier de 2018 à Paris sur la question.

Il en est ressorti que le Gamma de Mathet et al. (2015) était la meilleure mesure à disposition, mais le projet n’a jamais eu l’occasion de l’appliquer et, de fait, la solution retenue a été de s’en tenir au Kappa-score, en réduisant le problème de la segmentation à celui de la catégorisation.

Cette méthode a été appliquée notamment par Natalia Kalashnikova au moment de comparer les annotations des périodes. Comme pour les champs topologiques, les segments divergeaient en durée et, de fait, les tires à comparer avaient un nombre de segments inégal : des segments d’une tire pouvaient ne pas exister dans une autre. Faute de savoir quels segments comparer, calculer l’accord sur la segmentation était impossible.

La réduction effectuée, pour rendre un Kappa-score possible, a consisté à faire en sorte que toutes les tires à comparer partagent le même nombre de frontières temporelles aux mêmes positions. Pour cela, les tires ont été découpées en segments plus petits à l’aide des frontières des autres tires. Pour conserver les frontières des segments d’origine (correspondant à des unités théoriques), le système BILU (Begin, Inside, Last, Unique) a été appliqué, de sorte que les frontières d’unité se retrouvaient dans le contenu, et non plus dans les frontières.

Dès l’atelier de 2018 et à nouveau à l’atelier de 2019, les experts ont fait remarquer au projet que les segments obtenus étaient de taille inégale, et que les résultats statistiques obtenus étaient par conséquents discutables. La méthode a donc été raffinée en déterminant un intervalle temporel minimal commun à toutes les tires (avec un seuil minimal de 0.01 seconde) et en découpant les segments en autant de segments minimaux. Les frontières d’origine sont conservées et le résultat est une segmentation commune constante.

Fig.1: Extrait de deux tires et leur segmentation.

Dans l’image ci-dessus, tirée d’un fichier du projet DoReCo, il y a deux tires dont la segmentation diffère, avec également une unité en plus pour la seconde tire. La troisième tire offre une segmentation régulière, avec des intervalles de taille constante et où toutes les frontières des deux tires se retrouvent. Le contenu est réduit à l’essentiel : ‘1’ s’il y a accord, ‘0’ s’il y a désaccord. Il est possible ainsi de réduire le problème de la segmentation à un problème de catégorisation.

Entre l’application du BILU pour conserver les unités annotées et l’application d’une segmentation minimale, cette méthode est à ma connaissance la plus fiable, de par sa simplicité mais aussi parce qu’elle ramène à terme le test en territoire connu, de sorte que les résultats sont facilement partageables et interprétables.

4. Segmentation : l’expérience du projet DoReCo

Cette méthode de réduction pour un Kappa-score a également été appliquée au sein du projet DoReCo, pour comparer l’alignement automatique des tokens avec leur correction manuelle. Cela signifiait comparer non pas des annotations mais de la transcription dont le contenu pouvait également avoir été corrigé, en plus des ajouts et suppressions de mots à la correction. La réduction a permis d’obtenir une évaluation fiable de l’accord.

Néanmoins l’équipe du projet a considéré cette évaluation insuffisante, et s’est donnée pour mandat d’obtenir des mesures séparées pour la catégorisation et pour la segmentation.

Cela implique de pouvoir établir des paires, de retrouver quelles unités correspondent entre les deux tires.

Je n’exposerai pas ici toutes les propositions qui ont été faites pour accomplir cette tâche, mais je ferai deux remarques. La première est que cette mise en correspondance ne servira pas qu’au seul accord inter-annotateurs : il s’agit également de réaligner des unités et de fusionner des transcriptions. L’objectif désiré est donc une précision de 100%. La seconde remarque est que cet objectif est automatiquement impossible : le processus est nécessairement semi-automatique, avec une correction manuelle nécessaire, et l’objectif devient donc une méthode automatique réduisant le nombre d’erreurs à corriger derrière.

La méthode finalement retenue vient de la bioinformatique, avec les algorithmes de Needleman-Wunsch, Smith-Waterman, Gotoh, or Waterman-Smith-Beyer que je ne prétendrai ni connaître ni comprendre. Le problème du pairing s’est posé pour les séquences d’ADN (entre autres) et le projet DoReCo s’est tourné vers les outils utilisés dans ce domaine. En termes techniques, il s’agit de la librairie « biopython » et de sa fonction « pairwise2« . Cette fonction, à partir de deux séquences (nos tires), va chercher les paires optimales et signaler autrement les cas où le contenu diffère (« substitution ») ou ceux où l’unité est manquante (« gap » pour eux, ajout/suppression pour nous).

Fig.2: Extrait de deux tires et leur pairage (sic)

Dans l’image ci-dessus, les unités des deux premières tires ont été mises en relation dans les deux tires suivantes. Les nombres incrémentés indiquent les paires ; ce nombre peut être suivi d’un « n » signifiant que l’unité est la même mais que le contenu diffère ; un « n » seul signifie que l’unité n’a pas de correspondant dans l’autre tire, comme ici entre les paires 45 et 46.

A ma surprise, cette méthode est surprenamment fiable. Elle commet des erreurs, bien sûr, mais l’accord inter-annotateurs (kappa) entre cette mise en correspondance automatique et la correction qui a suivi est de 0.97, avec 95-98% de correspondance : suffisamment précis pour permettre une correction manuelle rapide. Le résultat permet ensuite effectivement de mesurer séparément la catégorisation et la segmentation, même si pour cette dernière le projet DoReCo n’a jusqu’à présent extrait que le nombre de frontières divergentes et la moyenne d’écart en millisecondes.

5. D’autres méthodes ?

Je ne sais pas s’il existe d’autres méthodes pour mesurer l’accord inter-annotateurs sur corpus oral. Les trois présentées ci-dessus sont les seules que je connais : le Gamma, la réduction pour Kappa (atomizing) et la mise en correspondance avec Needleman-Wunsch.

Des deux méthodes effectivement appliquées, je ne saurais pas laquelle privilégier. La réduction au Kappa demeure la plus simple, la plus rapide et la plus connue. Combinée à une table de contingence (en supposant un nombre de catégories adapté), elle fournit normalement toute l’information nécessaire. La mise en correspondance est plus puissante et potentiellement plus précise, mais aussi plus expérimentale et complexe. Ironiquement, maintenant que je sais quelles frontières comparer, je ne sais pas quoi en faire, au-delà d’une moyenne d’écart en millisecondes (à l’image de Strunk et al. 2013).

Il faudra encore un peu de temps avant que les scripts ne soient prêts au partage public (tout du moins du côté de DoReCo) mais, d’ici peu, ces deux méthodes devraient être facilement accessibles.

Et tout ce qui favorise l’exploitation de nos corpus est bon à prendre.


Auteur : François Delafontaine

Assistant-Ingénieur (UMR5596 DDL, Lyon)

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.