Ismail Ben Alla

Bilingual Net

Traduction anglais ↔ darija

IA générative · avr. 2025 · Terminé

Un traducteur neuronal écrit de zéro entre l'anglais et la darija marocaine.

Construit avecPyTorchHugging Face TransformersStreamlitPoetry

Bilingual Net — vue d’ensemble

Présentation

La darija marocaine est parlée par des millions de personnes mais dispose de très peu de textes parallèles, si bien que la plupart des outils de traduction la gèrent mal. Je voulais savoir si un Transformer que j'aurais écrit moi-même, de bout en bout, pouvait apprendre des traductions exploitables à partir d'un petit corpus anglais–darija.

J'ai construit BIALinguaNet en PyTorch : un Transformer encodeur–décodeur complet avec des blocs d'attention résiduels pré-LayerNorm, une perte à lissage d'étiquettes et un décodeur qui prend en charge la température, le top-k, le top-p, la recherche en faisceau et la normalisation par la longueur. J'ai entraîné un checkpoint par direction (darija vers anglais et anglais vers darija) et intégré les deux dans une application Streamlit qui affiche des hypothèses de traduction classées.

Écrire chaque pièce moi-même — masquage, batching, décodage — m'a montré à quel point la qualité finale de la sortie dépend des choix de décodage plutôt que du réseau seul, surtout sur une langue à faibles ressources.

La question

Un Transformer seq2seq écrit de zéro peut-il traduire entre l'anglais et la darija marocaine, un dialecte à faibles ressources, avec une qualité exploitable ?

Fonctionnalités clés

Comment ça marche

  1. Tokeniser et regrouper en lots

    Les paires de phrases sont tokenisées avec un tokenizer GPT-2 étendu avec des tokens de padding, de début et de fin. Les lots sont regroupés par longueur de séquence sous un budget de tokens fixe, afin de gaspiller peu de calcul en padding.

  2. Encoder la source

    L'encodeur applique des blocs résiduels pré-LayerNorm d'auto-attention et de feed-forward sur la phrase source, en masquant les positions de padding.

  3. Décoder avec attention croisée

    Le décodeur applique une auto-attention masquée causalement, puis une attention croisée sur la sortie de l'encodeur. Ses embeddings de tokens et sa projection de sortie partagent leurs poids avec l'embedding de l'encodeur.

  4. Entraîner avec lissage d'étiquettes

    L'entraînement utilise une entropie croisée à lissage d'étiquettes, Adam avec une planification du taux d'apprentissage à warmup, et l'écrêtage de gradient.

  5. Chercher la meilleure traduction

    À l'inférence, la recherche en faisceau combinée à l'échantillonnage top-k/top-p et à la normalisation par la longueur produit des hypothèses classées, et la meilleure est affichée en premier.

Exemples

Vidéo de démonstration de l'application de traduction. (voir sur YouTube)
Darija vers anglais : les traductions par le modèle de 20 phrases de darija du quotidien (taille de faisceau 4, top-k 50, top-p 0.95).
Darija vers anglais : les traductions par le modèle de 20 phrases de darija du quotidien (taille de faisceau 4, top-k 50, top-p 0.95).
Anglais vers darija : de courtes phrases anglaises à gauche et la sortie en darija du modèle à droite. Les étiquettes affichées sont réutilisées de l'autre direction.
Anglais vers darija : de courtes phrases anglaises à gauche et la sortie en darija du modèle à droite. Les étiquettes affichées sont réutilisées de l'autre direction.

Entrée

bghit nji lmaghrib

Sortie

i want to come to morocco

Une paire darija-anglais tirée de la capture d'écran de traduction du dépôt.

Stack technique

Ce que j’ai appris

Limites