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.

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