Difference between revisions of "Comment contribuer à une paire de langues existante"

From Apertium
Jump to navigation Jump to search
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
  +
[[Contributing to an existing pair|In English]]
  +
 
{{TOCD}}
 
{{TOCD}}
   
  +
Comment ajouter des données linguistiques à une paire des langues existante dans Apertium.
Comment ajouter des données linguistiques à une paire des langues existante à Apertium. Apertium a des données pour beaucoup de paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structural qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguation du texte de la langue de départ.
 
   
  +
Apertium possède des données pour de nombreuses paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structurel qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguïsation du texte de la langue de départ.
Toutes ces données linguistiques sont comprises dans un seul répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. À continuation, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.
 
   
  +
Toutes ces données linguistiques sont stockées dans un même répertoire. Par exemple, <code>apertium-es-ca</code> pour la paire espagnol-catalan. Pour continuer, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.
   
==Exemple d'édition des fichiers==
+
== Exemple d'édition des fichiers ==
   
===Apertium 1===
+
=== Apertium 1 ===
   
  +
Pour la paire espagnol-catalan (apertium-es-ca) :
   
  +
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11 800 entrées (depuis le 17 novembre 2005)
Pour la paire espagnol-catalan (apertium-es-ca):
 
  +
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11 800 entrées.
 
* apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11,800 entrées (depuis le 17 novembre 2005)
+
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12 800 entrées (correspondances espagnol-catalan).
* apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11,800 entrées.
+
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structurel pour la traduction de l'espagnol au catalan.
* apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12,800 entrées (correspondences espagnol-catalan).
+
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structurel pour la traduction du catalan à l'espagnol.
* apertium-es-ca.trules-es-ca.xml : Règles de transfert structural pour la traduction de l'espagnol au catalan.
 
* apertium-es-ca.trules-ca-es.xml : Règles de transfert structural pour la traduction du catalan à l'espagnol.
 
 
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol
 
* apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol
 
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan
 
* apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan
Line 27: Line 29:
 
== Comment ajouter des mots dans les dictionnaires ==
 
== Comment ajouter des mots dans les dictionnaires ==
   
Au moment de développer ou d'adapter Apertium, l'opération qui sera réalisée plus probablement sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.
+
Au moment de développer ou d'adapter Apertium, l'opération qui sera le plus probablement réalisée sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.
   
IMPORTANT: À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.
+
IMPORTANT : À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.
   
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter:
+
Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter :
   
  +
# une entrée dans le dictionnaire monolingue espagnol : pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.
  +
# une entrée dans le dictionnaire bilingue : pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.
  +
# une entrée dans le dictionnaire monolingue catalan : pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.
   
  +
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur spécial XML, les trois fichiers des dictionnaires précités : apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.
# une entrée dans le dictionnaire monolingue espagnol: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.
 
# une entrée dans le dictionnaire bilingue: pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.
 
# une entrée dans le dictionnaire monolingue catalan: pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.
 
 
Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur XML spécialisé les trois fichiers des dictionnaires précités: apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.
 
   
 
== Dictionnaire monolingue (Espagnol) ==
 
== Dictionnaire monolingue (Espagnol) ==
   
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données: les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).
+
Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données : les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la &lt;section&gt; « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir).
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito »:
+
Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito » :
   
 
<e lm="bonito">
 
<e lm="bonito">
Line 49: Line 50:
 
<par n="absolut/o__adj"/>
 
<par n="absolut/o__adj"/>
 
</e>
 
</e>
  +
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique: les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique: adj m sg, adj f sg, adj m pl and adj f pl respectivement.
 
  +
Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre <i> et </i> contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » s'infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique : les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique : adj m sg, adj f sg, adj m pl and adj f pl respectivement.
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto »? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte:
 
  +
  +
Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto » ? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas ? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte :
   
 
<e lm="cósmico">
 
<e lm="cósmico">
Line 57: Line 60:
 
</e>
 
</e>
   
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié: soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait:
+
Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié : soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait :
   
 
<pre>
 
<pre>
Line 70: Line 73:
 
== Dictionnaire monolingue (Catalan) ==
 
== Dictionnaire monolingue (Catalan) ==
   
  +
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait :
 
Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait:
 
   
 
<pre>
 
<pre>
Line 79: Line 81:
 
</e>
 
</e>
 
</pre>
 
</pre>
 
   
 
== Dictionnaire monolingue (Galicien) ==
 
== Dictionnaire monolingue (Galicien) ==
   
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur XML spécialisé les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait:
+
Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur spécial XML, les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait :
   
 
<pre>
 
<pre>
Line 96: Line 97:
 
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.
 
La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.
   
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position: dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il a fallu observer les dictionnaires en entière pour que la traduction fonctionne.
+
Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position : dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il faut le respecter pour la totalité des dictionnaires pour que la traduction fonctionne.
  +
  +
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est :
   
En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est:
 
 
<pre>
 
<pre>
 
<e>
 
<e>
Line 108: Line 110:
 
</pre>
 
</pre>
   
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions: de l'espagnol au catalan et du catalan à l'espagnol.
+
Cette entrée traduira toutes les formes infléchies, c'est-à-dire, <i>adj m sg</i>, <i>adj f sg</i>, <i>adj m pl</i> and <i>adj f pl</i>. Cela fonctionne pour la traduction dans les deux directions : de l'espagnol au catalan et du catalan à l'espagnol.
   
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol:
+
Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents </i>genoma/xenoma</i> dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol :
   
 
<pre>
 
<pre>
Line 121: Line 123:
 
</pre>
 
</pre>
   
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes)? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre qu'ils sont précisés dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être:
+
Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes) ? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre que celui précisé dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être :
   
 
<pre>
 
<pre>
Line 132: Line 134:
 
</pre>
 
</pre>
   
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structural, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).
+
Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structurel, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).
   
 
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.
 
Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.
   
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient:
+
Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient :
   
 
<pre>
 
<pre>
Line 161: Line 163:
 
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.
 
« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.
   
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci:
+
Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (<i>un rascacielos, dos rascacielos</i>). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (<i>un gratacel, dos gratacels</i>). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci :
   
 
<pre>
 
<pre>
Line 185: Line 187:
   
 
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.
 
Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.
 
   
 
== Comment ajouter des restrictions directionnelles ==
 
== Comment ajouter des restrictions directionnelles ==
   
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguation du sens du mot n'est pas réalisée. [Note: Le système ne réalise que la désambiguation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.
+
Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguïsation du sens du mot n'est pas réalisée. [Note : Le système ne réalise que la désambiguïsation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguïsation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.
   
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens: « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multimots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits
+
Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens : « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multi-mots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient:
+
comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient :
   
 
<pre>
 
<pre>
Line 210: Line 211:
 
</pre>
 
</pre>
   
Cela veut dire que les directions de traduction seront:
+
Cela veut dire que les directions de traduction seront :
 
 
 
muñeca --> canell
 
muñeca --> canell
Line 218: Line 219:
 
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))
 
(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))
   
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait:
+
Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait :
   
 
<pre>
 
<pre>
Line 235: Line 236:
 
</pre>
 
</pre>
   
Par conséquent, pour ces lemmes les directions de traduction seront:
+
Par conséquent, pour ces lemmes les directions de traduction seront :
   
 
palabra --> paraula
 
palabra --> paraula
Line 241: Line 242:
 
palabra <-- mot
 
palabra <-- mot
   
Quelqu'un doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, quelqu'un doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but: pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».
+
On doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, on doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but : pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».
   
  +
Le cas de cantaran ou cantasen doit avoir déjà tenu compte des paradigmes d'inflection et il est peu probable que ça soit un problème pour la plupart des gens étendant un dictionnaire. Dans d'autres cas il peut être nécessaire d'introduire une restriction dans les entrées de mots des dictionnaires monolingues.
   
== Comment ajouter des multimots ==
+
== Comment ajouter des multi-mots ==
   
 
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».
 
Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ».
Ces « unités multimots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons en catalan: « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multimots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans certaines situations.
+
Ces « unités multi-mots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons en catalan : « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multi-mots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans certaines situations.
 
Les unités multimots peuvent être catégorisées comme: des multimots avec une inflexion interne et des multimots sans inflexion interne.
 
   
  +
Les unités multi-mots peuvent être catégorisées comme : des multi-mots avec une inflexion interne et des multi-mots sans inflexion interne.
Les multimots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multimot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont:
 
   
  +
Les multi-mots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément <b/> (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multi-mot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont :
   
* Dictionnaire monolingue espagnol:
+
* Dictionnaire monolingue espagnol :
   
 
<pre>
 
<pre>
Line 263: Line 264:
 
</pre>
 
</pre>
   
* Dictionnaire monolingue catalan:
+
* Dictionnaire monolingue catalan :
   
 
<pre>
 
<pre>
Line 272: Line 273:
 
</pre>
 
</pre>
   
* Dictionnaire bilingue espagnol-catalan:
+
* Dictionnaire bilingue espagnol-catalan :
   
 
<pre>
 
<pre>
Line 283: Line 284:
 
</pre>
 
</pre>
   
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multimot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont:
+
Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multi-mot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont :
   
* Dictionnaire monolingue espagnol:
+
* Dictionnaire monolingue espagnol :
   
 
<pre>
 
<pre>
Line 294: Line 295:
 
</pre>
 
</pre>
   
* Dictionnaire monolingue galicien:
+
* Dictionnaire monolingue galicien :
   
 
<pre>
 
<pre>
Line 303: Line 304:
 
</pre>
 
</pre>
   
* Dictionnaire bilingue espagnol-galicien:
+
* Dictionnaire bilingue espagnol-galicien :
   
<pre>
+
<pre>
 
<e>
 
<e>
 
<p>
 
<p>
Line 314: Line 315:
 
</pre>
 
</pre>
   
Les multimots avec une inflexion interne sont constitués d'un mot qui peut infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchit. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multimot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar »:
+
Les multi-mots avec une inflexion interne sont constitués d'un mot qui peut s'infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchi. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément <b/>. Regardez l'exemple suivant pour le multi-mot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar » :
   
* Dictionnaire monolingue espagnol:
+
* Dictionnaire monolingue espagnol :
   
 
<pre>
 
<pre>
Line 329: Line 330:
 
</pre>
 
</pre>
   
* Dictionnaire monolingue catalan:
+
* Dictionnaire monolingue catalan :
   
 
<pre>
 
<pre>
Line 342: Line 343:
 
</pre>
 
</pre>
   
* Dictionnaire bilingue espagnol-catalan:
+
* Dictionnaire bilingue espagnol-catalan :
   
 
<pre>
 
<pre>
Line 353: Line 354:
 
</pre>
 
</pre>
   
  +
Notez que le symbole grammatical est ajouté à la fin, après le groupe marqué avec <g>.
== Bref introduction aux paradigmes ==
 
  +
Ça peut être le cas si un lemme est un multi-mot dans une langue et un simple mot dans une autre. Dans ce cas, dans le dictionnaire bilingue, le multi-mot contiendra l'élément <g> mais pas le mot simple. Dans les dictionnaires monolingues, chaque entrée sera créée en fonction de son type. Regardez l'exemple qui suit pour le multi-mot "darse cuenta" espagnol (réaliser), traduit en Catalan par le verbe "adonar-se" :
   
  +
* Dictionnaire monolingue espagnol :
   
  +
<pre>
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple:
 
  +
<e lm="darse cuenta">
  +
<i>d</i>
  +
<par n="d/ar__vblex"/>
  +
<p>
  +
<l><b/>cuenta</l>
  +
<r><g><b/>cuenta</g></r>
  +
</p>
  +
</e>
  +
</pre>
  +
  +
* Dictionnaire monolingue catalan :
  +
  +
<pre>
  +
<e lm="adonar-se">
  +
<i>adon</i>
  +
<par n="abander/ar__vblex"/>
  +
</e>
  +
</pre>
  +
  +
* Dictionnaire bilingue espagnol-catalan :
  +
  +
<pre>
  +
<e>
  +
<p>
  +
<l>dar<g><b/>cuenta</g><s n="vblex"/></l>
  +
<r>adonar<s n="vblex"/></r>
  +
</p>
  +
</e>
  +
</pre>
  +
  +
Notez que les pronoms enclitiques (comme "-se") après les formes verbales espagnoles et catalanes n'ont pas besoin d'être spécifiées et seront traités par les règles de transfert structurel; le positionnement correct des clitiques est l'une des principales raisons de l'utilisation des balises <g>... </g> autour des parties invariables des verbes multi-mot.
  +
  +
Les mêmes principes et actions décrites pour les entrées de base (changement du genre et du nombre, restrictions directionnelles, etc.) s'appliquent à toutes sortes de multi-mots.
  +
Pour une description plus détaillée des unités de multi-mots, référez vous à la section 3.1.2.5 de la documentation système.
  +
  +
== Brève introduction aux paradigmes ==
  +
  +
Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple :
   
 
<pre>
 
<pre>
Line 369: Line 410:
 
</pre>
 
</pre>
   
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki>:
+
Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <nowiki><i> </i></nowiki> :
   
 
<pre>
 
<pre>
Line 378: Line 419:
 
</pre>
 
</pre>
   
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences: une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :
+
Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences : une séquence à gauche <l> et une séquence à droite <r> dans un élément <nowiki><p></nowiki> :
   
 
<pre>
 
<pre>
Line 390: Line 431:
 
</pre>
 
</pre>
   
Ces deux entrées sont équivalentes. L'usage de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.
+
Ces deux entrées sont équivalentes. L'utilisation de l'élément <nowiki><i></nowiki> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (ce qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <nowiki><i></nowiki>.
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticales qui vont passer dans tous les modules du système.
 
   
  +
Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticaux qui vont passer dans tous les modules du système.
   
 
== Considérez le fait de nous fournir vos améliorations des données lexicales ==
 
== Considérez le fait de nous fournir vos améliorations des données lexicales ==
   
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, n'hésitez pas à les communiquer au projet afin que nous puissions offrir un meilleur toolbox à la communauté. Vous pouvez nous envoyer vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes:
+
Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, n'hésitez pas à les communiquer au projet afin que nous puissions offrir de meilleurs outils à la communauté. Vous pouvez nous envoyer vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes :
   
 
<pre>
 
<pre>
 
Données espagnol-catalan
 
Données espagnol-catalan
Mireia Ginestí: mginesti [at] dlsi [dot] ua [dot] es
+
Mireia Ginestí : mginesti [at] dlsi [point] ua [point] es
 
Données espagnol-portugais
 
Données espagnol-portugais
Carme Armentano: carmentano [at] dlsi [dot] ua [dot] es
+
Carme Armentano : carmentano [at] dlsi [point] ua [point] es
 
Données espagnol-galicien
 
Données espagnol-galicien
Xavier Gómez-Guinovart: xgg [at] uvigo [dot] es
+
Xavier Gómez-Guinovart : xgg [at] uvigo [point] es
 
</pre>
 
</pre>
   
Si vous pensez vous impliquer davantage dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas encore de compte à sourceforge, merci d'en créer un; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [dot] es), à Sergio Ortiz (sortiz [at] dlsi [dot] ua [dot] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés à la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de
+
Si vous pensez vous impliquer davantage dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas encore de compte à sourceforge, merci d'en créer un; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [point] es), à Sergio Ortiz (sortiz [at] dlsi [point] ua [point] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés par la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de contribuer est d'utiliser CVS; en tant que membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires.
contribuer est d'utiliser CVS; en tant que membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires.
 
   
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent ne doivent pas traiter directement avec XML.
+
L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http ://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent n'aient pas à traiter directement du XML.
   
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU General Public License or Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.
+
Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU Licence Publique Générale ou Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.
   
== Comment ajouter des règles de transfert structural (grammaire) ==
+
== Comment ajouter des règles de transfert structurel (grammaire) ==
   
Les règles de transfert structural réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions,etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminer – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.
+
Les règles de transfert structurel réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions, etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminant – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.
   
Le module de transfert structural (généré à partir du fichier des règles de transfert structural) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le procès pour déterminer les équivalents de la langue d'arrivée à partir des formes lexicales de la langue de départ.
+
Le module de transfert structurel (généré à partir du fichier des règles de transfert structurel) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le processus pour déterminer les équivalents dans la langue d'arrivée à partir des formes lexicales de la langue de départ.
   
Les règles de transfert structural sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert.
+
Les règles de transfert structurel sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert.
   
Les règles ont un motif et une partie d'action. Le motif précise quels séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macroinstruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.
+
Les règles ont un motif et une partie d'action. Le motif précise quelles séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macro-instruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.
   
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes:
+
Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes :
   
* <section-def-cats>: Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les prédéterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert:
+
* <section-def-cats> : Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les pré-déterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert :
   
 
<pre>
 
<pre>
<def-cat n="det">
+
<def-cat n="det">
<cat-item tags="det.*"/>
+
<cat-item tags="det.*"/>
<cat-item tags="predet.*"/>
+
<cat-item tags="predet.*"/>
</def-cat>
+
</def-cat>
 
</pre>
 
</pre>
   
Il est aussi possible de définir un lemme quelconque comme une catégorie. À continuation, vous pouvez le constater avec la préposition "en":
+
Il est aussi possible de définir un lemme quelconque comme une catégorie. Comme ce qui suit pour la préposition "en" :
   
 
<pre>
 
<pre>
<def-cat n="en">
+
<def-cat n="en">
 
<cat-item lemma="en" tags="pr"/>
 
<cat-item lemma="en" tags="pr"/>
 
</def-cat>
 
</def-cat>
 
</pre>
 
</pre>
   
  +
* <section-def-attrs> : Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondants et ils ne peuvent pas avoir des astérisques; leur nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre) :
 
* <section-def-attrs>: Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondantes et ils ne peuvent pas avoir des astérisques; son nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre):
 
   
 
<pre>
 
<pre>
<def-attr n="a_det">
+
<def-attr n="a_det">
 
<attr-item tags="det.def"/>
 
<attr-item tags="det.def"/>
 
<attr-item tags="det.ind"/>
 
<attr-item tags="det.ind"/>
Line 453: Line 492:
 
<attr-item tags="det.pos"/>
 
<attr-item tags="det.pos"/>
 
<attr-item tags="predet"/>
 
<attr-item tags="predet"/>
</def-attr>
+
</def-attr>
   
 
<def-attr n="gen">
 
<def-attr n="gen">
Line 461: Line 500:
 
<attr-item tags="nt"/>
 
<attr-item tags="nt"/>
 
<attr-item tags="GD"/>
 
<attr-item tags="GD"/>
</def-attr>
+
</def-attr>
 
</pre>
 
</pre>
  +
 
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.
 
* <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.
  +
 
<pre>
 
<pre>
 
<def-var n="interrogativa"/>
 
<def-var n="interrogativa"/>
 
</pre>
 
</pre>
   
* <section-def-macros> : Les macroinstructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macroinstructions pour les opérations d'accord de genre et de nombre.
+
* <section-def-macros> : Les macro-instructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macro-instructions pour les opérations d'accord de genre et de nombre.
   
* <section-rules> : Dans cette section les règles de transfert structural sont écrites.
+
* <section-rules> : Dans cette section les règles de transfert structurel sont écrites.
   
L'exemple suivant montre un règle qui détecte la séquence déterminant – nom:
+
L'exemple suivant montre une règle qui détecte la séquence déterminant – nom :
   
 
<pre>
 
<pre>
Line 498: Line 539:
 
</pre>
 
</pre>
   
Une partie de l'action effectuée dans ce motif est précisée dans la macroinstruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre: s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correcte du déterminant précédent. Dans Apertium es-ca, es-gl and es-pt systems, il y a des macroinstructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macroinstructions sont appelées, il doit être précisé quelle est l'unité lexicale principal (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principal est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).
+
Une partie de l'action effectuée dans ce motif est précisée dans la macro-instruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre : s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correct du déterminant précédent. Dans les systèmes Apertium es-ca, es-gl et es-pt, il y a des macro-instructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macro-instructions sont appelées, il doit être précisé quelle est l'unité lexicale principale (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principale est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).
   
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient:
+
Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient :
   
* pos: fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).
+
* pos : fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).
* side: indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.
+
* side : indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.
* part: indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies:
+
* part : indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies :
-whole: la forme lexicale en entière (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyé (dans un élément <out>).
+
-whole : la forme lexicale en entier (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyée (dans un élément <out>).
-lem: le lemme de l'unité lexicale.
+
-lem : le lemme de l'unité lexicale.
-lemh: la tête du lemme d'un multimot avec une inflexion interne.
+
-lemh : la tête du lemme d'un multi-mot avec une inflexion interne.
-lemq: la queue du lemme d'un multimot avec une inflexion interne.
+
-lemq : la queue du lemme d'un multi-mot avec une inflexion interne.
   
 
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).
 
En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).
   
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multimots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multimots ») pour placer la tête et la queue du lemme dans la correcte position, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multimots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multimot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la correcte position)
+
Les valeurs « lemh » et « lemq » sont utilisés lorsque des multi-mots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multi-mots ») pour placer la tête et la queue du lemme dans la position correcte, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multi-mots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multi-mot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la position correcte)
   
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants:
+
Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants :
   
  +
<pre>
 
<rule>
 
<rule>
 
<pattern>
 
<pattern>
Line 534: Line 576:
 
</action>
 
</action>
 
</rule>
 
</rule>
 
   
 
<rule>
 
<rule>
Line 540: Line 581:
 
<pattern-item n="verb"/>
 
<pattern-item n="verb"/>
 
<pattern-item n="prnenc"/>
 
<pattern-item n="prnenc"/>
</pattern>
+
</pattern>
<action>
+
<action>
 
<out>
 
<out>
 
<mlu>
 
<mlu>
Line 560: Line 601:
 
</lu>
 
</lu>
 
</mlu>
 
</mlu>
</out>
+
</out>
</action>
+
</action>
 
</rule>
 
</rule>
  +
</pre>
   
La première règle détecte un verbe et place la queue dans la correcte position, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément: tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.
+
La première règle détecte un verbe et place la queue dans la position correcte, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément : tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.
   
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de: tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de: lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multilexicale (multimot).
+
La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de : tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de : lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multi lexicale (multi-mot).
   
  +
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes :
 
Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes:
 
   
 
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif.
 
#Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif.
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macroinstruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structural (transfer.dtd) fournie avec le lot d'Apertium, dans lequel tous les éléments du langage sont décrits en anglais.
+
#Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macro-instruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structurel (transfer.dtd) fournie avec le paquet Apertium, dans lequel tous les éléments du langage sont décrits en anglais.
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multilexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.
+
#Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multi lexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoit. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.
+
Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoive. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.
 
   
 
== Comment ajouter des données dans le tagger de la partie du discours ==
 
== Comment ajouter des données dans le tagger de la partie du discours ==
   
 
À écrire.
 
À écrire.
 
   
 
== Entraînement du tagger de la partie du discours ==
 
== Entraînement du tagger de la partie du discours ==
   
  +
Article principal : [[Entraînement d'un tagueur]]
{{main|Tagger training}}
 
   
 
À écrire.
 
À écrire.
Line 592: Line 631:
 
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.
 
Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.
   
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'aller au numéro de ligne indiqué pour le message d'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de compiler, mais cela peut provoquer que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.
+
Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'à aller au numéro de ligne indiqué pour le message d'erreur, corriger l'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de la compilation, mais cela peut faire que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.
   
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format de texte plat, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les ordres correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.
+
Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format texte, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les commandes correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.
   
En utilisant les ordres echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les ordres expliqués ci-dessous.
+
En utilisant les commandes echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les commandes expliqués ci-dessous.
   
===La sortie de l'analysateur morphologique===
+
=== La sortie de l'analyseur morphologique ===
   
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener »):
+
Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener ») :
   
 
<pre>
 
<pre>
Line 608: Line 647:
 
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.
 
Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.
   
La sortie à Apertium devrait être:
+
La sortie à Apertium devrait être :
   
 
<pre>
 
<pre>
Line 614: Line 653:
 
</pre>
 
</pre>
   
La séquence structurelle est: <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse de l'arrêt complet, car toute fin de phrase est représentée par un arrêt complet dans le système, que ce soit indiqué de façon explicite ou pas dans la phrase.
+
La séquence structurelle est : <code>^word/lemma<morphological analysis>$</code>. L'étiquette <code><sent></code> est l'analyse du point (arrêt complet), car toute fin de phrase est représentée par un point (arrêt complet) dans le système, que ce soit indiqué de façon explicite ou non dans la phrase.
   
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet):
+
L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet) :
   
 
<pre>
 
<pre>
Line 622: Line 661:
 
</pre>
 
</pre>
   
et l'analyse d'un mot ambigu:
+
et l'analyse d'un mot ambigu :
   
 
<pre>
 
<pre>
Line 630: Line 669:
 
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »
 
Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »
   
===La sortie du tagger===
+
=== La sortie du tagger ===
   
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol):
+
Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol) :
   
 
<pre>
 
<pre>
Line 638: Line 677:
 
</pre>
 
</pre>
   
La sortie sera:
+
La sortie sera :
 
<pre>
 
<pre>
 
^gener<n><m><sg>$^.<sent>$[][]
 
^gener<n><m><sg>$^.<sent>$[][]
 
</pre>
 
</pre>
   
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte):
+
La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte) :
   
 
<pre>
 
<pre>
Line 649: Line 688:
 
</pre>
 
</pre>
   
===La sortie du pré-transfert===
+
=== La sortie du pré-transfert ===
   
Ce module réalise quelques changements aux multimots (déplace la queue du lemme d'un multimot avec une inflexion interne juste après la tête du lemme):
+
Ce module réalise quelques changements aux multi-mots (déplace la queue du lemme d'un multi-mot avec une inflexion interne juste après la tête du lemme) :
   
 
<pre>
 
<pre>
 
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer
 
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer
 
</pre>
 
</pre>
Comme « gener » n'est pas un multimot dans les dictionnaires, ce module ne change pas ses entrées.
+
Comme « gener » n'est pas un multi-mot dans les dictionnaires, ce module ne change pas ses entrées.
   
===La sortie du transfert structural===
+
=== La sortie du transfert structurel ===
   
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structural, tapez l'exemple suivant dans le terminal:
+
Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structurel, tapez l'exemple suivant dans le terminal :
   
 
<pre>
 
<pre>
Line 666: Line 705:
 
</pre>
 
</pre>
   
La sortie pour le mot catalan « gener » sera:
+
La sortie pour le mot catalan « gener » sera :
   
 
<pre>
 
<pre>
Line 672: Line 711:
 
</pre>
 
</pre>
   
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structural. Les erreurs les plus courantes des dictionnaires bilingues sont: deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structural varient beaucoup selon les actions réalisées par les règles.
+
Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structurel. Les erreurs les plus courantes des dictionnaires bilingues sont : deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structurel varient beaucoup selon les actions réalisées par les règles.
   
===La sortie du générateur morphologique===
+
=== La sortie du générateur morphologique ===
   
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal:
+
Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal :
   
 
<pre>
 
<pre>
Line 684: Line 723:
 
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.
 
Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.
   
La sortie correcte pour l'entrée « gener » serait:
+
La sortie correcte pour l'entrée « gener » serait :
 
<pre>
 
<pre>
 
enero.[][]
 
enero.[][]
Line 690: Line 729:
 
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi.
 
Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi.
   
  +
=== La sortie du post-générateur ===
   
  +
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant :
===La sortie du post-générateur===
 
 
Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant:
 
   
 
<pre>
 
<pre>
Line 699: Line 737:
 
</pre>
 
</pre>
   
===La sortie finale===
+
=== La sortie finale ===
   
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent:
+
Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent :
   
 
<pre>
 
<pre>
 
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt
 
$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt
 
</pre>
 
</pre>
  +
C'est le même que le shell script « apertium » fourni par le lot d'Apertium:
 
  +
C'est le même que le shell script « apertium » fourni par le paquet Apertium :
   
 
<pre>
 
<pre>
Line 714: Line 753:
 
(L'arrêt complet indique que le répertoire où les données linguistiques sont gardées).
 
(L'arrêt complet indique que le répertoire où les données linguistiques sont gardées).
   
Bien entendu, au lieu de taper tous les ordres, qui ont été présentés, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.
+
Bien entendu, au lieu de taper toutes les commandes, qui ont été présentées, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.
   
 
Exemples des erreurs
 
Exemples des erreurs
Line 722: Line 761:
 
== Comment générer un nouveau système Apertium à partir des données modifiées ==
 
== Comment générer un nouveau système Apertium à partir des données modifiées ==
   
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui puisse être applicable) pour que le système génère des nouveaux fichiers binaires.
+
Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont sauvegardées (apertium-es-ca, apertium-es-gl ou autre) pour que le système génère des nouveaux fichiers binaires.
   
 
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.
 
Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.
Line 728: Line 767:
 
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.
 
Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.
   
  +
== Voir aussi ==
   
  +
* [[Contributing to an existing pair]] (la même chose en anglais)
==See also==
 
  +
* [[Building dictionaries]]
 
  +
* [[Finding_errors_in_dictionaries]]
* [[Contributing to an existing pair]]
 
  +
* [[A_long_introduction_to_transfer_rules]]
  +
* [[Apertium New Language Pair HOWTO]]
   
 
== Source ==
 
== Source ==
   
The original version was transferred from source http://apertium.sourceforge.net/extending.html.
+
* [http://apertium.sourceforge.net/extending.html Version original]
   
[[Category:Documentation]]
+
[[Category :Documentation]]
  +
[[Category :Documentation en français]]

Latest revision as of 18:55, 10 April 2017

In English

Comment ajouter des données linguistiques à une paire des langues existante dans Apertium.

Apertium possède des données pour de nombreuses paires de langues. Ces données linguistiques comprennent principalement des dictionnaires (monolingues et bilingues), des règles de transfert structurel qui réalisent des opérations grammaticales et d'autres transformations entre deux langues concernées, et des données lexicales pour le PoS tagger, qui est en charge de la désambiguïsation du texte de la langue de départ.

Toutes ces données linguistiques sont stockées dans un même répertoire. Par exemple, apertium-es-ca pour la paire espagnol-catalan. Pour continuer, nous vous décrivons les fichiers que vous pouvez trouver dans ce répertoire.

Exemple d'édition des fichiers[edit]

Apertium 1[edit]

Pour la paire espagnol-catalan (apertium-es-ca) :

  • apertium-es-ca.es.dix : Dictionnaire monolingue espagnol, ayant 11 800 entrées (depuis le 17 novembre 2005)
  • apertium-es-ca.ca.dix : Dictionnaire monolingue catalan, ayant 11 800 entrées.
  • apertium-es-ca.es-ca.dix : Dictionnaire bilingue espagnol-catalan, ayant 12 800 entrées (correspondances espagnol-catalan).
  • apertium-es-ca.trules-es-ca.xml : Règles de transfert structurel pour la traduction de l'espagnol au catalan.
  • apertium-es-ca.trules-ca-es.xml : Règles de transfert structurel pour la traduction du catalan à l'espagnol.
  • apertium-es-ca.es.tsx : Fichier de définition du tagger pour l'espagnol
  • apertium-es-ca.ca.tsx : Fichier de définition du tagger pour le catalan
  • apertium-es-ca.post-es.dix : Dictionnaire de post-génération pour l'espagnol, avec 25 entrées et 5 paradigmes (demandés au moment de traduire du catalan à l'espagnol)
  • apertium-es-ca.post-ca.dix : Dictionnaire de post-génération pour le catalan, avec 16 entrées et 57 paradigmes (demandés au moment de traduire de l'espagnol au catalan)
  • répertoire es-tagger-data : Contient les données nécessaires pour le tagger espagnol (corpus, etc.)
  • répertoire ca-tagger-data : Contient les données nécessaires pour le tagger catalan (corpus, etc.)

Comment ajouter des mots dans les dictionnaires[edit]

Au moment de développer ou d'adapter Apertium, l'opération qui sera le plus probablement réalisée sera le développement de ses dictionnaires. En fait, il sera beaucoup plus commun que l'ajout des règles de transfert ou de post-génération.

IMPORTANT : À chaque fois que les modifications d'un groupe sont faites pour chaque dictionnaire, les modules doivent être compilés à nouveau. Tapez 'make' dans le répertoire où les données linguistiques sont gardées (apertium-es-ca, apertium-es-gl ou ce qui peut être applicable) pour que le système génère des nouveaux fichiers binaires.

Si vous voulez ajouter un nouveau mot à Apertium, vous devez ajouter trois entrées dans les dictionnaires. Supposons que vous travaillez avec la paire espagnol-catalan. Dans ce cas, vous devez ajouter :

  1. une entrée dans le dictionnaire monolingue espagnol : pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers l'espagnol.
  2. une entrée dans le dictionnaire bilingue : pour que vous puissiez dire à Apertium comment traduire ce mot d'une langue à l'autre.
  3. une entrée dans le dictionnaire monolingue catalan : pour que le traducteur puisse analyser ("comprendre") le mot lorsqu'il le trouve dans un texte, et le générer lorsqu'il va le traduire vers le catalan.

Vous devrez aller au répertoire ayant les dictionnaires XML (pour la paire espagnol-catalan, c'est apertium-es-ca) et ouvrir avec un éditeur de texte ou un éditeur spécial XML, les trois fichiers des dictionnaires précités : apertium-es-ca.es.dix, apertium-es-ca.es-ca.dix and apertium-es-ca.ca.dix. Les entrées que vous devez créer dans ces trois dictionnaires partagent une structure commune.

Dictionnaire monolingue (Espagnol)[edit]

Vous voulez, par exemple, ajouter l'adjectif espagnol « cósmico », dont l'équivalent en catalan est « còsmic ». La première étape est d'ajouter ce mot dans le dictionnaire monolingue espagnol. Vous pouvez constater qu'un dictionnaire monolingue a essentiellement deux types des données : les paradigmes (à la section "<pardefs>" du dictionnaire, chaque paradigme dans un élément <pardef>) et les entrées des mots à la <section> « main » du dictionnaire, chacune dans un élément <e>). Les entrées des mots sont des lemmes (cela représente le mot tel que vous le trouveriez dans un dictionnaire en papier) plus l'information grammaticale; les paradigmes contiennent les données d'inflexion de toutes les lemmes dans le dictionnaire. Vous pouvez trouver un mot en particulier en cherchant la séquence lm="mot" (lm signifie lemme). (L'élément lm est optionnel et d'autres dictionnaires peuvent ne pas l'avoir). Regardez les entrées des mots dans le dictionnaire monolingue espagnol, par exemple, l'entrée de l'adjectif « bonito ». Vous pouvez la trouver en cherchant lm=« bonito » :

     <e lm="bonito">
       bonit
       <par n="absolut/o__adj"/>
     </e>
     

Pour ajouter un mot, vous devrez créer une entrée avec la même structure. La partie entre et contient le préfixe du mot ce qui est commun pour toutes les formes infléchies, et l'élément <par> fait référence à l'inflexion du paradigme de ce mot. Par conséquent, cette entrée signifie que l'adjectif « bonito » s'infléchit tout comme l'adjectif « absoluto » ayant la même analyse morphologique : les formes bonito, bonita, bonitos, bonitas sont équivalentes aux formes absoluto, absoluta, absolutos, absolutas ayant l'analyse morphologique : adj m sg, adj f sg, adj m pl and adj f pl respectivement.

Maintenant, vous devez décider quelle est la catégorie lexicale du mot que vous voulez ajouter. Le mot « cósmico » est un adjectif comme « bonito ». Par la suite, vous devez trouver le paradigme approprié pour cet adjectif. A-t-il la même inflexion que « bonito » et « absoluto » ? Pouvez-vous dire cósmico, cósmica, cósmicos, cósmicas ? La réponse est oui. Avec toute cette information vous pouvez maintenant créer l'entrée correcte :

     <e lm="cósmico">
       cósmic
       <par n="absolut/o__adj"/>
     </e>

Si le mot que vous voulez ajouter a un paradigme différent, vous devez le chercher dans le dictionnaire et l'assigner à l'entrée. Vous avez deux chemins pour trouver le paradigme approprié : soit en regardant la section <pardefs> du dictionnaire, où tous les paradigmes sont définis dans un élément <pardefs>, soit en cherchant un autre mot qui pourrait déjà exister dans le dictionnaire ayant la même inflexion du paradigme que le mot à ajouter. Par exemple, si vous voulez ajouter le mot « genoma » vous devez trouver un paradigme approprié pour un nom dont le genre est masculin et qui fait sont pluriel en ajoutant un -s. Ce sera le paradigme « abismo_n » dans notre dictionnaire actuel. Par conséquent, l'entrée de ce nouveau mot serait :

     <e lm="genoma">
        <i>genoma</i>
        <par n="abismo__n"/>
      </e>

Dans des cas exceptionnels vous devrez créer un nouveau paradigme pour un certain mot . Vous pouvez regardez la structure d'autres paradigmes et en créer un correctement. Pour une description plus détaillée des paradigmes et des entrées des mots dans les dictionnaires, consultez la section 3.1.2 de la documentation du système.

Dictionnaire monolingue (Catalan)[edit]

Une fois que vous avez ajouté le mot dans un dictionnaire monolingue, vous devez le refaire dans l'autre dictionnaire monolingue de la paire de traduction (dans notre exemple, le dictionnaire monolingue catalan) en utilisant la même structure. Le résultat serait :

    <e lm="còsmic">
       <i>còsmi</i>
       <par n="acadèmi/c__adj"/>
    </e>

Dictionnaire monolingue (Galicien)[edit]

Au cas où vous essayez d'améliorer les dictionnaires XML pour la paire espagnol-galicien, vous devrez vous adresser au répertoire apertium-es-gl et vous devrez ouvrir avec un éditeur de texte ou avec un éditeur spécial XML, les trois fichiers des dictionnaires apertium-es-gl.es.dix, apertium-es-gl.es-gl.dix and apertium-es-gl.gl.dix. Dans ce cas, une fois que vous avez ajouté le nouveau mot espagnol « genoma » dans le dictionnaire monolingue espagnol (apertium-es-gl.es.dix), vous devez ajouter le mot galicien équivalent « xenoma » dans le dictionnaire monolingue galicien (apertium-es-gl.gl.dix), ce serait :

    <e lm="xenoma">
       <i>xenoma</i>
       <par n="Xulio__n"/>
    </e>

Dictionnaire bilingue[edit]

La dernière étape consiste à ajouter la traduction dans le dictionnaire bilingue. Normalement, un dictionnaire bilingue n'a pas de paradigmes, mais des lemmes. Une entrée contient seulement le lemme dans les deux langues et le premier symbole grammatical (la catégorie lexicale) de chacun.

Les entrées ont un côté gauche (<l>) et un côté droit (<r>), et chaque langue doit toujours se placer dans la même position : dans notre système, il a été convenu que l'espagnol occupe le côté gauche et que le catalan, le galicien et le portugais occupent le côté droit. Une fois que le « côté » a été convenu dans le système, il faut le respecter pour la totalité des dictionnaires pour que la traduction fonctionne.

En ajoutant le lemme de deux mots, le système traduira toutes les formes infléchies (les symboles grammaticaux sont copiés du mot de la langue de départ au mot de la langue d'arrivée. Cela fonctionnera seulement si le mot de la langue de départ et le mot de la langue d'arrivée sont grammaticalement équivalents, c'est-à-dire, s'ils partagent exactement les mêmes symboles morphologiques pour toutes leurs formes infléchies. C'est le cas de notre exemple; par conséquent, l'entrée que vous devez ajouter dans les dictionnaire bilingue est :

     <e> 
        <p>
          <l>cósmico<s n="adj"/></l>
          <r>còsmic<s n="adj"/></r>
        </p>
      </e>

Cette entrée traduira toutes les formes infléchies, c'est-à-dire, adj m sg, adj f sg, adj m pl and adj f pl. Cela fonctionne pour la traduction dans les deux directions : de l'espagnol au catalan et du catalan à l'espagnol.

Dans le cas de la paire espagnol-galicien, l'entrée bilingue suivante dans le dictionnaire bilingue espagnol-galicien (apertium-es-gl.es-gl) traduira toutes les formes infléchies pour les mots équivalents genoma/xenoma dans les deux directions, c'est-à-dire, de l'espagnol au galicien et du galicien à l'espagnol :

     <e> 
        <p>
          <l>genoma<s n="n"/></l>
          <r>xenoma<s n="n"/></r>
        </p>
      </e>

Qu'est-ce qu'on doit faire si la paire de mots n'est pas équivalente grammaticalement (leurs symboles grammaticaux ne sont pas exactement les mêmes) ? Dans ce cas, vous devez préciser tous les symboles grammaticaux (dans le même ordre que celui précisé dans les dictionnaires monolingues) jusqu'à ce que vous trouvez le symbole qui diffère parmi le mot de la langue de départ et le mot de la langue d'arrivée. Par exemple, le nom espagnol « limón » est masculin et son équivalent en catalan, « llimona » est féminin. L'entrée dans le dictionnaire bilingue doit être :

      <e>
        <p>
          <l>limón<s n="n"/><s n="m"/></l>
          <r>llimona<s n="n"/><s n="f"/></r>
        </p>
      </e>

Un problème plus compliqué surgit lorsque deux mots ont des symboles grammaticaux différents et l'information grammaticale du mot de la langue de départ n'est pas suffisante pour déterminer le genre (masculin ou féminin) ou le nombre (singulier ou pluriel) du mot de la langue d'arrivée. Prenez à titre d'exemple l'adjectif espagnol « canadiense ». Son genre est (masculin-féminin) et il reste invariable, c'est-à-dire, il peut suivre soit un nom masculin, soit un nom féminin (hombre canadiense, mujer canadiense). De l'autre côté, en catalan l'adjectif a une inflexion différente pour le masculin et le féminin (home canadenc, dona canadenca). Par conséquent, lorsqu'on traduit de l'espagnol au catalan il n'est pas possible à savoir si l'adjectif espagnol (mf) doit être traduit comme un adjectif féminin ou masculin au catalan, sans regarder le mot qui l'accompagne. Dans ce cas, le symbole « GD » (« genre à déterminer ») est utilisé au lieu du symbole de genre. Le genre des mots sera déterminé par le module de transfert structurel, moyennant une règle de transfert (une règle qui détecte le genre du nom précédent dans ce cas précis).

Par conséquent, « GD » doit être employé seulement lorsqu'on traduit de l'espagnol au catalan, mais pas du tout lorsqu'on traduit du catalan à l'espagnol, étant donné qu'en espagnol le genre sera toujours « mf » quoi qu'il en soit le genre du mot original.

Dans le dictionnaire bilingue vous devrez ajouter, dans ce cas, plusieurs entrées avec des indications directionnelles, puisque vous devez préciser dans quelle direction de traduction le genre reste indéterminé. Les entrées pour cet adjectif seraient :

     <e r="LR">
        <p>
          <l>canadiense<s n="adj"/><s n="mf"/></l>
          <r>canadenc<s n="adj"/><s n="GD"/></r>
        </p>
      </e>
      <e r="RL">
        <p>
          <l>canadiense<s n="adj"/><s n="mf"/></l>
          <r>canadenc<s n="adj"/><s n="f"/></r>
        </p>
      </e>
      <e r="RL">
        <p>
          <l>canadiense<s n="adj"/><s n="mf"/></l>
          <r>canadenc<s n="adj"/><s n="m"/></r>
        </p>
      </e>

« LR » signifie « left to right » (de gauche à droite), et « RL », « right to left » (de droite à gauche). Comme l'espagnol est à droite et le catalan à gauche, l'adjectif sera « GD » seulement lorsqu'on traduit de l'espagnol au catalan (« LR »). Pour la traduction « RL » vous devez créer deux entrées, l'une pour l'adjectif féminin et l'autre pour l'adjectif masculin.

Le même principe est appliqué lorsqu'il n'est pas possible de déterminer le nombre (singulier ou pluriel) du mot d'arrivée à cause des raisons indiquées ci-dessus. Par exemple, le nom espagnol « rascacielos » (gratte-ciel) est invariable en nombre, c'est-à-dire, il peut être singulier ainsi que pluriel (un rascacielos, dos rascacielos). En catalan, d'un autre côté, le nom a une inflexion différente pour le singulier et pour le pluriel (un gratacel, dos gratacels). Dans ce cas, le symbole utilisé est « ND » (« nombre à déterminer ») et les entrées seraient comme celle-ci :

      <e r="LR">
        <p>
          <l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l>
          <r>gratacel<s n="n"/><s n="m"/><s n="ND"/></r>
        </p>
      </e>
      <e r="RL">
        <p>
          <l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l>
          <r>gratacel<s n="n"/><s n="m"/><s n="pl"/></r>
        </p>
      </e>
      <e r="RL">
        <p>
          <l>rascacielos<s n="n"/><s n="m"/><s n="sp"/></l>
          <r>gratacel<s n="n"/><s n="m"/><s n="sg"/></r>
        </p>
      </e>

Pour une description plus détaillée de ce type d'entrée, consultez la section 3.1.2.4.2 de la documentation du système.

Comment ajouter des restrictions directionnelles[edit]

Dans l'exemple précédent nous avons déjà vu l'utilisation des restrictions directionnelles pour des entrées avec le genre et le nombre indéterminés (« GD » ou « ND »). Les restrictions peuvent être également faites dans d'autres cas. Il est important de noter que la version actuelle d'Apertium ne peut fournir qu'un équivalent pour chaque forme lexicale de la langue de départ (une forme lexicale est le lemme plus son information grammaticale), c'est-à-dire, la désambiguïsation du sens du mot n'est pas réalisée. [Note : Le système ne réalise que la désambiguïsation de la partie du discours pour les mots homographes, c'est-à-dire, pour des mots ambigus qui peuvent être analysés à plusieurs formes lexicales, comme « vino » en espagnol, qui peut signifier « vin » ainsi que « il vint - il/elle est venu/e ». Ce type de désambiguïsation est réalisée par le tagger.] Lorsqu'un lemme peut être traduit de deux ou plusieurs façons, il faut en choisir une (la plus générale, la plus fréquente,etc.). Vous pouvez dire à Apertium qu'un certain mot doit être compris (analysé) mais pas généré, car ce n'est pas la traduction d'un lemme de la langue de départ.

Nous allons voir cela avec un exemple. Le mot espagnol « muñeca » peut être traduit en catalan de deux façons différentes selon le sens : « canell » (poignet) ou « nina » (poupée). Le contexte décide quelle traduction est la correcte, mais Apertium, dans son état actuel, ne peut pas prendre une telle décision (regardez, cependant, à la section des unités multi-mots pour voir comment éviter ce problème). Par conséquent, vous devez décider le mot équivalent lorsqu'on traduit de l'espagnol au catalan. Du catalan à l'espagnol, les deux mots peuvent être traduits comme « muñeca » sans aucun problème. Vous devez préciser toutes ces circonstances dans les entrées du dictionnaire en utilisant des restrictions directionnelles (« LR » qui signifie « left to right », c'est-à-dire, espagnol-catalan, et « RL » qui signifie « right to left », c'est-à-dire, catalan-espagnol). Si vous décidez de traduire « muñeca » comme « canell » dans tous les cas, les entrées dans le dictionnaire bilingue seraient :

      <e>
        <p>
          <l>muñeca<s n="n"/><s n="f"/></l>
          <r>canell<s n="n"/><s n="m"/></r>
        </p>
      </e>

      <e r="RL">
        <p>
          <l>muñeca<s n="n"/></l>
          <r>nina<s n="n"/></r>
        </p>
      </e>

Cela veut dire que les directions de traduction seront :

     muñeca --> canell
     muñeca <-- canell
     muñeca <-- nina

(Notez qu'il y a aussi un changement de genre dans le cas de « muñeca » (féminin) et « canell » (masculin))

Il doit être souligné qu'un lemme ne peut pas avoir deux traductions dans la langue d'arrivée, parce que le système produirait une erreur lorsqu'on traduit ce lemme (consultez la section « Comment détecter les erreurs » ci-dessous pour voir comment trouver et corriger ces erreurs et d'autres types d'erreurs). Lorsqu'un mot peut être traduit de deux façons différentes dans la langue d'arrivée quelque soit le contexte, vous devez en choisir un comme l'équivalent de traduction et en laisser l'autre comme un lemme qui peut être analysé, mais pas généré, en utilisant des restrictions directionnelles comme dans l'exemple précédent. Par exemple, les lemmes catalans « mot » et « paraula » peuvent être traduits à l'espagnol comme « palabra » (mot), donc l'entrée dans le dictionnaire bilingue serait :

       <e>
        <p>
          <l>palabra<s n="n"/></l>
          <r>paraula<s n="n"/></r>
        </p>
      </e>
      <e r="RL">
        <p>
          <l>palabra<s n="n"/><s n="f"/></l>
          <r>mot<s n="n"/><s n="m"/></r>
        </p>
      </e>

Par conséquent, pour ces lemmes les directions de traduction seront :

     palabra --> paraula
     palabra <-- paraula
     palabra <-- mot

On doit aussi préciser les restrictions concernant la direction de traduction dans le dictionnaire monolingue. Par exemple, les deux formes espagnoles « cantaran » ou « cantasen » sont analysées comme « cantar », verbe, subjonctif imparfait, 3ème personne du pluriel, mais lorsqu'on génère le texte en espagnol, on doit décider quelle forme va être généré. Les dictionnaires monolingues sont lus dans les deux directions selon leur but : pour l'analyse, la direction de lecture est de gauche à droite; pour la génération, de droite à gauche. Par conséquent, le mot qui doit être analysé, mais pas généré, doit avoir la restriction « LR », et le mot qui doit être généré, mais pas analysé, doit avoir la restriction « RL ».

Le cas de cantaran ou cantasen doit avoir déjà tenu compte des paradigmes d'inflection et il est peu probable que ça soit un problème pour la plupart des gens étendant un dictionnaire. Dans d'autres cas il peut être nécessaire d'introduire une restriction dans les entrées de mots des dictionnaires monolingues.

Comment ajouter des multi-mots[edit]

Il est possible de créer des entrées constituées de deux ou plusieurs mots, à condition que ces mots puissent construire une seule « unité de traduction ». Ces « unités multi-mots » peuvent aussi être utiles lorsqu'il faut choisir l'équivalent correct pour un mot dans une expression fixe. Par exemple, le mot espagnol « dirección » peut être traduit de deux façons en catalan : « direcció » (direction, management) et «adreça» (adresse); il peut constituer, par exemple, des unités multi-mots fréquentes telles que « dirección general » --> « direcció general » (direction générale) et « dirección postal » --> « adreça postal » (adresse postale). Ceci peut nous aider à obtenir une meilleure traduction dans certaines situations.

Les unités multi-mots peuvent être catégorisées comme : des multi-mots avec une inflexion interne et des multi-mots sans inflexion interne.

Les multi-mots sans une inflexion interne sont comme les entrées d'un mot, mais il faut insérer l'élément (qui représente un blanc) entre les mots qui composent l'unité. Par conséquent, si vous voulez ajouter, par exemple, le multi-mot espagnol « hoy en día » (aujourd'hui), dont l'équivalent en catalan est « avui dia », les entrées que vous devez ajouter dans les trois dictionnaires sont :

  • Dictionnaire monolingue espagnol :
          <e lm="hoy en día">
            <i>hoy<b/>en<b/>día</i>
            <par n="ahora__adv"/>
           </e>
  • Dictionnaire monolingue catalan :
          <e lm="avui dia">
            <i>avui<b/>dia</i>
            <par n="ahir__adv"/>
          </e>
 
  • Dictionnaire bilingue espagnol-catalan :
          <e>
            <p>
              <l>hoy<b/>en<b/>día<s n="adv"/></l>
              <r>avui<b/>dia<s n="adv"/></r>
            </p>
          </e>

Pour la paire espagnol-galicien, si vous voulez ajouter, par exemple, le multi-mot espagnol « manga por hombro » (être sens dessus dessous) dont l'équivalent en galicien est « sen xeito nin modo ». Les entrées que vous devez ajouter sont :

  • Dictionnaire monolingue espagnol :
          <e lm="manga por hombro">
              <i>manga<b/>por<b/>hombro</i>
              <par n="abajo__adv"/>
          </e>
  • Dictionnaire monolingue galicien :
          <e lm="sen xeito nin modo">
              <i>sen<b/>xeito<b/>nin<b/>modo</i>
              <par n="Deo_gratias__adv"/>
          </e>
  • Dictionnaire bilingue espagnol-galicien :
          <e>
             <p>
                <l>manga<b/>por<b/>hombro<s n="adv"/></l>
                <r>sen<b/>xeito<b/>nin<b/>modo<s n="adv"/></r>
             </p>
          </e>

Les multi-mots avec une inflexion interne sont constitués d'un mot qui peut s'infléchir (normalement un verbe) et d'un élément invariable. Pour ces entrées vous devez préciser le paradigme d'inflexion juste après le mot qui infléchi. La partie invariable doit être marquée avec l'élément <g> dans le côté droit. Les blancs entre les mots sont indiqués, comme dans le cas précédent, avec l'élément . Regardez l'exemple suivant pour le multi-mot espagnol « echar de menos » (manquer), traduit au catalan comme « trobar a faltar » :

  • Dictionnaire monolingue espagnol :
     <e lm="echar de menos">
        <i>ech</i>
           <par n="aspir/ar__vblex"/>
        <p>
           <l><b/>de<b/>menos</l>
           <r><g><b/>de<b/>menos</g></r>
        </p>
      </e>          
  • Dictionnaire monolingue catalan :
      <e lm="trobar a faltar">
        <i>trob</i>
           <par n="abander/ar__vblex"/>
        <p>
           <l><b/>a<b/>faltar</l>
           <r><g><b/>a<b/>faltar</g></r>
        </p>
      </e>
  • Dictionnaire bilingue espagnol-catalan :
     <e>
       <p>
         <l>echar<g><b/>de<b/>menos</g><s n="vblex"/></l>
         <r>trobar<g><b/>a<b/>faltar</g><s n="vblex"/></r>
      </p>
     </e>

Notez que le symbole grammatical est ajouté à la fin, après le groupe marqué avec <g>. Ça peut être le cas si un lemme est un multi-mot dans une langue et un simple mot dans une autre. Dans ce cas, dans le dictionnaire bilingue, le multi-mot contiendra l'élément <g> mais pas le mot simple. Dans les dictionnaires monolingues, chaque entrée sera créée en fonction de son type. Regardez l'exemple qui suit pour le multi-mot "darse cuenta" espagnol (réaliser), traduit en Catalan par le verbe "adonar-se" :

  • Dictionnaire monolingue espagnol :
 
    <e lm="darse cuenta">
        <i>d</i>
           <par n="d/ar__vblex"/>
        <p>
           <l><b/>cuenta</l>
           <r><g><b/>cuenta</g></r>
        </p>
      </e>
  
  • Dictionnaire monolingue catalan :
      <e lm="adonar-se">
        <i>adon</i>
        <par n="abander/ar__vblex"/>
      </e>
  • Dictionnaire bilingue espagnol-catalan :
    <e>
      <p>
        <l>dar<g><b/>cuenta</g><s n="vblex"/></l>
        <r>adonar<s n="vblex"/></r>
      </p>
    </e>

Notez que les pronoms enclitiques (comme "-se") après les formes verbales espagnoles et catalanes n'ont pas besoin d'être spécifiées et seront traités par les règles de transfert structurel; le positionnement correct des clitiques est l'une des principales raisons de l'utilisation des balises <g>... </g> autour des parties invariables des verbes multi-mot.

Les mêmes principes et actions décrites pour les entrées de base (changement du genre et du nombre, restrictions directionnelles, etc.) s'appliquent à toutes sortes de multi-mots. Pour une description plus détaillée des unités de multi-mots, référez vous à la section 3.1.2.5 de la documentation système.

Brève introduction aux paradigmes[edit]

Les paradigmes des exemples précédents contiennent seulement un symbole de la forme lexicale, puisque les adverbes n'ont pas d'inflexion. Vous pouvez le constater dans cet exemple :

     <pardef n="ahora__adv">
          <e>
             <p>
                <l/>
                <r><s n="adv"/></r>
             </p>
          </e>
    </pardef>

Les paradigmes sont construits comme une entrée lexicale. Nous avons vu jusqu'à présent des entrées lexicales dont la partie commune du lemme est mise entre <i> </i> :

      <e lm="cósmico">
        <i>cósmic</i>
        <par n="absolut/o__adj"/>
      </e>

Néanmoins, vous pouvez aussi représenter la même chose avec une paire de séquences : une séquence à gauche <l> et une séquence à droite <r> dans un élément <p> :

      <e lm="cósmico">
         <p>
            <l>cósmic</l>
            <r>cósmic</r>
         </p>
         <par n="absolut/o__adj"/>
      </e>

Ces deux entrées sont équivalentes. L'utilisation de l'élément <i> nous aide à simplifier et compacter les entrées, et vous pouvez l'utiliser lorsque le côté gauche et le côté droit de la paire séquentielle sont identiques. Comme nous vous avons déjà expliqué, les dictionnaires monolingues sont lus LR pour l'analyse d'un texte et RL pour la génération. Par conséquent, lorsqu'il existe une différence entre la séquence analysée et la séquence généré (ce qui n'est pas très courant) l'entrée ne peut pas être écrite moyennant l'élément <i>.

Dans les paradigmes, les séquences gauches et droites ne sont jamais identiques, puisque le côté droit doit contenir les symboles grammaticaux qui vont passer dans tous les modules du système.

Considérez le fait de nous fournir vos améliorations des données lexicales[edit]

Si vous avez ajouté avec succès des données lexicales banalisées dans n'importe quelles paires de langues d'Apertium, n'hésitez pas à les communiquer au projet afin que nous puissions offrir de meilleurs outils à la communauté. Vous pouvez nous envoyer vos données (dans trois fichiers XML, un fichier pour chaque dictionnaire monolingue et un autre pour le dictionnaire bilingue) aux adresses suivantes :

Données espagnol-catalan
	Mireia Ginestí : mginesti [at] dlsi [point] ua [point] es
Données espagnol-portugais 
	Carme Armentano : carmentano [at] dlsi [point] ua [point] es
Données espagnol-galicien
	Xavier Gómez-Guinovart : xgg [at] uvigo [point] es

Si vous pensez vous impliquer davantage dans le projet, vous pouvez vous inscrire dans l'équipe de développement sur www.sourceforge.net. Si vous n'avez pas encore de compte à sourceforge, merci d'en créer un; puis adressez-vous à Mikel L. Forcada (mlf [at] ua [point] es), à Sergio Ortiz (sortiz [at] dlsi [point] ua [point] es) ou à Xavier Gómez Guinovart, si vous êtes intéressés par la paire de langues espagnol-galicien, et expliquez brièvement vos motivations et vos expériences professionnelles pour vous inscrire dans le projet. La façon la plus courante de contribuer est d'utiliser CVS; en tant que membre du projet, vous devrez être capable d'enregistrer directement vos changements dans les dictionnaires.

L'ajout des contributions lexicales simples a été récemment simplifié moyennant des formulaires sur le web à http ://xixona.dlsi.ua.es/prototype/webform/, afin que ceux qui y contribuent n'aient pas à traiter directement du XML.

Vous devriez être conscient du fait que les données que vous avez fourni au projet, une fois ajoutées, seront distribuées librement conformément à l'actuelle licence (GNU Licence Publique Générale ou Creative Commons 2.5 attribution-sharealike-noncommercial, telle qu'elle est indiquée). Assurez-vous que les données fournies ne sont pas affectées par aucun type de licence pouvant être incompatible avec les licences utilisées dans ce projet. Aucune sorte d'engagement ou contrat est fait entre vous et ceux qui développent le projet. Si vous avez des questions ou vous envisagez de faire une contribution massive, contactez Mikel L. Forcada.

Comment ajouter des règles de transfert structurel (grammaire)[edit]

Les règles de transfert structurel réalisent des transformations dans le texte désambiguïsé, ce qui est nécessaire à cause des divergences grammaticales, syntaxiques et lexicales entre les deux langues concernées (des changements de genre et de nombre qui assurent un accord dans la langue d'arrivée, la mise en ordre des mots, des changements des prépositions, etc.). Les règles détectent des motifs (séquences) dans les formes lexicales du texte de départ et leur appliquent les transformations correspondantes. Le module détecte par lecture le motif le plus long gauche-droite; par exemple, la phrase « the big cat » sera détectée et traitée par la règle pour déterminant – adjectif – nom et non pas par la règle pour déterminant – adjectif, car le premier modèle est le plus long. Si deux motifs ont la même longueur, la règle appliquée est celle qui est définie en premier.

Le module de transfert structurel (généré à partir du fichier des règles de transfert structurel) appelle le module de transfert lexical (généré à partir du dictionnaire bilingue) pendant tout le processus pour déterminer les équivalents dans la langue d'arrivée à partir des formes lexicales de la langue de départ.

Les règles de transfert structurel sont comprises dans un fichier XML, chacune pour chaque direction de traduction (par exemple, pour la traduction de l'espagnol au catalan, le fichier est apertium-es-ca.trules-es-ca.xml). Vous devez éditer ce fichier si vous voulez ajouter ou modifier des règles de transfert.

Les règles ont un motif et une partie d'action. Le motif précise quelles séquences des formes lexicales doivent être détectées et traitées. L'action décrit les vérifications et les transformations qui doivent être faites dans leurs constituants. Les opérations de transformation les plus courantes (telles que l'accord de genre et de nombre) sont définies dans une macro-instruction qui est appelée à l'intérieur de la règle. À la fin de la partie de l'action de la règle, les formes lexicales résultantes de la langue d'arrivée sont envoyées afin qu'elles soient traitées par les modules suivants dans le système de traduction.

Un fichier de règles de transfert contient quatre sections avec les définitions des éléments utilisés dans les règles, et une cinquième section où les règles actuelles sont définies. Les sections sont les suivantes :

  • <section-def-cats> : Cette section contient la définition des catégories qui seront utilisées dans les motifs des règles (c'est-à-dire, le type des formes lexicales qui sera détecté par une règle quelconque). En ce qui concerne la règle présentée ci-dessous, les catégories « det » et « nom » (déterminant et nom) doivent être définies ici. Les catégories sont définies en précisant les symboles grammaticaux correspondantes aux formes lexicales. Un astérisque montre qu'un ou plusieurs symboles suivent ceux qui ont été précisés. L'exemple suivant est la définition de la catégorie « det », qui groupe les déterminants et les pré-déterminants dans la même catégorie, car ils jouent le même rôle dans les objectifs de transfert :
                          <def-cat n="det">         
                                    <cat-item tags="det.*"/>
                                    <cat-item tags="predet.*"/>
                          </def-cat>

Il est aussi possible de définir un lemme quelconque comme une catégorie. Comme ce qui suit pour la préposition "en" :

                          <def-cat n="en">
                                    <cat-item lemma="en" tags="pr"/>
                          </def-cat>
  • <section-def-attrs> : Cette section contient la définition des attributs qui seront utilisés à l'intérieur des règles, dans la partie d'action. Vous avez besoin des attributs pour toutes les catégories définies à la section précédente, lorsqu'ils vont être utilisés dans la partie d'action de la règle (pour les vérifier ou pour les envoyer à la fin de la règle), ainsi que pour les autres attributs nécessaires dans la règle (tels que le genre et le nombre). Les attributs doivent être définis en utilisant leur symboles grammaticaux correspondants et ils ne peuvent pas avoir des astérisques; leur nom doit être unique. L'exemple suivant montre les définitions pour les attributs « a_det » (pour les déterminants) et « gen » (pour le genre) :
                           <def-attr n="a_det">         
                                    <attr-item tags="det.def"/>
                                    <attr-item tags="det.ind"/>
                                    <attr-item tags="det.dem"/>
                                    <attr-item tags="det.pos"/>
                                    <attr-item tags="predet"/>
                           </def-attr>

                           <def-attr n="gen">         
                                    <attr-item tags="m"/>
                                    <attr-item tags="f"/>
                                    <attr-item tags="mf"/>
                                    <attr-item tags="nt"/>
                                    <attr-item tags="GD"/>
                           </def-attr>
  • <section-def-vars> : Cette section contient la définition des variables utilisées dans les règles.
                          <def-var n="interrogativa"/>
  • <section-def-macros> : Les macro-instructions sont définies ici. Elles contiennent les séquences de code fréquemment utilisées dans les règles; de cette façon, les linguistes ne doivent pas écrire plusieurs fois les mêmes actions. Il y a, par exemple, des macro-instructions pour les opérations d'accord de genre et de nombre.
  • <section-rules> : Dans cette section les règles de transfert structurel sont écrites.

L'exemple suivant montre une règle qui détecte la séquence déterminant – nom :

<rule>
      <pattern>
          <pattern-item n="det"/>
          <pattern-item n="nom"/>
      </pattern>
      <action>
          <call-macro n="f_concord2">
              <with-param pos="2"/>
              <with-param pos="1"/>
          </call-macro>    
          <out>    
              <lu>
                  <clip pos="1" side="tl" part="whole"/>
              </lu>
              <b pos="1"/>       
              <lu>
                  <clip pos="2" side="tl" part="whole"/>
              </lu> 
          </out>     
     </action>
</rule>

Une partie de l'action effectuée dans ce motif est précisée dans la macro-instruction « f_concord2 » et définie à la <section-def-macros>. Cela réalise des opérations d'accord de genre et de nombre : s'il y a un changement de genre ou de nombre entre la langue de départ et la langue d'arrivée (en ce qui concerne le nom), le déterminant change son genre ou son nombre convenablement; en outre, si le genre ou le nombre sont indéterminés (« GD » ou « ND », ce qui est expliqué à la section précédente « Comment ajouter des mots dans les dictionnaires monolingues et bilingues »), le nom reçoit la valeur de genre et de nombre correct du déterminant précédent. Dans les systèmes Apertium es-ca, es-gl et es-pt, il y a des macro-instructions d'accord définies pour une, deux, trois ou quatre unités lexicales (f_concord1, f_concord2, f_concord3, f_concord4). Lorsque dans une règle les macro-instructions sont appelées, il doit être précisé quelle est l'unité lexicale principale (celle qui détermine convenablement le genre et le nombre des autres unités lexicales) et quelles unités lexicales du motif doivent être incluses dans les opérations d'accord, par ordre d'importance. Cela est fait avec l'élément <with-param pos=""/>. Dans la règle précédente, l'unité lexicale principale est le nom (position « 2 » dans le motif) et la seconde est le déterminant (position « 1 » dans le motif).

Après avoir fait les actions pertinentes, les formes lexicales résultantes sont envoyées à l'élément <out>. Chaque unité lexicale est définie avec un <clip>. Ses attributs signifient :

  • pos : fait référence à la position de la forme lexicale dans le motif. « 1 » est la première forme lexicale (le déterminant) et « 2 » la seconde (le nom).
  • side : indique si la forme lexicale est dans la langue de départ (« sl ») ou dans la langue d'arrivée (« tl »). Bien entendu, les mots sont toujours envoyés dans la langue d'arrivée; les formes lexicales de la langue de départ peuvent être nécessitées dans une règle, lorsqu'on teste ses attributs ou ses caractéristiques.
  • part : indique quelle partie de la forme lexicale est concernée dans le 'clip'. Vous pouvez utiliser quelques valeurs prédéfinies :
                       -whole : la forme lexicale en entier (lemme et symboles grammaticaux). Utilisé seulement lorsque l'unité lexicale est envoyée  (dans un élément <out>).
                       -lem : le lemme de l'unité lexicale.
                       -lemh : la tête du lemme d'un multi-mot avec une inflexion interne.
                       -lemq : la queue du lemme d'un multi-mot avec une inflexion interne.

En plus de ces valeurs prédéfinies, vous pouvez utiliser tout attribut défini à <section-def-attrs> (par exemple « gen » ou « a_det »).

Les valeurs « lemh » et « lemq » sont utilisés lorsque des multi-mots avec une inflexion interne sont envoyés (voyez la section « Comment ajouter des multi-mots ») pour placer la tête et la queue du lemme dans la position correcte, car le module précédent a changé de place la queue juste après la tête du lemme à cause des plusieurs raisons. Dans la pratique, sur notre système, cela signifie que vous devez utiliser ces valeurs au lieu de 'whole' lorsque des verbes sont envoyés, car dans nos dictionnaires des multi-mots avec une inflexion interne il y a toujours des verbes. Si vous utilisez la valeur 'whole' lorsqu'ils sont envoyés, le multi-mot ne serait pas bien formé (la tête et la queue du lemme n'aurait pas la position correcte)

Par conséquent, une règle ayant un verbe dans son motif doit envoyer les formes lexicales comme dans les deux exemples suivants :

<rule>
       <pattern>
           <pattern-item n="verb"/>
       </pattern>
       <action>
           <out>               
              <lu>
                  <clip pos="1" side="tl" part="lemh"/>
                  <clip pos="1" side="tl" part="a_verb"/>
                  <clip pos="1" side="tl" part="temps"/>
                  <clip pos="1" side="tl" part="persona"/>
                  <clip pos="1" side="tl" part="gen"/>
                  <clip pos="1" side="tl" part="nbr"/>
                  <clip pos="1" side="tl" part="lemq"/>
              </lu>       
          </out>
       </action>
</rule>

<rule>
      <pattern>
         <pattern-item n="verb"/>
         <pattern-item n="prnenc"/>
      </pattern>
      <action>
         <out>
             <mlu>
                <lu>
                   <clip pos="1" side="tl" part="lemh"/>
                   <clip pos="1" side="tl" part="a_verb"/>
                   <clip pos="1" side="tl" part="temps"/>
                   <clip pos="1" side="tl" part="persona"/>
                   <clip pos="1" side="tl" part="nbr"/>
                </lu>
                <lu>
                   <clip pos="2" side="tl" part="lem"/>
                   <clip pos="2" side="tl" part="a_prnenc"/>
                   <clip pos="2" side="tl" part="persona"/>
                   <clip pos="2" side="tl" part="gen"/>
                   <clip pos="2" side="tl" part="nbr"/>
                   <clip pos="1" side="tl" part="lemq"/>
               </lu> 
            </mlu>
         </out>
      </action>
</rule>

La première règle détecte un verbe et place la queue dans la position correcte, après cela, les symboles grammaticaux. L'unité lexicale est envoyée tout en précisant les attributs séparément : tête du lemme, catégorie lexicale (verbe), temps, personne, genre (pour les participes), nombre et queue du lemme.

La seconde règle détecte un verbe suivi d'un pronom enclitique et envoi les deux formes lexicales en précisant également les attributs séparément; la première unité lexicale est constituée de : tête du lemme, catégorie lexicale (verbe), temps, personne et nombre; la seconde unité lexicale est constituée de : lemme, catégorie lexicale (pronom enclitique), personne, genre, nombre et queue du lemme. Les deux unités lexicales (verbe et pronom enclitique) sont envoyés à l'élément <mlu>, car ils doivent atteindre le générateur morphologique comme une unité multi lexicale (multi-mot).

Si vous voulez ajouter une nouvelle règle de transfert, vous devez suivre ces étapes :

  1. Précisez le motif que vous voulez détecter. Rappelez-vous que les mots sont traités seulement une fois par règle et que celles-ci sont traités gauche-droite en prenant la séquence la plus longue. Par exemple, imaginez que vous avez dans votre fichier des règles de transfert seulement deux règles, l'une pour le motif « déterminant - nom » et l'autre pour le motif « nom - adjectif ». La phrase espagnole « el valle verde » (la vallée verte) serait détectée et traitée pour la première règle et non pas par la seconde. Vous devrez ajouter une règle pour le motif « déterminant – nom - adjectif » si vous souhaitez que les trois unités lexicales soient traitées dans le même motif.
  2. Décrivez les opérations que vous voulez réaliser dans le motif. Sur Apertium es-ca, es-gl and es-pt, des opérations d'accord simple (accord de genre et de nombre) sont faciles à réaliser dans une règle moyennant une macro-instruction. Pour faire d'autres opérations, vous devez utiliser des éléments plus compliqués; pour une description plus détaillée du langage employé pour créer des règles, consultez la section 3.4.2 de la documentation du système. Vous pouvez également lire la DTD du fichier des règles de transfert structurel (transfer.dtd) fournie avec le paquet Apertium, dans lequel tous les éléments du langage sont décrits en anglais.
  3. Envoyez les unités lexicales du motif à la langue d'arrivée dans l'élément <out>. Chaque unité lexicale doit être incluse dans l'élément <lu>. Si deux ou plusieurs unités doivent être générées comme une unité multi lexicale (seulement pour les pronoms enclitiques dans les paires de langues traitées jusqu'à présent), elles doivent être groupées dans l'élément <mlu>.

Tous les mots détectés par une règle (qui font partie du motif) doivent être envoyés à la fin de la règle pour que le module suivant (le générateur) les reçoive. Si une unité lexicale est détectée pour un motif et qu'elle n'est pas incluse dans l'élément <out>, elle ne sera pas générée.

Comment ajouter des données dans le tagger de la partie du discours[edit]

À écrire.

Entraînement du tagger de la partie du discours[edit]

Article principal : Entraînement d'un tagueur

À écrire.

Détection des erreurs[edit]

Il est facile de commettre des erreurs au moment d'ajouter des nouveaux mots ou des règles de transfert dans le système d'Apertium.

Il est possible qu'au moment de compiler des nouveaux fichiers, le système affiche un message d'erreur. Dans ce cas, c'est une erreur d'usage (l'oubli d'une étiquette XML, une étiquette qui n'est pas permise dans un certain contexte, etc.). Vous n'avez qu'à aller au numéro de ligne indiqué pour le message d'erreur, corriger l'erreur et compiler à nouveau. D'autres types d'erreurs ne sont pas détectés au moment de la compilation, mais cela peut faire que le système ne traduise pas bien un mot ou qu'il donne une séquence textuelle incompréhensible. Il y a des erreurs linguistiques qui peuvent être détectées et corrigées à l'aide des conseils donnés dans ce chapitre. L'information suivante est pour les utilisateurs de Linux, car, pour le moment, Apertium ne travaille qu'avec cet OS.

Comme toutes les données traitées par le système, depuis le texte de départ vers le texte d'arrivée, circulent parmi les huit modules du système en format texte, il est possible d'arrêter le flux de texte à tout moment afin de savoir les entrées et les sorties des données d'un certain module. Vous n'avez qu'à taper les commandes correctes dans le terminal en utilisant une structure pipeline pour que la sortie standard d'un module soit utilisée comme l'entrée du module suivant.

En utilisant les commandes echo ou cat, vous pouvez envoyer un texte dans un ou plusieurs modules pour analyser leurs sorties et détecter ainsi l'origine de l'erreur. Vous devez aller au répertoire où les données linguistiques se sont gardées et taper les commandes expliqués ci-dessous.

La sortie de l'analyseur morphologique[edit]

Pour savoir comment un mot est analysé par le traducteur, tapez l'exemple suivant dans le terminal (exemple du mot catalan « gener ») :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin

Vous pouvez remplacer ca-es par la direction de traduction que vous voulez tester.

La sortie à Apertium devrait être :

^gener/gener<n><m><sg>$^./.<sent>$[][]

La séquence structurelle est : ^word/lemma<morphological analysis>$. L'étiquette <sent> est l'analyse du point (arrêt complet), car toute fin de phrase est représentée par un point (arrêt complet) dans le système, que ce soit indiqué de façon explicite ou non dans la phrase.

L'analyse d'un mot inconnu est (en ignorant l'information d'arrêt complet) :

^genoma/*genoma$

et l'analyse d'un mot ambigu :

^casa/casa<n><f><sg>/casar<vblex><pri><p3><sg>/casar<vblex><imp><p2><sg>$

Chaque forme lexicale (lemme plus l'analyse morphologique) est présentée comme un analyse possible du mot « casa »

La sortie du tagger[edit]

Si vous voulez connaître la sortie du tagger pour le texte de la langue de départ, tapez l'exemple suivant dans le terminal (exemple pour la direction catalan-espagnol) :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob

La sortie sera :

^gener<n><m><sg>$^.<sent>$[][]

La sortie d'un mot ambigu sera comme l'exemple précédent, car le tagger choisi une forme lexicale. Par conséquent, la sortie de « casa » en catalan sera, par exemple (selon le contexte) :

^casa<n><f><sg>$^.<sent>$[][]

La sortie du pré-transfert[edit]

Ce module réalise quelques changements aux multi-mots (déplace la queue du lemme d'un multi-mot avec une inflexion interne juste après la tête du lemme) :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer

Comme « gener » n'est pas un multi-mot dans les dictionnaires, ce module ne change pas ses entrées.

La sortie du transfert structurel[edit]

Pour savoir comment une phrase ou un mot est traduit vers la langue d'arrivée et comment ils sont traitées par les règles de transfert structurel, tapez l'exemple suivant dans le terminal :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin

La sortie pour le mot catalan « gener » sera :

^enero<n><m><sg>$

Le fait d'analyser comment une phrase ou un mot est sorti de ce module peut vous aider à détecter des erreurs dans le dictionnaire bilingue ou dans les règles de transfert structurel. Les erreurs les plus courantes des dictionnaires bilingues sont : deux équivalents pour la même forme lexicale de la langue de départ, ou le mauvais choix des symboles morphologiques. Les erreurs provoquées par les règles de transfert structurel varient beaucoup selon les actions réalisées par les règles.

La sortie du générateur morphologique[edit]

Pour savoir comment un mot est généré par le système, tapez l'exemple suivant dans le terminal :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin

Avec cet ordre vous pouvez détecter des erreurs de génération dues à une entrée incorrecte dans le dictionnaire monolingue de la langue d'arrivée ou causées par la divergence entre la sortie du dictionnaire bilingue (la sortie du module précédent) et l'entrée du dictionnaire monolingue.

La sortie correcte pour l'entrée « gener » serait :

enero.[][]

Dans ce cas, il n'y a pas de symboles morphologiques et le mot apparaît infléchi.

La sortie du post-générateur[edit]

Il n'est pas très courant d'avoir des erreurs dues au post-générateur, grâce à sa petite taille et au fait qu'il est rarement modifié après l'ajout des combinaisons habituelles, mais vous pouvez aussi tester comment le texte de la langue de départ sort de ce module, en tapant :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin

La sortie finale[edit]

Vous pouvez mettre tous les modules du système dans une structure de pipeline et voir le passage du texte de la langue de départ par tous les modules et sa traduction vers la langue d'arrivée. Vous n'avez qu'ajouter le reformatter à l'ordre précédent :

$ echo "gener" | apertium-destxt | lt-proc ca-es.automorf.bin | apertium-tagger --tagger ca-es.prob | apertium-pretransfer | apertium-transfer trules-ca-es.xml trules-ca-es.bin ca-es.autobil.bin | lt-proc -g ca-es.autogen.bin | lt-proc -p ca-es.autopgen.bin | apertium-retxt

C'est le même que le shell script « apertium » fourni par le paquet Apertium :

$ echo "gener" | apertium -d . ca-es

(L'arrêt complet indique que le répertoire où les données linguistiques sont gardées).

Bien entendu, au lieu de taper toutes les commandes, qui ont été présentées, à chaque fois que vous avez besoin de tester une traduction, vous pouvez créer un shell script pour chaque action et l'utiliser pour tester la sortie de chaque module.

Exemples des erreurs

À écrire.

Comment générer un nouveau système Apertium à partir des données modifiées[edit]

Si vous faites des changements à chaque fichier des données linguistiques d'Apertium (les dictionnaires, les règles de transfert, le fichier ou les corpus du tagger, les dictionnaires de post-génération), les changements ne seront pas effectués jusqu'à ce que vous recompilez les modules. Pour le faire, tapez 'make' dans le répertoire où les données linguistiques sont sauvegardées (apertium-es-ca, apertium-es-gl ou autre) pour que le système génère des nouveaux fichiers binaires.

Si les changements ont été faits dans le fichier du tagger ou dans les corpus utilisés pour entraîner le tagger, vous aurez aussi besoin d'entraîner à nouveau le tagger. Dans le même répertoire mentionné ci-dessus, après avoir tapé 'make', tapez 'make train' afin d'effectuer l'entraînement.

Maintenant, le traducteur Apertium travaillera avec les données récemment ajoutées.

Voir aussi[edit]

Source[edit]