Ismail Ben Alla

English-to-Arabic Translator

Traduction automatique par Transformer

TAL · oct. 2026 · Terminé

Un Transformer encodeur-décodeur écrit de zéro qui apprend la traduction de l'anglais vers l'arabe à partir de n'importe quel corpus parallèle.

Construit avecPyTorchCustom TransformersHugging Face TokenizersBeam searchHugging Face DatasetssacreBLEUpytest

English-to-Arabic Translator — vue d’ensemble

Présentation

La traduction automatique est la tâche pour laquelle le Transformer a été conçu, j'ai donc écrit le modèle encodeur-décodeur d'Attention Is All You Need en PyTorch pur, environ 150 lignes pour le modèle lui-même, et construit autour tout ce dont un système de traduction a besoin : préparation des données, tokenizer, entraînement, décodage et évaluation. L'anglais vers l'arabe est la paire par défaut, mais les codes de langue ne sont que des suffixes de fichiers.

Le modèle utilise des blocs résiduels pre-norm, un vocabulaire BPE partagé avec embeddings d'entrée et de sortie liés, et une attention par produit scalaire fusionnée avec masques de padding côté source et masques causaux côté cible. Le tokenizer est entraîné sur les données et gère n'importe quel alphabet, de sorte que l'arabe reste dans son ordre naturel sans aucune astuce d'inversion. L'entraînement comprend le lissage des labels, un schedule de warm-up, des batchs regroupés par longueur, l'accumulation de gradients, la reprise et des checkpoints autonomes ; le décodage est glouton par batch ou par recherche en faisceau avec pénalité de longueur ; l'évaluation rapporte BLEU et chrF avec sacreBLEU, plus le moyennage de checkpoints.

J'ai vérifié le pipeline de bout en bout sur un jeu de données jouet intégré : 2 000 paires synthétiques issues d'un lexique anglais de 16 mots traduites mot à mot en arabe. Un modèle de 0.95 M de paramètres entraîné pendant 1 500 pas CPU atteint BLEU 98.4 et chrF 99.0 sur 100 paires jamais vues. Cela prouve que le code fonctionne ; cela ne dit rien de la qualité de traduction réelle, qui exige un corpus tel qu'OPUS-100 et un GPU.

La question

Un Transformer compact et lisible, plus le pipeline complet qui l'entoure (nettoyage des données, tokenizer, entraînement, décodage, scoring), peut-il aller du texte parallèle brut jusqu'aux traductions sans aucune boîte noire ?

Fonctionnalités clés

Comment ça marche

  1. Préparer

    Les phrases sont nettoyées (filtres sur la longueur, le ratio de longueurs et les doublons), mélangées, découpées et utilisées pour entraîner un seul vocabulaire BPE pour les deux langues.

  2. Plonger

    Les identifiants de tokens passent par une seule table d'embeddings partagée par l'encodeur, le décodeur et la projection de sortie, mise à l'échelle par la racine carrée de la largeur et additionnée aux positions sinusoïdales.

  3. Encoder et décoder

    Les couches d'encodeur pre-norm construisent une mémoire de la source ; les couches du décodeur utilisent une auto-attention causale sur la cible produite jusque-là et une attention croisée sur cette mémoire.

  4. Entraîner

    Entropie croisée avec lissage des labels sur le token cible suivant, Adam avec le schedule de Noam, batchs regroupés par longueur jusqu'à un budget de tokens, et la meilleure perte de validation sauvegardée dans best.pt.

  5. Traduire et évaluer

    Décodage glouton pour la vitesse ou recherche en faisceau avec pénalité de longueur pour la qualité ; en2ar-evaluate note le split de test avec le BLEU de corpus et chrF.

Exemples

Entrée

en2ar-translate --checkpoint checkpoints/toy/best.pt --text "three red bird" --text "blue cat" --text "seven green dog one"

Sortie

ثلاثة أحمر طائر أزرق قطة سبعة أخضر كلب واحد

Sortie réelle du modèle jouet. La tâche jouet est mot à mot, la sortie est donc la traduction littérale attendue.

Entrée

en2ar-train --data-dir data/toy --preset small --max-steps 1500 --warmup-steps 200 --eval-every 500 --tokens-per-batch 1000 --device cpu && en2ar-evaluate --checkpoint checkpoints/toy/best.pt --beam-size 1

Sortie

val loss 0.092 (perplexity 1.10) at step 1000; test BLEU 98.4, chrF 99.0 greedy; BLEU 95.1, chrF 95.9 with beam size 4

Le run jouet du README : 0.95 M de paramètres, un vocabulaire de 155 tokens, 40 minutes sur un CPU chargé. La recherche en faisceau est ici légèrement en dessous du décodage glouton parce que la pénalité de longueur est réglée pour de vraies phrases.

Stack technique

Ce que j’ai appris

Limites

Mots-clés

traduction automatique · traduction automatique neuronale · NMT · anglais vers arabe · TAL arabe · Transformer · encodeur-décodeur · attention · de zéro · BPE · byte-pair encoding · recherche en faisceau · lissage des labels · BLEU · chrF · sacreBLEU · OPUS-100 · PyTorch · séquence à séquence