Préparation pour utiliser les outils de transfert

From Apertium
Jump to navigation Jump to search

In English

Apertium-transfer-tools possède un répertoire d'exemples dans le paquet de sources, qui devrait être le premier endroit à chercher de l'information.

Les modèles d'alignement qu'on utilise sont similaires aux 'Factored Models' de Moses, si vous avez de l'expérience avec eux (http://www.statmt.org/moses/?n=Moses.FactoredModels)

Je devrais être net sur un point : il y a beaucoup de travail avant que vous puissiez utiliser Apertium-transfer-tools.

D'abord, vous avez besoin d'un corpus bilingue : les phrases alignées, une langue par fichier, une phrase par ligne. Je suppose que vous pouvez avoir ça.

C'est bin, sur ce point, assurez-vous que vous avez une compréhension claire de l'architecture complète d'Apertium.

En prenant ma phrase d'exemple, et en l'exécutant à travers la section Alpha testing avec 'Print intermediate representation' sélectionné :

Esta es Gloria, mi amiga argentina

lt-proc (mode d'analyse morphologique):
^Esta/Este<prn><tn><f><sg>/Este<det><dem><f><sg>$
^es/ser<vbser><pri><p3><sg>$
^Gloria/Gloria<n><f><sg>/Gloria<np><ant><f><sg>$^,/,<cm>$
^mi/mío<det><pos><mf><sg>$ ^amiga/amigo<adj><f><sg>/amigo<n><f><sg>$
^argentina/argentino<adj><f><sg>/argentino<n><f><sg>$

apertium-tagger:
^Este<prn><tn><f><sg>$ ^ser<vbser><pri><p3><sg>$
^Gloria<np><ant><f><sg>$^,<cm>$ ^mío<det><pos><mf><sg>$
^amigo<n><f><sg>$ ^argentino<adj><f><sg>$

apertium-pretransfer:
^Este<prn><tn><f><sg>$ ^ser<vbser><pri><p3><sg>$
^Gloria<np><ant><f><sg>$^,<cm>$ ^mío<det><pos><mf><sg>$
^amigo<n><f><sg>$ ^argentino<adj><f><sg>$

apertium-transfer:
^Prn<SN><tn><mf><sg>{^this<prn><tn><3><4>$}$
^verbcj<SV><vbser><pri><p3><sg>{^be<vbser><pri><p3><sg>$}$
^ant<SN><f><sg>{^Gloria<np><ant><f><sg>$}$^coma<cm>{^,<cm>$}$
^det_nom_adj<SN><f><sg>{^my<det><pos><sg>$ ^Argentinian<adj>$
^friend<n><3>$}$

apertium-interchunk:
^Prn<SN><tn><mf><sg>{^this<prn><tn><3><4>$}$
^verbcj<SV><vbser><pri><p3><sg>{^be<vbser><pri><p3><sg>$}$
^ant<SN><f><sg>{^Gloria<np><ant><f><sg>$}$^coma<cm>{^,<cm>$}$
^det_nom_adj<SN><f><sg>{^my<det><pos><sg>$ ^Argentinian<adj>$
^friend<n><3>$}$

apertium-postchunk:
^This<prn><tn><mf><sg>$ ^be<vbser><pri><p3><sg>$
^Gloria<np><ant><f><sg>$^,<cm>$ ^my<det><pos><sg>$ ^Argentinian<adj>$
^friend<n><sg>$

lt-proc (mode génération):
This is Gloria, my Argentinian friend

lt-proc (mode correction orthographique - inutilisé dans cet exemple):
This is Gloria, my Argentinian friend

Apertium-transfer-tools génère seulement l'entrée pour 'apertium-transfer' - tout le reste avant ce point (et après) doit être d'abord supporté : vous avez besoin d'un analyseur morphologique pour chaque langue impliquée - Je suppose que vous allez utiliser une paire d'analyseurs que nous possédons déjà.

Également; les règles qu'Apertium-transfer-tools génère sont pour le mode 'transfert seulement' d'apertium-transfer : cet exemple utilise le mode fragmenté - la plupart des paires de langues, sauf si les langues sont liées de manière *très* proche, seraient vraiment mieux servies avec le mode fragmenté. Convertir Apertium-transfer-tools pour supporter ça fait partie de ma liste de travail, et le faire proprement pourrait prendre du temps, je peux probablement avoir un(e) crufty (?), version hackée ensemble assez rapidement. Avec une paire de scripts sed scripts et une exécution supplémentaire de GIZA++ etc., on peut aussi générer des règles pour le module interchunk.

Ensuite, vous aurez probablement besoin de fichiers pour les baliseurs de partie de discours : Entraînement d'un tagueur, Le format TSX

Les versions plus récentes de CG ont un support (partiel) du format du flux Apertium. CG est un baliseur à usage général bien meilleur que celui d'Apertium, mais celui d'Apertium est plus rapide. De nouveau, le wiki d'Apertium possède quelque information : Contraintes grammaticales, Apertium et les contraintes grammaticales (vislcg3)

On a aussi quelques instructions pour convertir CG en TSX, pour la formation d'un tagger. Avec une grammaire CG suffisamment bonne, il devrait être possible d'utiliser le mode dentraînement supervisé' mode du tagger.

On a aussi besoin d'un dictionnaire bilingue. S'ils ne sont pas disponibles, on a des outils disponibles pour aider à les construire automatiquement : Crossdics comme je l'ai mentionné dans mon article, et l'outil ReTraTos qui peut construire des dictionnaires au format Apertium depuis les mêmes alignements générés par GIZA++ - la sortie devrait être vérifiée à la main, toutefois, puisqu'il peut sortir plusieurs entrées contestables, particulièrement avec les expressions multi-mot.

Le besoin pour le dictionnaire bilingue m'a semblé un peu étrange au début, mais le BDFL (? Apertium de Mikel, a expliqué que ça aide vraiment à réduire les mauvais alignements. Ça signifie probablement que Apertium-transfer-tools ne peut pas générer de règles pour des choses du polonais à l'anglais 'coraz piękniejsza' -> 'prettier and prettier' (de plus en plus élégant), mais je ne l'ai pas encore vérifié.

Jusque là, il y a toutes les choses qui sont nécessaires pour le traducteur. Ensuite, il y a deux types de fichiers spécifiques qui sont nécessaires pour Apertium-transfer-tools : un fichier 'atx', qui spécifie les mots lexicalisés, et deux fichiers 'ptx'. Il devrait être possible d'utiliser le fichier exemple .atx qu'on obtient avec Apertium-transfer-tools après avoir juste changé les identifieurs de la langue. Les fichiers .ptx sont utilisés pour spécifier les unités lexicales multiples. Pour l'espagnol, il y a des verbes avec des pronoms enclitiques : 'Dímelo' - 'Dis le moi' est analysé comme :

'^Dímelo/Decir<vblex><imp><p2><sg>+prpers<prn><enc><p1><mf><sg>+lo<prn><enc><p3><nt>/Decir<vblex><imp><p2><sg>+prpers<prn><enc><p1><mf><sg>+prpers<prn><enc><p3><m><sg>$'

dans l'autre sens, "John's dog"[1] devient "el perro de John" (le chien de John) - un simple ptx pour l'espagnol devrait ressembler à ça :

<?xml version="1.0" encoding="UTF-8"?>
<posttransfer>
<mlu>
  <lu tags="vblex.*"/>
  <lu tags="prn.enc.*"/>
  <lu tags="prn.enc.*"/>
</mlu>
</posttransfer>

et pour l'anglais, à ça :

<?xml version="1.0" encoding="UTF-8"?>unités lexicales multiples
<posttransfer>
<mlu>
  <lu tags="n.*"/>
  <lu tags="gen.*"/>
</mlu>
</posttransfer>

En parlant généralement vous pouvez trouver les balises pertinentes pour les unités lexicales multiples en cherchant avec grep les '<j/>' dans les analyseurs morphologiques.

Finalement (!), vous avez besoin d'un fichier modes; le fichier modes d'exemple peut être utilisé, en remplaçant les abréviations de langue.


[1] L'analyse de ceci est "^John/John<np><ant><m><sg>$^'s/'s<gen>$ ^dog/dog<n><sg>$" - le '+' est manquant ici parce que l'analyse s'arrête sur le caractère non-alphabétique ("'").