Difference between revisions of "Entraînement d'un tagueur"

From Apertium
Jump to navigation Jump to search
(tagueur : orthographe plus française)
m
Line 1: Line 1:
Une fois que vos dictionnaires ont une taille raisonnable, disons peut-être 3000 lemmes au total, ça vaut la peine d'entraîner le tagueur. Pour le faire, vous aurez besoin de deux choses, un corpus de taille décente , déjà balisé ou non balisé, et un fichier <code>.tsx</code>. Les instructions de base peuvent être trouvées ci-dessous.
+
Une fois que vos dictionnaires ont une taille raisonnable, disons peut-être 3000 lemmes au total, il vaut la peine d'entraîner le tagueur. Pour cela, vous aurez besoin de deux choses, un corpus de taille décente, déjà balisé ou non, et un fichier <code>.tsx</code>. Les instructions de base peuvent être trouvées ci-dessous.
   
 
== Création d'un corpus ==
 
== Création d'un corpus ==
Line 29: Line 29:
 
</pre>
 
</pre>
   
Les 3 dernières commandes ne sont pas strictement nécessaires. Elles sélectionnent et trient seulement des lignes uniques, et ensuite les remettent en vrac (mélange des phrases) et rajoutent des numéros de ligne.
+
Les trois dernières commandes ne sont pas strictement nécessaires. Elles sélectionnent et trient seulement des lignes uniques, et ensuite les remettent en vrac (mélange des phrases) et rajoutent des numéros de ligne.
   
 
=== Autres sources ===
 
=== Autres sources ===
   
Certains corpus pré-traités peuvent être trouvés [http://corpora.informatik.uni-leipzig.de/download.html ici] et [http://wt.jrc.it/lt/Acquis/ ici].
+
Certains corpus prétraités sont disponibles [http://corpora.informatik.uni-leipzig.de/download.html ici] et [http://wt.jrc.it/lt/Acquis/ ici].
   
 
== Écriture d'un fichier TSX ==
 
== Écriture d'un fichier TSX ==
Line 39: Line 39:
 
Voir aussi : [[Le format TSX]]
 
Voir aussi : [[Le format TSX]]
   
Un fichier <code>.tsx</code> est un fichier de définition de balises, il remplace les belles balises provenant de l'analyseur morphologique en balises grossières du tagueur. La DTD est dans <code>tagger.dtd</code>, bien qu'il soit probablement plus facile de jeter un coup d'oeil à un ficher pré-écrit dans d'autres paires de langues.
+
Un fichier <code>.tsx</code> est un fichier de définition de balises ; il remplace les belles balises provenant de l'analyseur morphologique en balises grossières du tagueur. La DTD est dans <code>tagger.dtd</code>, bien qu'il soit probablement plus facile de jeter un coup d’œil à un fichier préécrit dans d'autres paires de langues.
   
Le fichier devrait être dans le répertoire de la paire de langues et être appelé (par exemple pour la paire anglais-afrikaans), <code>apertium-en-af.en.tsx</code> pour le tagueur anglais, et <code>apertium-en-af.af.tsx</code> pour le tagueur afrikaans.
+
Le fichier devrait se trouver dans le répertoire de la paire de langues et être appelé (par exemple pour la paire anglais-afrikaans), <code>apertium-en-af.en.tsx</code> pour le tagueur anglais, et <code>apertium-en-af.af.tsx</code> pour le tagueur afrikaans.
   
Le fichier TSX définit un ensemble de "balises grossières" pour les groupes de "belles balises", on fait ça parce que le module POS tagging n'a pas besoin d'autant d'informations comme celles définies dans les belles balises. Ça permet aussi à l'utilisateur d'appliquer un ensemble de restrictions ou d'enforcements (obligations). Par exemple pour interdire un adverbe relatif au début d'une phrase (<code>SENT RELADV</code>), ou pour interdire un pronom après un nom (<code>NOM PRNPERS</code>).
+
Le fichier TSX définit un ensemble de « balises grossières » pour les groupes de « belles balises », on fait ça parce que le module POS tagging n'a pas besoin d'autant d'informations comme celles définies dans les belles balises. Cela permet aussi à l'utilisateur d'appliquer un ensemble de restrictions ou d'''enforcements'' (obligations). Par exemple, pour interdire un adverbe relatif en début de phrase (<code>SENT RELADV</code>) ou pour interdire un pronom après un nom (<code>NOM PRNPERS</code>).
   
Vous pouvez aussi écrire des règles lexicales, donc par exemple en afrikaans, le mot "deur" est ambigu, l'un des sens est "par" (comme préposition) et l'autre est "porte" (comme nom). Donc on peut définir deux balises grossières, <code>DEURNOM</code> and <code>DEURPR</code>, et ensuite une règle d'interdiction pour dire "interdire 'porte' avant 'le' ou 'la'".
+
Vous pouvez aussi écrire des règles lexicales ; par exemple, en afrikaans, le mot ''deur'' est ambigu : il peut signifier "par" (préposition) ou "porte" (nom). Dans ce cas, on peut définir deux balises grossières, <code>DEURNOM</code> et <code>DEURPR</code>, puis une règle d'interdiction pour dire "interdire 'porte' avant 'le' ou 'la'".
   
 
Il vaut mieux considérer ce fichier avec soin et probablement aussi consulter un linguiste, dans la mesure où le tagueur peut faire une grosse différence dans la qualité de la traduction finale. L'exemple qui suit donne la structure de base du fichier :
 
Il vaut mieux considérer ce fichier avec soin et probablement aussi consulter un linguiste, dans la mesure où le tagueur peut faire une grosse différence dans la qualité de la traduction finale. L'exemple qui suit donne la structure de base du fichier :
Line 86: Line 86:
 
== Entraîner le tagueur ==
 
== Entraîner le tagueur ==
   
Voici une note brève sur les différentes manières d'entraîner que vous pouvez employer :
+
Voici une brève note sur les différentes manières d'entraîner que vous pouvez employer :
   
 
* Non supervisé &mdash; Elle utilise un gros corpus (des centaines de milliers de mots) ''non marqués'' et l'algorithme itératif Baum-Welch d'une manière totalement non supervisée. C'est la manière la moins efficace d'entraîner le tagueur, mais c'est aussi la plus économique en terme de temps et de ressources.
 
* Non supervisé &mdash; Elle utilise un gros corpus (des centaines de milliers de mots) ''non marqués'' et l'algorithme itératif Baum-Welch d'une manière totalement non supervisée. C'est la manière la moins efficace d'entraîner le tagueur, mais c'est aussi la plus économique en terme de temps et de ressources.

Revision as of 06:53, 19 February 2013

Une fois que vos dictionnaires ont une taille raisonnable, disons peut-être 3000 lemmes au total, il vaut la peine d'entraîner le tagueur. Pour cela, vous aurez besoin de deux choses, un corpus de taille décente, déjà balisé ou non, et un fichier .tsx. Les instructions de base peuvent être trouvées ci-dessous.

Création d'un corpus

Wikipedia

Un corpus de base peut être récupéré d'un dump Wikipedia (voir ici) comme suit :

$ bzcat afwiki-20070508-pages-articles.xml.bz2 | grep '^[A-Z]' |\
sed 's/$/\n/g
     s/\[\[.*|//g
     s/\]\]//g
     s/\[\[//g
     s/&.*;/ /g' > moncorpus.txt

Une autre option pour découper Wikipedia, qui donnera probablement un corpus de plus grande qualité, est celle qui suit. D'abord téléchargez ce script,puis :

$ bzcat enwiki-20081008-pages-articles.xml.bz2.part > enwiki.xml

Maintenant, utilisez le script ci-dessus pour obtenir enwiki.txt et ensuite

$ cat enwiki-20091001-pages-articles.txt | grep -v "''" | grep -v http | grep -v "#" | grep -v "@" |\
grep -e '................................................' | sort -fiu | sort -R | nl -s ". " > enwiki.crp.txt

Les trois dernières commandes ne sont pas strictement nécessaires. Elles sélectionnent et trient seulement des lignes uniques, et ensuite les remettent en vrac (mélange des phrases) et rajoutent des numéros de ligne.

Autres sources

Certains corpus prétraités sont disponibles ici et ici.

Écriture d'un fichier TSX

Voir aussi : Le format TSX

Un fichier .tsx est un fichier de définition de balises ; il remplace les belles balises provenant de l'analyseur morphologique en balises grossières du tagueur. La DTD est dans tagger.dtd, bien qu'il soit probablement plus facile de jeter un coup d’œil à un fichier préécrit dans d'autres paires de langues.

Le fichier devrait se trouver dans le répertoire de la paire de langues et être appelé (par exemple pour la paire anglais-afrikaans), apertium-en-af.en.tsx pour le tagueur anglais, et apertium-en-af.af.tsx pour le tagueur afrikaans.

Le fichier TSX définit un ensemble de « balises grossières » pour les groupes de « belles balises », on fait ça parce que le module POS tagging n'a pas besoin d'autant d'informations comme celles définies dans les belles balises. Cela permet aussi à l'utilisateur d'appliquer un ensemble de restrictions ou d'enforcements (obligations). Par exemple, pour interdire un adverbe relatif en début de phrase (SENT RELADV) ou pour interdire un pronom après un nom (NOM PRNPERS).

Vous pouvez aussi écrire des règles lexicales ; par exemple, en afrikaans, le mot deur est ambigu : il peut signifier "par" (préposition) ou "porte" (nom). Dans ce cas, on peut définir deux balises grossières, DEURNOM et DEURPR, puis une règle d'interdiction pour dire "interdire 'porte' avant 'le' ou 'la'".

Il vaut mieux considérer ce fichier avec soin et probablement aussi consulter un linguiste, dans la mesure où le tagueur peut faire une grosse différence dans la qualité de la traduction finale. L'exemple qui suit donne la structure de base du fichier :

<?xml version="1.0" encoding="UTF-8"?>
<tagger name="afrikaans">
  <tagset>
    <def-label name="DEURNOM" closed="true">
      <tags-item lemma="deur" tags="n.*"/>
    </def-label> 
    <def-label name="DEURPR" closed="true">
      <tags-item lemma="deur" tags="pr"/>
    </def-label>     
    <def-label name="NOM">
      <tags-item tags="n.*"/>
    </def-label> 
    <def-label name="PRNPERS" closed="true">
      <tags-item tags="prpers.*"/>
    </def-label> 
    <def-label name="DET" closed="true">
      <tags-item tags="det.*"/>
    </def-label> 
  </tagset>
  <forbid>
    <label-sequence>
      <label-item label="NOM"/>
      <label-item label="PRNPERS"/>
    </label-sequence>
    <label-sequence>
      <label-item label="DEURNOM"/>
      <label-item label="DET"/>
    </label-sequence>
  </forbid>
</tagger>

Vous aurez besoin de suffisamment de balises grossières pour couvrir toutes les belles balises de vos dictionnaires.

Entraîner le tagueur

Voici une brève note sur les différentes manières d'entraîner que vous pouvez employer :

  • Non supervisé — Elle utilise un gros corpus (des centaines de milliers de mots) non marqués et l'algorithme itératif Baum-Welch d'une manière totalement non supervisée. C'est la manière la moins efficace d'entraîner le tagueur, mais c'est aussi la plus économique en terme de temps et de ressources.
  • Supervisé — Elle utilise un corpus marqué de taille moyenne (minimum 30000 mots).
  • Utiliser apertium-tagger-trainer — Elle utilise un gros corpus non marqué dans la langue cible, un fichier .prob déjà entraîné et un traducteur existant. Elle fonctionne aussi bien que l'entraînement supervisé sans avoir besoin de marquer à la main un corpus, le coût est d'être un peu rusé pour le mettre en oeuvre.

Pour l'instant apertium-tagger-trainer fonctionne seulement avec apertium 1, donc ce n'est pas une option pour la plupart des paires.--Jacob Nordfalk 06:15, 17 septembre 2008 (UTC) (Clarification : ça fonctionne seulement avec le transfert en une étape, donc les paires Apertium 3 qui utilisent seulement un fichier .t1x peuvent toujours l'utiliser.)

Non supervisé

Article principal : Créer un tagueur en mode automatique

Supervisé

Cette section n'est pas encore écrite.

Formation d'un tagueur de langue cible

Article principal : Formation d'un tagueur de langue cible

C'est un paquet appelé apertium-tagger-training-tools qui entraîne les taggers basés à la fois sur les informations de langues source et cibles. Les fichiers de probabilité résultants sont aussi bons que ceux des entraînements supervisés pour l'emploi avec des machines de traduction, mais ils sont plus rapides à produire, et avec moins d'effort.

Voir aussi

Lectures complémentaires