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

  • 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 :
  1. les erreurs qui sont déjà détectées par les règles actuelles ("je ne doit pas être...")
  2. les erreurs pour lesquelles nous pensons pouvoir créer des règles avec le formalisme actuel de LanguageTool ("on désir...")
  3. les erreurs qui pourront être détectées avec un nouveau formalisme utilisant les chunks et l'unification ("le monde m'appartenais...")
  4. 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.

Important announcement: Join the Nuxeo team and contribute to the Nuxeo project! We have open positions in France and the UK for open source Java EE developers and sales engineers, both junior and senior.

Like this post? Share it:

Posted by Agnes Souque @ 04/27/2007 05:20 PM. - Categories: indesko, openoffice -  0 comments

Nuxeo Bloggers: Log in!
Nuxeo - Indesko - Nuxeo 5 Project
All content is copyrighted by their author.
CPSSkins is Copyright © 2003-2006 by Jean-Marc Orliaguet. | CPS is Copyright © 2002-2006 by Nuxeo SAS.