Nuxeo/Blogs

Nuxeo Developers Blog/News from the Open Source ECM trenches

Transcription des règles d’erreurs, de An Gramadóir vers LanguageTool

without comments

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.)

June 18th, 2007 at 10:06 am

Posted in Uncategorized