Transcription des règles d’erreurs, de An Gramadóir vers LanguageTool
Transcription des règles
Myriam a
écrit un peu plus de 500 règles d’erreurs pour An Gramadóir. Cette
semaine, nous les avons importées dans LanguageTool. Pour cela nous avons dû
les réécrire en XML. Bien sûr, nous n’avons pas fait ce travail
manuellement. Nous avons écrit un petit programme permettant de transcrire
les règles automatiquement dans le bon formalisme.
Par exemple, la règle de An Gramadóir du type :
<DS>ANYTHING</DS>
<JS>ANYTHING</JS> <NP>ANYTHING</NP>:NOMBRE
a été réécrite en :
<rule>
<pattern mark_from=”2″>
<token
postag=”D .* s” postag_regexp=”yes”/>
<token
postag=”J .* s” postag_regexp=”yes”/>
<token
postag=”N .* p” postag_regexp=”yes”/>
</pattern>
<message>Il y a une erreur
d’accord en nombre</message>
<example type=”correct”>le beau
château</example>
<example type=”correct”>les
beaux châteaux</example>
<example type=”incorrect”>le
beau châteaux</example>
</rule>
Quelques modifications
Nous avons dû par la suite retravailler un peu le fichier XML généré.
Pour la plupart des règles, nous avons personnalisé le message d’erreurs et
les exemples.
Nous avons aussi effectué plusieurs modifications sur les règles relatives
aux syntagmes verbaux. Le formalisme XML est plus souple que celui de
An Gramadóir, ce qui nous a permis de faire des simplifications et de
regrouper plusieurs règles en une seule.
Dans An Gramadóir, il faut par exemple 4 règles pour dire qu’il y a
une erreur si :
- “je” est suivi d’un verbe à la 1ère personne du pluriel
[Jj]e <VUNP>ANYTHING</VUNP>:AGGREEMENT
- “je” est suivi d’un verbe à la 3ème ou 4ème personne
[Jj]e <VUN>ANYTHING</VUN>:AGGREEMENT
- “je” est suivi d’un mot quelconque, puis d’un verbe à la 1ère personne
du pluriel
[Jj]e ANYTHING
<VUNP>ANYTHING</VUNP>:AGGREEMENT
- “je” est suivi d’un mot quelconque, puis d’un verbe à la 3ème ou 4ème
personne
[Jj]e ANYTHING
<VUN>ANYTHING</VUN>:AGGREEMENT
Dans LanguageTool, nous avons pu tout regrouper en une seule règle
:
<rule name=”je + (x) + V”>
<pattern>
<token
postag=”R pers suj 1 s” postag_regexp=”yes” skip=”1″/>
<token
postag=”V .* 1 p|V .* 2 .*|V .* 3 .*” postag_regexp=”yes”/>
</pattern>
<message>Le pronom personnel
n’est pas accordé avec le verbe</message>
<example type=”correct”>je
travaille</example>
<example type=”incorrect”>je
travaillons</example>
</rule>
Dans An Gramadóir, nous pouvons aussi trouver une règle différente
pour “il”, “elle”, “on”, “elles” et “ils“. Il semblait plus
logique de généraliser ces règles pour les regrouper. Ainsi, les 5 pronoms
sont traités dans seulement 2 règles qui concernent les pronoms personnels
sujets, à la 3ème du singulier pour “il”, “elle” et “on“, ou
bien du pluriel pour “ils” et “elles“. Par ailleurs, nous
avons rajouté les cas de “elle” et “elles” dans certaines
règles car ils avaient été oubliés.
Quelques tests
Après ces modifications, nous avons effectué quelques tests. Nous avons
alors remarqué plusieurs problèmes.
- Les règles sur les syntagmes nominaux génèrent des alarmes redondantes.
Si nous écrivons par exemple : “*le couverture bleue déchirée”,
l’erreur d’accord en genre entre le déterminant et le reste du syntagme va
être signalée 3 fois par 3 règles différentes : -
- une première règle va s’appliquer à “le couverture” => Det
+ N - une seconde règle va s’appliquer à “le couverture bleue” =>
Det + N + Adj - une dernière règle va s’appliquer à “le couverture bleue
déchirée” => Det + N + Adj + Adj
- une première règle va s’appliquer à “le couverture” => Det
- Les mots épicènes et invariables ne sont pas pris en compte dans les
règles. Dans une phrase comme “*Il va épouser un célèbre actrice“,
aucune faute ne sera détectée car “célèbre” est épicène et aucune
règle n’est prévue avec ce genre de mots.
- L’absence de désambiguïsation génère énormément de fausses alarmes. Par
exemple, “je vois” et “je mange” sont tous deux signalés
comme faux. Les deux verbes sont bien étiquetés “1ère personne du
singulier”, mais ils possèdent aussi d’autres tags, dont respectivement
celui de “2ème personne” et “3ème personne”, ce qui est incompatible avec
un pronom personnel à la 1ère personne.
Quelques ajouts possibles
Nous avons étudié un corpus d’erreurs à notre disposition. Nous avons
d’abord éliminé les phrases contenant des fautes d’orthographe et non de
grammaire. Nous avons ensuite fait un petit classement des phrases
restantes, en 4 catégories :
- les erreurs qui sont déjà détectées par les règles actuelles (“je ne
doit pas être…”) - les erreurs pour lesquelles nous pensons pouvoir créer des règles avec
le formalisme actuel de LanguageTool (“on désir…”) - les erreurs qui pourront être détectées avec un nouveau formalisme
utilisant les chunks et l’unification (“le monde
m’appartenais…“) - les erreurs qui nous semblent très difficiles, voire impossibles à
repérer ( “je serais” ≠ “je serai“)
Pour le moment, nous allons nous concentrer sur la seconde catégorie. Nous
avons vu que nous pourrions créer des règles sur la négation, rajouter des
règles sur l’accord des participes passés après le verbe être (par exemple :
sont+ppa => le ppa doit être au pluriel), modifier les règles
actuelles sur les accords des verbes pour qu’elles tiennent compte de
l’insertion possible d’un ou plusieurs mots entre le sujet et le verbe, le
verbe et le participe passé, etc…
Un désambiguïseur pour bientôt ?
Marcin Milkowski a proposé de travailler sur l’implantation du
désambiguïseur qui nous posait problème. Si tout va bien, nous devrions en
disposer très prochainement. Nous pourrons alors faire en sorte d’avoir un
minimum de désambiguïsation pour pouvoir travailler sur les règles d’erreurs
dans de meilleures conditions.
(Post originally written by Agnes Souque on the old Nuxeo blogs.)