Avant de décrire la structure de LanguageTool, nous pouvons commencer par
expliquer le fonctionnement des correcteurs grammaticaux de manière
générale.



Le texte à vérifier est d'abord découpé en phrases, puis les phrases en
mots. C'est la tokenisation.



Vient ensuite la phase d'étiquetage morpho-syntaxique
(ou tagging). Chaque mot se voit attribuer une ou plusieurs étiquettes
(tags) contenant des informations telles que la catégorie morpho-syntaxique
(verbe, nom, adjectif, pronom, etc), ainsi que le genre et le nombre (pour
les noms, les adjectifs...), le temps, le mode, la personne, etc... pour les
verbes.



Lors du tagging, les très nombreux mots ambigus reçoivent plusieurs tags.
Une désambiguïsation est
nécessaire pour limiter le nombre d'étiquettes de chaque mot et améliorer
par la suite la détection de fautes de grammaire.

Certains correcteurs utilisent une méthode probabiliste pour désambiguïser
les mots. Ils nécessitent un corpus d'apprentissage sans erreurs et étiqueté
avec les informations morpho-syntaxiques. Ils calculent alors la probabilité
que tel mot ait tel tag plutôt qu'un autre, ou encore la probabilité qu'un
mot ait un certain tag en fonction des tags des mots qui l'entourent. Lors
du tagging, ces probabilités sont appliquées aux mots du texte à analyser et
chaque mot reçoit alors le tag qui correspond à la plus forte
probabilité.

Cette méthode est contraignante dans la mesure où la détection des fautes
est très dépendante du corpus ayant servi à l'apprentissage. Par ailleurs,
le corpus étiqueté nécessaire doit être le plus grand possible. Il n'en
existe pas forcément de disponible ou de convenable, et la constitution d'un
tel corpus est très coûteuse.

Une autre méthode consiste à utiliser des règles manuelles de
désambiguïsation sous forme d'expressions régulières, basées sur le contexte
immédiat. Cette méthode est plus contrôlable que la méthode statistique,
mais elle nécessite des règles descriptives qui doivent être suffisamment
nombreuses pour couvrir le plus de cas possibles, des règles qui sont
rédigées manuellement et donc longues à produire, et qui ne peuvent par
ailleurs pas être exhaustives.

Certains correcteurs combinent les 2 méthodes, d'autres ne font pas de
désambiguïsation.



Une fois l'étiquetage terminé, commence alors l'étape de détection des erreurs. Il existe là
encore deux manières de procéder.

Certains correcteurs utilisent des règles prescriptives et d'autres des
règles d'erreurs. Les premiers comparent donc le texte avec une liste de
formes correctes. Dans le cas où ils ne trouvent pas de correspondance, ils
détectent une erreur. Les seconds, au contraire, comparent le texte avec des
règles décrivant des erreurs. S'il y a correspondance, c'est qu'il y a une
faute.

Dans les deux cas, plus il y a de règles, meilleure sera la détection. Mais
il est impossible de prévoir et donc de décrire toutes les erreurs
possibles. Il y aura donc potentiellement toujours des erreurs non décrites
dans les règles, non détectables par le correcteur, et donc beaucoup de
silence.

Les règles de grammaire sont moins nombreuses mais tout de même difficiles
à rédiger de manière exhaustive, et tout ce qui ne correspond pas à une
règle étant considéré comme une faute, il peut y avoir beaucoup de bruit,
c'est-à-dire beaucoup de détections d'erreurs qui n'en sont pas.

(Post originally written by Agnes Souque on the old Nuxeo blogs.)