Elaboration d'un lexique de
fautes d'orthographe: TagErrors.
1
Objectifs
L'objectif initial était d'écrire un rattrapeur de fautes d'orthographe.
Mais pour élaborer un tel rattrapeur, il faut avoir une idée des types de faute qui sont commises par les auteurs, de là l'idée de construire un lexique des fautes d'orthographe.
On pourrait objecter qu'il suffit de s'inspirer de travaux ou de fichiers pré-existants. Le problème est qu'il ne semble pas y en avoir.
L'étude la plus accomplie dans le domaine est sans conteste: « La grammaire des fautes » de Henri Frei, qui n'a donné aucun fichier informatique, puisque l'étude date de 1929.
En ce qui concerne la période actuelle, les publications sont quasi-inexistantes car les travaux de recherche sont réalisés par des sociétés privées qui ne communiquent pas sur leur technologie.
2 Convention
terminologique
Notons que j'utilise le terme de « rattrapeur » plutôt que « correcteur », car, malgré leur nom, les logiciels du commerce en général ne corrigent pas: ils détectent la faute et proposent un ou plusieurs choix à l'utilisateur. Dans mon cas, il faut un dispositif qui opère en traitement par lot sans aucune question à l'utilisateur. L’usage ciblé est l’indexation d'une grande masse de documents.
3
Portée
Il s'agit de traiter les mots mal orthographiés d'un strict point de vue morphologique. L'objectif n'est pas de détecter les fautes d'accord entre les mots, ni de s'occuper du sens des mots.
En revanche, on ne se limite pas aux corrections d'une seule faute par mot : deux ou trois fautes sont possibles. Notons qu'un accent déplacé compte pour deux fautes.
Afin d'éviter de trop consacrer de temps aux hapax (occurrence unique d'une graphie) et aux fautes extrêmement rares, la fréquence d'apparition d'une faute sera prise en compte, tant lors du processus de constitution que lors de l'exploitation ultérieure.
4 Méthode de constitution du
lexique
4-1
Introduction
Je ne pars pas de rien : j'utilise un analyseur morphologique et un corpus.
L'analyseur morphologique permet de trouver la forme lemmatisée d'un mot du corpus, sa catégorie et sous-catégorie grammaticale et ses traits morphologiques. En fait, on n'exploite pas les informations retournées, on n'utilise simplement le fait que l'analyseur détermine si le mot est connu ou inconnu.
L'analyseur fait partie de la boîte à outils TagTools et s'appuie sur son dictionnaire interne.
Le corpus est constitué d'une année du Monde (l'année 1994) et d'une année de dépêches d'agences de presse. Le thème est relativement orienté, puisqu’il est constitué de textes du domaine journalistique, mais ces textes ne sont pas spécialisés puisque traitant de domaines aussi variés que la politique, les sciences ou les faits divers. Un aspect intéressant de ces textes est qu’ils ont été écrits par un grand nombre d’auteurs différents, ce qui signifie qu’ils sont relativement représentatifs des fautes que vous et moi commettons. Le corpus comporte 40 millions de mots.
Je procède en quatre phases, constituées d'opérations plus ou moins automatisées.
4-2
Phase-1
La méthode de constitution est itérative. Il s'agit d'effectuer les étapes de 1 à 7 et de s'arrêter lors de la deuxième étape, lorsque l'on n'a plus d'idées.
Etape-1: Appliquer l'analyseur sur le corpus et lister les mots inconnus.
Etape-2: Etudier les mots inconnus et tenter d'en induire (intellectuellement) une règle générale de transformation qui permette de passer de la forme incorrecte à la forme correcte.
Arrêter cette phase (la phase-1) quand on n'a plus d'idées.
Etape-3: Coder dans un langage de programmation la règle de transformation et l'appliquer au corpus.
Etape-4: Vérifier que la règle n'engendre pas trop de bruit.
Etape-5: S'il y a trop de bruit, alors rejeter la règle.
Etape-6: S'il n'y a pas trop de bruit, alors ajouter la règle de transformation dans le module de rattrapage qui est associé à l'analyseur. Ainsi, lors de l'itération suivante les fautes en question n'apparaîtront plus.
Etape-7: Retourner à l'étape-1
On observe que cette méthode ne permet pas de constituer un lexique complet des fautes puisqu'il reste un reliquat constitué de fautes sans leur forme correcte associée.
Dans l'exposé de la méthode (et pour éviter de complexifier inutilement la description), j'ai volontairement passé sous silence deux aspect de la procédure suivie:
a) la fréquence d'apparition,
b) les faiblesses du dictionnaire.
On se doute qu'il y a un certain nombre d'étapes qui sont délicates à réaliser quand on travaille sur de grandes masses de données : le problème majeur est que l'on est « noyé » sous la masse d'informations. De fait, pour prendre en compte les mots les plus intéressants, je n'applique la méthode que sur les mots qui commencent par une minuscule et qui apparaissent au moins 10 fois dans le corpus.
Je fais l'hypothèse que les règles construites sur les mots fréquents sont valides sur les autres mots. Donc, après cette phase-1, je fige les règles de transformation.
L'autre aspect concerne les faiblesses du dictionnaire, c'est le thème de la phase-2.
4-3
Phase-2
Je révise manuellement un à un des mots inconnus, ce qui est une tâche très longue.
Si le mot est une faute, alors je l'ajoute, avec sa forme correcte dans un fichier que l'on va appeler : « CasParCas ».
Si le mot n'est pas une faute, mais devrait figurer dans le dictionnaire, alors je l'ajoute dans le dictionnaire de l'analyseur.
La détection est relancée afin de vérifier que tous les mots ont bien été traités.
4-4
Phase-3
Puis, je m'occupe des mots un peu moins fréquents. J'abaisse le seuil de détection de 10 à 5 occurrences, toujours pour les mots commençant par une minuscule. Je réalise les mêmes opérations que lors de la phase-2.
Le processus est enfin répété en abaissant le seuil de 5 à 4 occurrences.
4-5
Phase-4
Puis, je m'occupe des erreurs dans le traitement des erreurs, si l'on peut dire.
Les entrées qui sont calculées par les règles de transformation n'ont pas été révisées une à une. On a juste évalué le bruit approximativement.
Rappelons que chaque entrée est un couple ‘partie gauche - partie droite’ :
Forme Incorrecte => Forme Correcte
Or, on peut se trouver dans une situation où la partie gauche n'est pas réellement une forme incorrecte mais une simple absence dans le dictionnaire. Et la règle de transformation aboutit par hasard à une entrée correcte qui n'a d'ailleurs peut-être rien à voir avec la forme incorrecte.
C'est donc une erreur dans le traitement de l'erreur.
Pour éliminer ce type de configuration, j'ajoute un post-traitement qui détecte les entrées dont le nombre d'occurrences (dans le corpus) de la forme incorrecte est égale au nombre d'occurrences de la forme incorrecte. La liste des mots est inscrite dans un fichier annexe qui comporte 552 entrées. Puis chaque entrée est vérifiée manuellement. Si c'est réellement une forme incorrecte, rien n'est fait. Mais si c'est une forme correcte qui est inconnue, le mot est ajouté dans le dictionnaire. Il faut ensuite réappliquer le même algorithme que celui de la phase-3.
Notons que cette phase permet incidemment de corriger certaines erreurs dans le dictionnaire : une vingtaine en fait.
5 Détails du
résultat
Le lexique final est constitué de 7964 entrées.
Chaque entrée est structurée de la manière suivante :
Si l'on s’intéresse à l'origine des entrées, le résultat est constitué de deux types d'entrées :
a) les entrées calculées par les règles de transformation.
Il y a 6929 entrées de ce type.
b) les entrées du fichier « CasParCas ».
Il y a 1035 entrées de ce type.
Les règles de transformation sont les suivantes:
a) Règles qui corrigent un seul type de faute.
Il y a éventuellement plusieurs fautes dans le mot, mais ces fautes sont toutes du même type.
Un ou plusieurs trémas
sont absents |
132 |
Les accents ne sont pas les bons |
611 |
Un problème de doublement de consonnes |
2927 |
Ecriture phonétique |
368 |
Les accents ne devraient pas figurer |
1204 |
Les accents devraient figurer |
1600 |
b) Règles qui corrigent plusieurs types de fautes.
Toutes les combinaisons ne sont pas bonnes à produire car le bruit est trop important. Après quelques essais, les combinaisons intéressantes sont :
Accents en trop et absence de tréma |
13 |
Accents absents et écriture phonétique |
11 |
Combinaison sur la présence-absence des accents |
63 |
6 Echantillon du
lexique
Le fichier est formaté en XML dont voici un extrait :
<chap-1 title="LISTE PAR TYPE DE
FAUTES PUIS PAR ORDRE ALPHABETIQUE">
<chap-1-1 title="MOTS AVEC UNE
SEULE FAUTE">
<chap-1-1-1 title="Manque un ou
plusieurs trémas">
<fau>naiveté</fau>
<cor>naïveté</cor>
<nfau>1</nfau>
<ncor>167</ncor>
</chap-1-1-1>
<chap-1-1-2 title="Les accents
ne sont pas les bons">
<fau>aprés</fau>
<cor>après</cor>
<nfau>122</nfau>
<ncor>36230</ncor>
</chap-1-1-2>
<chap-1-1-3 title="Problème de
doublement de consonnes">
<fau>appellé</fau>
<cor>appelé</cor>
<nfau>78</nfau>
<ncor>2451</ncor>
</chap-1-1-3>
<chap-1-1-4 title="Ecriture
phonétique approximative">
<fau>tranfert</fau>
<cor>transfert</cor>
<nfau>9</nfau>
<ncor>1407</ncor>
</chap-1-1-4>
<chap-1-1-5 title="Les accents
ne devraient pas figurer">
<fau>nécéssaire</fau>
<cor>nécessaire</cor> <nfau>18</nfau>
<ncor>3644</ncor>
</chap-1-1-5>
<chap-1-1-6 title="Les accents
devraient figurer">
<fau>dernieres</fau>
<cor>dernières</cor>
<nfau>8</nfau>
<ncor>3470</ncor>
</chap-1-1-6>
</chap-1-1>
<chap-1-2 title="MOTS AVEC DEUX
FAUTES">
<chap-1-2-1 title="Accents en
trop et absence de tréma">
<fau>canoé</fau>
<cor>canoë</cor>
<nfau>7</nfau>
<ncor>33</ncor>
</chap-1-2-1>
<chap-1-2-2 title="Accents
absents et écriture phonétique">
<fau>transferra</fau>
<cor>transférera</cor>
<nfau>1</nfau>
<ncor>13</ncor>
</chap-1-2-2>
<chap-1-2-3 title="Combinatoire
sur la présence-absence des accents">
<fau>chomâge</fau>
<cor>chômage</cor> <nfau>15</nfau>
<ncor>5573</ncor>
</chap-1-2-3>
</chap-1-2>
<chap-1-3 title="AUTRES
FAUTES">
<chap-1-3-1 title="Fautes
non-couvertes par les types listés
précédemment">
<fau>initative</fau>
<cor>initiative</cor>
<nfau>26</nfau>
<ncor>5119</ncor>
</chap-1-3-1>
</chap-1-3>
</chap-1>
7 Problèmes
rencontrés
Il faut dire un mot des problèmes rencontrés lors de l'implémentation et l'utilisation des règles de transformation.
Chaque règle effectue la combinaison des substitutions caractère par caractère. Si l'on n'y prend pas garde le temps de calcul peut être relativement long.
En mesurant le temps, je me suis aperçu que le temps de calcul était exagérément important sur les mots très longs. J'ai donc décidé de limiter le traitement aux mots qui ont moins de 20 caractères. En fait, ces mots sont extrêmement rares et sont issus principalement du domaine de la chimie.
La mesure n'était pas suffisante : de manière générale, le nombre de combinaisons étaient encore trop important. En observant les candidats produits par les règles, je me suis aperçu que la plupart des suites de caractères calculées n'existaient pas en français. J'ai donc ajouté un prétraitement associé au dictionnaire qui calcule les suites de deux caractères qui apparaissent effectivement dans les formes fléchies du dictionnaire. Cette suite de paires de caractères est mémorisée dans un fichier qui est exploitée afin de limiter la combinatoire des règles de transformation. Dit autrement, à chaque pas de la combinatoire, on vérifie que la sous-chaîne en cours de construction figure dans la liste des paires autorisées. Si tel n'est pas le cas, alors cette branche de la transformation est abandonnée, ce qui limite drastiquement le temps de calcul. Le temps est maintenant acceptable, puisque le calcul total sur 40 millions de mots ne prend pas plus d'une heure et demie sur un PC moderne.
8 Pistes
futures
J'ai commencé à travailler sur les mots qui commencent par une majuscule en appliquant la même démarche. Mais ce travail est tout juste commencé. Dans l'état actuel, quelques dizaines de mots sont enregistrés dans le lexique, mais le résultat n'est ni représentatif ni complet.
C’est un travail qui sera effectué pour la prochaine version du lexique.
Une autre piste à creuser consistera à élargir le corpus à d’autres textes comme des courriers électroniques ou des documents administratifs.
9
Conclusion
Le lexique est directement applicable. Il suffit de l'utiliser lors de la rencontre d'un mot inconnu pour rattraper les fautes de la source d'information.
Le lexique a été testé sur un corpus différent de celui qui a permis l'apprentissage, deux stratégies ont été tentées: l'une consiste à utiliser le lexique tel quel et l'autre consiste à tenter d'appliquer dynamiquement les règles de transformation et en cas d'échec d'utiliser le fichier « CasParCas ». Ces deux stratégies donnent quasiment le même résultat. Quelques erreurs supplémentaires (sans aucune production de bruit) sont corrigées par la deuxième stratégie. Nous la préférons donc à la première.
Le lexique a été utilisé lors de l'indexation massive de documents dans le but de limiter le silence dû aux fautes d'orthographe. En effet, dans une telle chaîne de traitement, les mots mal orthographiés, s’ils ne sont pas rattrapés, sont en quelque sorte « oubliés » puisqu'ils ne figurent pas au bon endroit dans l'index. De ce fait, le document qui le comprend n'est jamais retrouvé, sauf si le même mot bien orthographié figure dans le même document.
Pour finir, et contrairement à d'autres démarches, je voudrais insister sur le fait que les fautes décrites dans le lexique ne sont pas des fautes ni inventées, ni potentielles : ce sont des fautes réellement commises par des francophones.
Les premières utilisations du rattrapeur donnent de bons résultats.
La méthode de construction du lexique est un peu pénible et même si de multiples opérations ont été automatisées, il reste que de nombreuses heures devant l'écran ont été nécessaires.
C'est un peu toujours comme cela quand on construit un dictionnaire : même si les ordinateurs sont rapides et bon marché, et que nos outils et méthodes sont plus efficaces qu'au Moyen-Âge, l'entreprise reste un travail de bénédictin.
Bibliographie
:
Frei Henri 1929 (réédité en 1971)
La grammaire des fautes.
Slatkine Reprints Genève 1971