Nuxeo

Nuxeo Developers Blog

News from the Open Source ECM trenches

Archive for June, 2007

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 … Read more

Written by nuxeo

June 18th, 2007 at 10:06 am

Posted in Uncategorized

Réflexions sur le “désambiguïseur”

without comments

J’ai commencé à regarder d’un peu plus près le code source de LanguageTool,
le but étant de mieux comprendre le fonctionnement du programme et de voir
comment implanter un désambiguïseur. L’opération s’est révélée un peu
laborieuse étant donné que je suis débutante en Java et qu’il m’a fallu
apprivoiser un peu ce langage…
J’ai essayé de voir comment utiliser l’interface “disambiguator”, récemment
ajoutée à LanguageTool (par Jozef Ličko). Elle permet l’implantation
éventuelle d’un désambiguïseur pour les différentes langues supportées par
le programme. Il nous reste donc à développer ce désambiguïseur pour le
français.

Pour ce qui est de la désambiguïsation en elle-même, nous allons reprendre
les règles écrites par Myriam pour
Gramadoir. Nous avons plusieurs possibilités pour les formaliser. Nous
pourrions les écrire simplement au format texte, ou bien encore conserver
leur formalisme actuel. Nous avons plutôt décidé de les réécrire dans un
fichier au format XML. Ce formalisme a … Read more

Written by nuxeo

June 18th, 2007 at 10:05 am

Posted in Uncategorized

Désambiguïsation

without comments

Avant de nous lancer dans la conception d’un outil de désambiguïsation,
prenons le temps de faire un petit point sur ce sujet. Nous verrons d’abord
quelles sont les différentes méthodes existantes pour désambiguïser les mots
polycatégoriels (appartenant à plusieurs catégories morpho-syntaxiques).
Nous parlerons ensuite de la méthode choisie par Myriam,
ainsi que des problèmes qu’elle a rencontrés, et pour finir nous ferons des
suggestions pour résoudre certaines difficultés et améliorer la
désambiguïsation.

Méthodes de désambiguïsation

Les désambiguïseurs sont de deux types. Certains sont probabilistes et
d’autres à base de règles.
Ils ont tous deux des avantages et des
inconvénients.

1. Méthode statistique

Des probabilités sont calculées à partir d’un apprentissage sur un corpus
étiqueté
. Selon le système, les probabilités calculées sont celles de la
contiguïté de 3 tags (ex.: GRAC), de 2 tags (ex.: première version de
LanguageTool), ou celles que tel mot prenne tel tag.

Cette méthode … Read more

Written by nuxeo

June 18th, 2007 at 10:03 am

Posted in Uncategorized

Suite du travail sur LanguageTool

without comments

Ces derniers jours ont été consacrés en partie à l’étude des possibilités
d’intégration d’un désambiguïseur dans LanguageTool.

Nous avions parlé, dans le précédent billet, de réécrire les règles de
désambiguïsation de An Gramadóir dans le formalisme XML. Il y a bien
sûr beaucoup de manières différentes de représenter les règles en XML.

Voici deux propositions qui reprennent des règles écrites par Myriam
Lechelt
. Les deux premières règles sont très proches de la
représentation des règles d’erreurs de LanguageTool. Dans les deux
suivantes, nous avons ajouté un attribut “ambigu” à l’élément token,
pour spécifier quel est le token ambigu, et une balise “disambig” qui
contient le tag à attribuer au token ambigu.

<rulegroup name=”Pronoms personnels objets” id=”Pro_Pers_Obj”>
    <rule name=”nous”>
        <pattern>
            <token
postag=”R Pers”/>
            <token
ambig=”yes”>nous</token>
        </pattern>
        <disambig token=”nous” postag=”R
pers obj 1 p”/>
    </rule>
</rulegroup>
<rulegroup … Read more

Written by nuxeo

June 18th, 2007 at 10:01 am

Posted in Uncategorized

Chunks et unification

without comments

Nous avons pu noter, à travers quelques tests, que les points faibles de
LanguageTool, pour la correction grammaticale du français en particulier,
sont l’absence de désambiguïsation et les règles de détection des
fautes.

Une partie de notre travail va donc consister à réaliser un outil de
désambiguïsation qui nous permettra de réduire le nombre de tags des mots
ambigus (sans toutefois le limiter nécessairement à un tag unique). Nous
pourrons nous aider pour cela des règles de désambiguïsation écrites par Myriam
Lechelt
pour Gramadoir.

Pour ce qui est des règles d’erreurs, nous allons utiliser l’approche
proposée par
Myriam
, à savoir la segmentation en chunks et l’unification de
structures de traits. Voici une petite explication sur ce qui se cache
derrière ces deux notions.

Qu’est-ce qu’un chunk
?

Un chunk, ou syntagme, est “une unité constituée d’une série de mots tous
contigus les uns aux autres et regroupés autour d’une
Read more

Written by nuxeo

June 18th, 2007 at 9:51 am

Posted in Uncategorized

Intérêt des chunks et de l’unification pour la correction grammaticale

without comments

L’intérêt le plus évident concerne les accords entre les divers éléments de
la phrase. Il peut s’agir aussi bien d’accords dans un groupe nominal que
d’accords entre le sujet et le verbe par exemple.

Correction “intra-chunk”

Les mots fonctionnels contenus dans un chunk sont dépendants de la tête du
chunk et contraints de s’accorder avec elle. En attribuant des traits
morpho-syntaxiques à tous les éléments d’un syntagme et en utilisant une
méthode d’unification des traits, il est assez facile, au niveau de la
correction grammaticale, de détecter une erreur au sein d’un syntagme.
Tous les éléments d’un chunk doivent avoir leurs traits qui s’unifient
entre eux. Si ça n’est pas le cas, c’est qu’il y a une erreur.

Autrement dit, dans un chunk nominal qui serait du type “DET ADJ N” (ex:
les grandes vacances), le déterminant “DET” et l’adjectif “ADJ”
doivent tous deux s’accorder avec le nom “N” … Read more

Written by nuxeo

June 18th, 2007 at 9:35 am

Posted in Uncategorized

Test rapide de LanguageTool (sur le français)

without comments

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
  3. Read more

Written by nuxeo

June 18th, 2007 at 9:33 am

Posted in Uncategorized

Fonctionnement d’un correcteur grammatical

without comments

Avant de décrire la structure de LanguageTool, nous pouvons commencer par
expliquer le fonctionnement des correcteurs grammaticaux de manière
générale.

Le texte à vérifier est d’abord découpé en phrases, puis les phrases en
mots. C’est la tokenisation.

Vient ensuite la phase d’étiquetage morpho-syntaxique
(ou tagging). Chaque mot se voit attribuer une ou plusieurs étiquettes
(tags) contenant des informations telles que la catégorie morpho-syntaxique
(verbe, nom, adjectif, pronom, etc), ainsi que le genre et le nombre (pour
les noms, les adjectifs…), le temps, le mode, la personne, etc… pour les
verbes.

Lors du tagging, les très nombreux mots ambigus reçoivent plusieurs tags.
Une désambiguïsation est
nécessaire pour limiter le nombre d’étiquettes de chaque mot et améliorer
par la suite la détection de fautes de grammaire.
Certains correcteurs utilisent une méthode probabiliste pour désambiguïser
les mots. Ils nécessitent un corpus d’apprentissage sans erreurs et étiqueté
avec les informations morpho-syntaxiques. Ils calculent … Read more

Written by nuxeo

June 18th, 2007 at 9:29 am

Posted in Uncategorized

©2010-2012      

Built on a Wordpress using a customization of the Journalist theme.