Tests de règles existantes


Nous avons rapidement testé LanguageTool avec quelques règles en français,
écrites par Myriam
Lechelt pour Gramadoir, et adaptées ensuite au formalisme de
LanguageTool.

Conséquences de l'absence de désambiguïsation


Nous avons alors pu remarquer beaucoup de problèmes dans la détection des
erreurs, dus principalement à l'absence de désambiguïsation après le
tagging. En effet, les mots ambigus ont plusieurs tags et lors de
l'application des règles d'erreurs, il suffit qu'un des tags corresponde à
une règle pour que celle-ci soit appliquée, même si un ou plusieurs autres
tags du mot ne correspondent pas à cette règle.

On peut constater cela avec l'exemple suivant, portant sur la confusion
entre sa et ça.

Nous disposons des deux règles suivantes :


  1. si sa est suivi d'un verbe puis d'un mot quelconque, alors il y
    a une erreur et il faut remplacer sa par ça.

  2. si ça est suivi d'un nom puis d'un mot quelconque, alors il y a
    une erreur et il faut remplacer ça par sa.


Prenons maintenant les deux phrases :


  • (a) Sa voiture est en panne.

  • (b)*Ça voiture est en panne.


Le mot voiture est ambigu. Il peut s'agir du nom voiture ou
du verbe voiturer. Le mot a donc 2 étiquettes : "nom" et
"verbe".

Lors de la vérification des phrases, tous les tags d'un mot sont pris en
compte pour l'application des règles.

La règle 1. s'applique donc (à tort) à la phrase (a) car elle trouve un tag
"verbe" pour voiture, précédé de sa. Il est alors suggéré de
remplacer sa par ça. Il aurait fallu ici que le tag "verbe"
soit ignoré et que seul le tag "nom" soit pris en compte puisque c'est celui
qui correspond au mot voiture dans cet exemple.

La règle 2. s'applique à la phrase (b) car elle trouve un tag "nom" pour
voiture, précédé de ça. Il est alors suggéré de remplacer
ça par sa. Ici, la détection est correcte. Il y a bien une
faute.

Les énoncés (a) et (b) sont donc tous deux considérés comme faux, chacun
donnant l'autre comme correction, ce qui est contradictoire.

Tentative de contournement du problème...


Nous avons tenté de réduire le bruit provoqué par la règle 1. en la
modifiant : ça suivi de 2 verbes au lieu d'un seul. Cela permet de
pallier en partie le problème de l'ambiguïté de voiture, mais nous
réalisons alors qu'il est nécessaire d'avoir des règles plus complexes et
précises pour contourner l'absence de désambiguïsation et le fait que
beaucoup de mots ont plus d'une étiquette.

D'autres exemples sur ce problème


Les autres règles aussi entraînent beaucoup de mauvaises détections
d'erreurs, dues à l'ambiguïté verbe-nom le plus souvent.

Par exemple :

La visite a duré
longtemps
est
corrigé : La visite à duré longtemps
car le tag "verbe" de visite
correspond à la règle.
Il se trompe toujours de
numéro
est corrigé : Il ce trompe toujours de
numéro
car le tag "nom" de trompe correspond à
la règle.
Tu peux utiliser ce
téléphone
est corrigé :
Tu peux utiliser se téléphone
à cause du tag "verbe" de téléphone qui correspond
à la règle.
Ces lignes ne sont pas
droites
est corrigé :
Ces lignes ne son pas droites
car pas a le tag "nom" qui entraine l'application
de la règle.
Il a publié son livre

est corrigé : Il a
publié sont
livre

car le tag "verbe" de
livre correspond à la règle.

Création de nouvelles règles


Nous avons aussi tenté de créer des règles nouvelles pour nous confronter
aux problèmes d'écriture de règles d'erreur.

La négation


Nous avons écrit une règle pour la détection d'erreur sur la négation, qui
permet de détecter l'omission de la particule ne dans une phrase négative
avec pas ou jamais.

Si dans une phrase un verbe n'est pas précédé de ne ou n',
mais qu'il est suivi de pas ou jamais (eux-mêmes non précédés
d'un déterminant pour éviter la confusion avec le nom pas), avec une
suite quelconque de mots entre le verbe et pas, alors une faute est
détectée.

Même si la règle fonctionne relativement bien, nous nous rendons compte là
encore qu'il est nécessaire de contourner l'absence de désambiguïsation par
des règles plus compliquées.

L'accord déterminant-nom


Nous avons voulu faire une règle pour l'accord entre un déterminant et un
nom qui détecterait une erreur dans le cas où un nom masculin singulier ne
serait pas précédé d'un déterminant autre que masculin singulier. Mais nous
avons eu un souci avec l'expression régulière qui n'a jamais voulu
fonctionner...

Cependant, cela nous a quand même permis de prendre conscience du très grand
nombre de règles qu'il est nécessaire de rédiger pour couvrir le plus de cas
possibles. Dans son mémoire,
Myriam avait calculé le nombre de combinaisons possibles déterminant,
adjectif, nom
et déterminant, nom, adjectif. Étant donné que
chacune de ces catégories peut avoir trois genres (masculin, féminin,
épicène) et trois nombres (singulier, pluriel, invariable), on obtient 1458
combinaisons possibles, donc presque autant de règles à rédiger (il faut
enlever les combinaisons correctes puisque les règles décrivent des
erreurs).

Il y a bien sûr moyen de créer un programme qui génère ces règles
automatiquement, mais c'est un nombre tout de même très important et qui
correspond au traitement d'une petite partie de la syntaxe seulement. On
voit donc que la liste de règles à créer peut vite devenir considérable,
sans jamais pouvoir être exhaustive, car il n'est pas possible de prévoir
toutes les erreurs qui peuvent être commises dans un texte.

Conclusion


En conclusion de ces petits tests, nous pouvons dire que le principal
problème que nous avons rencontré est celui de l'absence de
désambiguïsation, que nous allons essayer de combler. Nous allons par
ailleurs modifier la méthode actuelle de détection des fautes, qui nécessite
trop de règles, afin qu'elle soit plus adaptée à la grammaire
française.

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