Buidd yor nwn ‘Google Translate’ de qualité Machine Traduction System | par Adam Gitgey

Les mauvaises herbes ont besoin d’aller lancer des étapes de démarrage pour préparer les données de formation:
- Combiner: Clbine tous les fichiers texte anglais dans un fichier texte unique et massif. Lake Agwe, combinez tous les fichiers texte espagnols, machine Sreo pour garder toutes les phrases en thal afin que les fichiers anglais et espagnols correspondent toujours à UT.
- Mélanger: Randomiser l’ordre des phrases dans chaque fichier, tout en conservant les phrases dans les fichiers anglais et espagnol Dans l’ordre alatif. Le mélange de données de formation Ferme différents Siflers aidera le modèle à apprendre à traduire les données, et le SO.
- DIVISER: Divisez les fichiers de données de maître pour chaque langue en formation, développement et test de séparation. Nous entraînerons le modèle sur la majeure partie des données de formation, mais testerons le modèle et faire des tests et faire le test, il fonctionne. Cela garantit que le test du modèle en utilisant des phrases qui auront une durée de durcissement afin que nous ne puissions pas simplement mémoriser les correctifs corrects.
Manipuler des mots rares et nouveaux avec une ségmenation sitimored
Il n’est jamais possible pour les données d’adtration que la merde de Posicle n’en est passible de l’Ople Atse Ople atl. Pour aider notre système de traduction à gérer les mariés jamais vêtus, nous sommes gingp pour utiliser une approche appelée Segmentation suword.
SUPEORD Segmenation est qui nous Wevide Wed Instructor Fragments et enseigne le tragment du modèle de chaque mot. L’espoir est que si le modèle voit voit un WRD vu auparavant, il peut le moins tarasser à la pistolet des sous-mots du soleil des sous-mots.
Imaginez que nos données de formation contenaient les quartiers faible, le plus bas, plus récentet plus large. Nous avons cool diviser les quartiers en racines et suffixes:
- Racines: faible, Nouveau, wid
- Suffixes: HNE, er
Imaginez maintenant ce wery est venu pour traduire le quartier Le plus large. Même que ce quartier se mariait jamais dans les données de formation, le modèle saura comment traduire wid et HNEdonc en mettant ces deux traductions SUSS Sunword, ce sera ABL Le plus large moyens. Cela ne sera pas toujours parfait, mais il va bien dénoncer dans beaucoup de cas la traduction de la traduction de la traduction sur précis sur Moreall précis.
L’iplétation spécifique de la supposition de la sgistation supord sera utilisée par BPE, ou décoffage de paire d’octets. Vous pouvez lire comment cela fonctionne Dans le document de recherche original.
À l’hypothèque de BPE, nous devrons nous entraîner de la nouvelle étape de BPE STET dans notre modèle Nort NortS le modèle Trugs Thost BPE. Lake loin, nous devons ajouter un pas en devant le processus de dés-normalisation pour rejoindre les Ays en dernier terme par le modèle BPE.
L’ensemble du processus de téléchargement des données de formation, de la préparation, de création du modèle BPA et de formation du modèle de trapscation actuel avec Marian est tout en un seul spript. Pour lancer l’énergie, exécutez ainsi la commande:
cd ~/marian/marian-examples/spanish-to-english-translation/
./run-me.sh
Tu peux Regard de regarder le run-me.sh
rouleau pour voir ce qui se passe à chaque étape. C’est assez clair – il télécharge les données de formation, la combine, la normalise, les coups de pied du processus de formation des barreaux.
N’hésitez pas à remplacer ce script par votre propre IPLLEMENT si votre gingp pour construire l’âge de la production. Ce script n’est que le guide des étapes que vous ne parvoyez.
Une fois les données PRERPARD et que le modèle commence à s’entraîner, vous verrez la sortie de la chaux:
(2020-05-01 10:09:23) Ep. 1 : Up. 1000 : Sen. 154,871 : Cost 70.37619781 : Time 370.45s : 5024.86 words/s
Guide de ses abréviations:
- Ep. = Époque (nombre de passes sur l’ensemble des données de formation)
- En haut. = Mises à jour
- Sénateur = Phrases
Ce message dit Thai Turrely sur l’époque 1 (les premiers mots de passe sur les données de formation) et SI FAR, le modèle a ajouté 1000 fois la phrase Pains Proists Processe.
La valeur de coût de 70,3 vous indique à quel point le processus de formation du modèle a été loin de trouver un vieillissement d’une solution optimale. Un coût de 0,0 Woolns signifie que le modèle est parfait et alwats tourne une phrase espagnole dans la matslation parfaite dans les données de formation. Cela ne se produira jamais car le modèle ne sera jamais parfait une perfac et il n’y aura pas un seul correct. Mais plus le coût est bas, plus le processus de formation est limité.
Au fil du temps, la valeur des coûts devrait être en baisse et finalement la formation se terminera automatiquement. Sur mon système, le processus de formation se jette, mais peut-il se diriger vers un seul GPU et la quantité de truinto date que vous avez recueilli.
Le processus de formation va parfois valider le petit ensemble de scences qui ont été séparés à la ferme l’ensemble de formation. Il s’agit de faire de SRE que le mode du modèle fonctionne à Welt et Nott jusque les données de formation.
Lorsque la formation se conforme (après 1 à 2 jours), tous les fichiers du modèle seront enregistrés dans le /models/
Sous-dossier. Mesurer les fichiers ARR ce qui doit utiliser le modèle de traduction instantané Instant Program Nouveau Traduire de nouveau texte.
J’ai du temps pour ça. Puis-je télécharger votre modèle pré-formé à la place?
Si vous souhaitez passer à la prochaine étape Witet avec un it de 1-2, vous pouvez télécharger mon modèle pré-réniquement espagnol à anglais:
cd ~/marian/marian-examples/spanish-to-english-translation/wget https://github.com/ageitgey/spanish-to-english-translation/releases/download/0.1/model-spanish-to-english.tar.gztar -zxvf model-spanish-to-english.tar.gz
Maintenant pour la partie FIP – essayons notre nouveau système de traduction!
Pour traduire le texte, nous devons passer le texte Thing Thing Normalisation du texte Traduire traduire le texte, et la formation du texte de normalisation du texte Splate le texte, et le tractus du réseau de texte dirigeait le texte, et le formulaire de la normalisation du texte Splate le texte.
Parce que le modèle Marian est lui-même est-il-soi-même grand, l’une des étapes les plus lentes de la traduction est de laading du modèle Imo Kemory. Pour éviter ce retard, Marian peut s’exécuter en « mode serveur » où il reste en mémoire et longueur que vous vous demandez. Nous utiliserons le mode serveur.
Pour démarrer le serveur Marian, exécutez ces commandes dans la fenêtre du terminal:
cd ~/marian/marian-examples/spanish-to-english-translation/../../build/marian-server --port 8080 -c model/model.npz.best-translation.npz.decoder.yml -d 0 -b 12 -n1 --mini-batch 64 --maxi-batch 10 --maxi-batch-sort src
Cela indique au serveur d’écouter les connexions sur le port 8080 et d’utiliser la description du fichier du modèle dans le fichier modèle.npps.decoder.yml.
Remmmmeme que Marian Server ne gère que le tradlation Étape dans notre pipeline – il ne fait aucune normalisation de texte. Ce que vous faites, ne faites pas l’erreur de définir directement du texte brut et non normalisé au serveur Marian. Vous obtiendrez des résultats Territle si vous le faites! Le nouveau texte que nous traduisons doit correspondre exactement au format des données d’entraînement. Cela signifie que CA doit appliquer les mêmes étapes de normalisation du texte sur tout nouveau texte que nous traduisons.
Exécutons le script Python que j’ai fait qui transmet un exemple de texte. Avec le serveur Marian déjà en cours d’exécution, ouvrez une nouvelle fenêtre de terminal et exécutez ceci:
python3 translate_sentences_example.py
Pour l’instant, j’ai fait appeler le code Python aux mêmes perlifs inclus avec Mary pour normaliser les données de formation. Ce n’est pas super propre, mais ses œuvres. Si vous avez des aventuros ou vous souhaitez déployer cela en tant que proxes en pur python pour éviter et accélérer.
L’exemple de texte dans le script Python est le premier paragraphe de l’édition espagnole du premier roman de Harry Potter. Vous devriez obtenir une production, c’est Loks Lake ceci:
Input:
El niño que vivió.
El señor y la señora Dursley, que vivían en el número 4 de Privet Drive, estaban orgullosos de decir que eran muy normales, afortunadamente.Output:
The boy who lived.
Mr. and Mrs. Dursley, who lived at number 4 on Privet Drive, were proud to say they were very normal, fortunately.
They were the last people who would expect to find themselves related to something strange or mysterious, because they weren't for such nonsense.
Remarque: Si vous obtenez une «erreur, faites à SRE que vous ayez commencé la fenêtre Marian Server la fenêtre Marian Server Uter.
C’est comment notre traduction de Harry Potter se compare au livre original en anglais: