Ressources numériques en sciences humaines et sociales OpenEdition Nos plateformes OpenEdition Books OpenEdition Journals Hypothèses Calenda Bibliothèques OpenEdition Freemium Suivez-nous

Comprendre les erreurs dans l’annotation automatique d’OFROM

Le corpus OFROM s’appuie sur l’outil d’annotation automatique DisMo (Christodoulides 2014, 2015, 2018) pour l’étiquetage de ses “mots” en part-of-speech (PoS), c’est-à-dire en catégories morpho-syntaxiques telles que le verbe, le pronom, etc.

L’annotation automatique commet des erreurs : on s’attend en général à ce que 5-10% des étiquettes morpho-syntaxiques s’avèrent fausses. Pour le corpus OFROM, il n’y a jamais vraiment eu l’occasion d’évaluer non seulement le taux d’erreurs, mais aussi les causes de ces erreurs (et, à terme, un moyen de les réduire ou d’au moins les signaler).

1. Données et premières observations

Ce qui suit n’a été appuyé par aucune recherche bibliographique : le travail a débuté immédiatement par la sélection d’un sous-corpus d’OFROM pour en corriger l’annotation puis comparer les résultats.

Le sous-corpus sélectionné est celui qui a été partagé entre autres avec le projet DoReCo (Seifart et al. 2022). Il correspond à des fichiers “unine15a” de 2015 dont les enquêtes, la transcription et la révision ont été menés entièrement par des collaborateurs du Centre de dialectologie à l’époque. L’échantillon comprend 36’525 tokens (~mot, correspondant au tok_min de DisMo) dont +4’000 pauses et ~1’000 cas d’anonymisation, de segments inintelligibles et de locuteurs tiers, soit réellement 31’128 tokens pertinents.

Une remarque importante : la version de DisMo utilisée par OFROM est la version de 2014-15. Notre jeu de données a également été annoté automatiquement par une version plus récente (2018-22 via Praaline) et comparé avec notre correction. À notre surprise, l’ancienne version s’est avérée plus précise :

PrécisionTaux d’erreur sur 36k tokensTaux sur 31k tokens
v.2014-154.9%5.1%
v.2018-225.5%5.7%
Fig.1: Taux d’erreur entre les deux versions de DisMo

Cela, à notre sens, ne signifie pas que l’ancien modèle est meilleur, mais plutôt doit avertir des biais potentiels, notamment dans nos corrections. Notons également que ce taux d’erreur concerne tous les niveaux de PoS.

Une étiquette morpho-syntaxique (PoS) de DisMo contient plusieurs niveaux d’analyse séparés par un point-virgule “:”. Le premier niveau est celui de la catégorie générale : VER (verbe), NOM (nom), ADJ (adjectif), etc. Le second niveau contient les différents types : pour les verbes ce sont les temps et mode (VER:pres (indicatif présent), VER:ppas (participe passé), etc.) ; pour les déterminants ce sont les types (DET:ind (indéfini), DET:pos (possessif), etc.). Un troisième niveau indique pour les verbes les auxiliaires (VER:pres:aux). Selon le niveau d’analyse, le taux d’erreur va varier : ainsi en ne tenant compte que du premier niveau d’analyse, pour 31k tokens le taux d’erreur (version 2014-15) tombe à 3.9%.

En dernière remarque, nous parlons ici d'”erreur” pour parler des cas où l’annotation automatique (désormais version 2014-15 de DisMo) diverge de notre correction. Nous ne pouvons pas exclure que notre correction soit elle-même fautive, il faut donc plutôt y voir un désaccord entre annotateurs.

2. Trois causes d’erreurs

En général, la description des erreurs fait appel à des tableaux croisés, comme en figure 2 qui reprend les catégories générales.

Fig.2: Tableau croisé au premier niveau de PoS

Chaque ligne correspond à une étiquette dans DisMo, chaque colonne à son correspondant dans la correction. L’étiquette ‘0’ correspond aux troncations (‘il ét/ était’), ‘PFX’ aux préfixes (‘super’, ‘hyper’, etc.) et ITJ aux interjections (‘eh’, ‘oh’, ‘euh’, etc.).

Toute une réalité se cache derrière ces chiffres, ce qui nous amène à distinguer trois causes d’erreurs :

  1. L’annotateur/correcteur.
    Les conventions ont pu changer ou les annotateurs ne pas avoir suivi les mêmes conventions. Les désaccords viennent de cette divergence.
  2. Les données d’entraînement.
    Le modèle de DisMo a été entraîné sauf erreur sur ~50k tokens. Il ne couvre pas forcément tous les cas de figure.
  3. Les cas indécidables.
    Même à conventions identiques, certains cas peuvent poser problème même à l’annotateur humain ; d’autre part le modèle n’a pas forcément accès aux informations nécessaires pour les traiter.

Prenons par exemple les erreurs causées par l’annotateur/correcteur, ou cause humaine : en figure 2, 264 interjections (ITJ) sont révisées comme des adverbes (ADV). En cause, nous avons constaté que des tokens tels que ‘quoi’, ‘ben’ et ‘hein’ étaient considérés comme des ITJ. Nous les avons recatégorisés en ADV. Autrement dit il ne s’agit pas d’une erreur réelle du modèle mais d’un changement de conventions : ces marqueurs discursifs avaient été catégorisés volontairement comme ITJ à l’époque, ce n’était pas une erreur.

Lors de la correction, nous avons cherché à suivre au plus près les conventions de l’époque, quitte à suivre les choix de DisMo aux dépens des nôtres. Nous avons par exemple conservé les PFX. Il y aurait toute une discussion à avoir sur le jeu d’étiquettes qui dépasse notre objet ici. Dans les cas où nous avons changé la convention, si possible, nous avons forcé ce changement à DisMo lui-même (c’est le cas, non visible ici, des segments inintelligibles “%”). Seul le cas des ITJ > ADV n’a pas eu ce traitement, en attendant de connaître l’étendue du changement (et du fait d’une ambiguïté sur ‘quoi’).

À cela s’ajoute un cas particulier : OFROM distingue “puis/pis” selon la prononciation. Or le modèle de DisMo ne semble pas gérer “pis”, qu’il considère donc généralement comme un NOM:com (le pis de la vache ?). Nous aurions pu là aussi le corriger systématiquement à l’avance, mais il ne s’agit pas ici à notre connaissance d’un changement de convention : cela tomberait plutôt dans notre seconde cause, un modèle trop limité à l’époque.

Nous y reviendrons en conclusion mais de tels cas suggèrent qu’une partie des erreurs observables dans l’annotation automatique peuvent être corrigées par défaut, pour des unités dont nous savons qu’elles ne peuvent avoir qu’une seule étiquette.

Il reste les deux autres causes, et pour les distinguer nous nous sommes intéressé aux contextes dans lesquels les erreurs se produisent.

3. Le groupement d’erreurs

Une tentative pour repérer ces contextes a été de rechercher les cas d’erreurs contiguës / successives. L’idée était qu’une erreur pouvait en entraîner une autre (un VER étiqueté en NOM transformant le PRO (pronom) en DET, “nous le savons” vs “nous, le savon, …”).

Cette approche s’est avérée une impasse. Nous avons pu trouver, dans notre échantillon, jusqu’à 5 erreurs côte-à-côte, mais de tels cas sont des exceptions et, de fait, quand nous avons comparé la distribution de ces regroupements d’erreurs (ou clusters), nous avons constaté qu’elle était comparable à une distribution aléatoire.

Fig.3: Comparaison des clusters d’erreurs entre données réelles et aléatoires

La figure 3 présente pour chaque taille de cluster (de 1 erreur isolée à 5 erreurs successives) leur nombre d’occurrences à l’échelle logarithmique : il n’y a de fait qu’une seule occurrence du cas 5, 14 du cas 3, etc. Les données en orange, générées aléatoirement, ont une progression linéaire ; si les données en bleu, réelles, semblent diverger sur la fin, il s’agit purement d’une illusion due à l’échelle : on ne peut pas descendre en-dessous d’une occurrence.

Outre un test chi-square, qui confirme la nature aléatoire de notre distribution, nous avons également observé les clusters de tailles 4 et 5. Le cas 5 est un cas de répétition (que la version 2018-22 de DisMo annote correctement) :

1) on  a   vu  plein de  moutons des des des des bats qui s'  abandonnaient
   ADJ VER VER ADJ   PRP ADJ     PRP PRP PRP PRP NOM  CON PRO VER
(unine15a61m, 304-307)

Les cas à 4 sont des NUM (“mille cinq cents”, “cinq neuf cinquante-six”), des NOM:pro (noms propres) et nos interjections (“quoi hein”). Au-delà de 2-3 erreurs, le cluster semble donc accidentel. En-deçà, et outre toujours les nombres et noms propres, ils semblent surtout liés à l’analyse des VER.

Autrement dit les erreurs tendent à être isolées. De fait, il existe 17 cas où DisMo a étiqueté un déterminant (DET) avant un verbe (VER) :

2) 'un parler', 'leur expliquer', 'ce serait', 'leur faire', "l' emporter", "l' emporter", 'un faire', 'un valoir', 'les peut', 'les être', 'une encastre', 'le voilà', 'la trimballer', "l' avoir", 'ce sera', "l' as", 'des torées'

Il est difficile hors-contexte de juger de ces cas, et certains sont justes (“ce serait /ce sera” par exemple) mais on voit assez vite que “des torées” est en fait DET-NOM, comme “un parler”, tandis que “leur faire” est certainement un PRO-VER. Le cas “l’emporter” montre quant à lui toute l’ambiguïté à laquelle fait face le modèle.

4. Une approche par lemmes

Une dernière approche a été tentée à ce stade, pour réduire la complexité, qui consiste à regrouper les erreurs non pas par catégorie mais par lemme (entrée lexicale, par exemple ‘être’ pour “était, sera, fûmes, été, etc.”) pour un total de 2’155 lemmes. Chaque lemme peut se voir attribué plusieurs annotations : ‘le’ (“le, la, l’, les”) peut être un déterminant défini (DET:def) ou un pronom personnel objet (PRO:per:objd).

3)    faut les mettre dans le talus des chèvres (unine15a34d, 653-655s)

Chacune de ces catégories peut être juste (a), c’est-à-dire que toutes les occurrences sont en accord avec la correction ; ou alors, en cas d’erreur, ne diverger que d’une étiquette (b) : nous y avons dénombré 368 lemmes. Enfin, une catégorie peut diverger en plusieurs étiquettes (c) : il existe 23 tels lemmes regroupant 4’952 occurrences (~16% de l’échantillon).

4) "un","du","me","te","tu","le","nous","vous",
"que","qui","tout","rien","quoi","soit","où","combien",
"neuchâtelois","Suisse","foutre","neuf,"jurer","en","dessus"

Une partie est anecdotique : le lemme ‘jurer’ ici par exemple correspond à ‘Jura’ qui est nécessairement un nom propre (NOM:pro) ; ‘neuf’ varie entre numéral (NUM) et adjectif (ADJ) ; “dessus” distingue l’adverbe (ADV) d’une préposition “en dessus” (PRP). Tous ces cas relèvent d’imprévus faute de volume de données. Au plus soulignons une exception pour les “allemand”, “suisse”, “neuchâtelois”, “belge”, etc. où le modèle peine à distinguer entre nom (NOM:com, “le suisse”) et adjectif (ADJ, “le canton suisse”), particulièrement face au “suisse allemand”. Le cas de “Suisse” est notable puisque le cas “NOM:pro” (nom propre) y est systématiquement faux.

Nous avons séparé le reste des lemmes en plusieurs catégories : (i) les déterminants (DET, plus “en”) et pronoms personnels (PRO:per) et (ii) les adverbes (ADV) et conjonctions (CON).

Dans leur vaste majorité, les déterminants ne posent pas de problème. Nous avons des cas assez rares pour le numéral ‘un’ (NUM) et le partitif ‘du’ (DET:par) qui peut aussi être préposition (PRP:det) comme dans :

5)    mais c'est vrai que (0.6) sorti du contexte (unine15a01m, 539-542s)

Ou être indéfini (DET:ind) dans des cas mal lemmatisés de tokens ‘des’. Notons anecdotiquement quelques ‘le’ annotés ITJ à la correction car apparaissant dans l’onomatopée “oh la la”.

Les pronoms personnels se confondent avec les déterminants dans les cas où ils sont objets. Pour ‘le’, DisMo a des difficultés à distinguer DET et PRO selon le contexte ; mais la réelle difficulté est, au sein des pronoms personnels, de distinguer entre sujet (PRO:per:sjt), objet (PRO:per:objd/obji) et tonique (PRO:per:ton) : un exemple fictif “vous vous vous vouvoyez” l’illustre bien, avec un tonique suivi d’un sujet suivi d’un objet pour la même forme dans à peu près le même contexte.

Enfin les adverbes et conjonctions présentent un casse-tête même pour l’annotateur humain. De loin ‘tout’ est le plus complexe : il peut être NOM, DET, PRO et ADV (le tout / tout une… / ils ont tous remplis… / tout à fait, tout beau). De même ‘que’ peut être conjonction (CON), pronom relatif (PRO:rel, “la voiture que…”), pronom interrogatif (PRO:int, “que dis-tu”) et adverbe (ADV, “il n’a que des…”).

5. Conclusion

Que ce soit par catégorie, par cluster ou par lemme, l’objectif reste de repérer, au travers de la masse d’information, les lieux de production d’erreurs et de là les moyens de les réduire. Ce travail n’en est à ce titre qu’à ses débuts (et réinvente sans doute la roue…).

Une première piste de correction qui se présente pour nous est la correction systémique, avant ou après l’annotation automatique, de cas décidables : nous pouvons aisément corriger tous les ‘hein’, ‘ben’ et ‘pis’ du corpus, ces derniers ayant toujours la même étiquette (et le même lemme) associée. Un dictionnaire permettrait d’améliorer le modèle, ou de le corriger après-coup : cela éviterait d’avoir une occurrence de “mouton” annotée comme un adjectif (1). Cette approche est cependant très limitée, comme exemplifié par ‘l’emporter’ (2).

La seconde piste est évidemment de réentraîner le modèle avec un plus large jeu de données. Il n’est cependant pas clair pour nous à quel point le modèle s’améliorerait : vaut-il la peine d’annoter/corriger manuellement 100k tokens pour réduire le taux d’erreur de 0.1% ? Un des intérêts de ce travail est de déterminer si justement le cause est une carence de données ou bien des cas indécidables.

Dans ce dernier cas, il reste deux options.

La première est le cas indécidable même pour l’annotateur humain : dans de tels cas, mieux vaut alors que la machine annote spécifiquement ce statut, par exemple avec une étiquette “?”. Cette solution peut être généralisée pour que, en-dessous d’un certain seuil de confiance (dont dispose DisMo), l’étiquette soit “?”.

La seconde option est celle où le modèle a besoin d’un autre type de données, ou bien requiert un fonctionnement différent pour gérer ces situations. Nous serions bien incapable de le déterminer.

Il reste encore, pour notre part, à explorer plus avant la piste des lemmes, ainsi qu’à voir si la proportion d’erreurs peut être indicative d’un simple accident statistique ou d’une véritable indécision ; ainsi qu’à tester la correction systémique pour voir jusqu’où elle est applicable et le taux d’erreur qu’elle permet de corriger en espérant, à terme, fournir une annotation automatique toujours plus fiable.


OpenEdition vous propose de citer ce billet de la manière suivante :
François Delafontaine (9 décembre 2022). Comprendre les erreurs dans l’annotation automatique d’OFROM. Accueil. Consulté le 8 décembre 2025 à l’adresse https://doi.org/10.58079/n4tl


Laisser un commentaire

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.