Approche lexicale
Dictionnaire
Pour chaque mot du document, le dictionnaire est parcouru pour vérifier si ce mot y figure. Dans le cas où il n'y figure pas, le mot est détecté comme un non-mot et sera sujet à une correction. Le parcours du dictionnaire pose souvent un problème de performance à cause de la taille de ce dernier (plusieurs dizaines de milliers de mots). Différentes techniques permettent de gagner en efficacité.
Par exemple, une table de hachage consiste à indexer les mots du dictionnaire par un code permettant d'y accéder directement, évitant ainsi le parcours complet du dictionnaire. Lorsqu'un mot est testé, son code est calculé afin de pouvoir le comparer au mot indexé par ce code, s'il existe. L'inconvénient de cette méthode est que la fonction de hachage utilisée pour calculer les codes peut entraîner des collisions, c'est-à-dire que deux mots différents peuvent avoir le même code (la fonction de hachage n'est pas injective).
Il est également possible de diviser (partitionner) le dictionnaire sur différents niveaux en fonction de la fréquence d'apparition des mots dans le document, ou bien dans la langue en général : si un mot n'est pas trouvé au premier niveau, on le cherche au second, et ainsi de suite.
Enfin, les différentes déclinaisons morphologiques d'un mot (pluriel, formes conjuguées...) peuvent être "factorisées" sous la forme d'un radical (exemple : "décis" pour "décisif", "décision"...) pour réduire la taille du dictionnaire. Les déclinaisons doivent ensuite pouvoir être reconstruites à partir du radical.
Distance d'édition
La recherche de corrections potentielles (candidats) d'un non-mot repose sur le calcul de sa distance minimale d'édition avec les mots du dictionnaire. Nous avons abordé ce sujet dans la section concernant le différentiel, notamment à travers l'algorithme de Levenshtein, qui permet de calculer la distance minimale de deux chaînes en termes d'insertion, de suppression et de substitution de caractères. Dans une étude sur les types de fautes d'orthographe, Damerau (1964[1]) observe que ces trois opérations, auxquelles il ajoute également la transposition (inversion de deux caractères adjacents dans un mot, par exemple : "attendre" et "attender"), sont à l'origine de 80% des fautes humaines. La distance de Damerau-Levenshtein, qui peut être calculée par un algorithme similaire à celui de Levenshtein, incluant en plus le calcul des transpositions, est ainsi une métrique de base pour la plupart des techniques de correction (Kukich, 1992[2]). Les candidats proposés à l'utilisateur sont les mots dont la distance avec le non-mot est inférieure à un certain seuil, classés dans l'ordre croissant des distances. Dans certaines applications, il existe aussi un mode d'auto-correction, où c'est généralement le candidat ayant la plus faible distance qui est sélectionné.
Faux positifs et faux négatifs
Un faux positif est une erreur humaine non-détectée par le correcteur (real-word errors). Inversement, un faux négatif est un mot détecté par le correcteur comme fautif alors qu'il ne l'est pas du point de vue de l'humain. Trop étroit, un dictionnaire entraîne des faux négatifs alors que trop large, il entraîne des faux positifs (Kukich, 1992[2]). Les correcteurs modernes utilisant des dictionnaires de grande taille (à titre d'exemple, le dictionnaire de ProLexis contient plus de 700 000 flexions de mots), le problème porte principalement sur les faux positifs. Ces erreurs constituent 25 à 50% des erreurs totales (ibid.[2]). En voici quelques exemples typiques :
Erreurs grammaticales : mauvais accord d'un verbe, utilisation d'un infinitif au lieu du participe passé pour un verbe du premier groupe... en effet, toutes les formes (conjuguées, infinitive...) sont présentes dans le dictionnaire, telles quelles ou bien sous la forme d'un radical pouvant être décliné.
Erreurs de sens :
Homonymes ("chat" à la place de "chah" dans "le chah d'Iran")
Typographie/coquilles ("poison" et "poisson", "trier" et "tirer"...)
Mauvaise délimitation entre deux mots ("puis que" et "puisque")
Erreurs de syntaxe :
Répétition d'un mot par inadvertance (doublon), comme dans "erreurs de de syntaxe".
Inversement, un mot peut être oublié (bourdon), comme dans "erreurs syntaxe", bien qu'il ne s'agisse pas là d'une erreur due à un faux négatif.
Les erreurs de sens peuvent dans certains cas être considérées comme des erreurs de syntaxe, typiquement lorsque qu'il ne s'agit pas de la même fonction syntaxique ("avions" en tant que verbe conjugué ou nom au pluriel) dans un cas et dans l'autre.
Hirst et Budanitsky (2005[3]) soulignent que l'auto-correction peut elle-même introduire des faux positifs : typiquement, un mot mal orthographié est remplacé par sa correction la plus probable du point de vue de la distance d'édition (exemple en anglais : "eyt" est remplacé par "yet"), mais ne correspondant pas à ce que voulait dire l'auteur ("eye").