[PYTHON] Une introduction approximative à la bibliothèque de traduction automatique neuronale

introduction

La traduction anglais-japonais sera ajoutée à WMT, le plus grand atelier au monde sur la recherche en traduction automatique, à partir de 2020, DeepL soutiendra le japonais et l'attention portée à la traduction automatique en japonais augmente. Dans de telles circonstances, il peut y avoir des personnes qui souhaitent essayer ou apprendre le modèle de traduction automatique. Je suis aussi un amateur dans ce domaine, mais je souhaiterai peut-être l'utiliser à l'avenir. J'ai recherché par moi-même quel type de bibliothèque de traduction automatique est actuellement utilisé dans mes recherches. Je n'ai utilisé que Fairseq et l'ancien OpenNMT.

Quel type de bibliothèque est utilisé

Selon Findings de WMT2019, un concours de traduction automatique --Marian plus de 30%

Marian NMT Marian est un framework développé par l'équipe de traduction Microsoft. Puisqu'il est écrit en C ++, c'est très rapide. En termes de précision, WMT2019 a prouvé que le système de l'équipe Microsoft utilisant Marian se classe en haut dans diverses paires de langues.

Dans la mesure où l'exemple est vu, l'utilisation semble être un flux d'apprentissage en créant un fichier de vocabulaire avec la commande de Marian à partir du corpus tokenisé.

Pour installer la version GPU, préparez CMake 3.5.1, GCC / G ++ 5.4, Boost 1.65.1, CUDA 9.0 ou plus récent et faites-le (je l'ai fait sans rien savoir quand j'étais jeune) J'ai abandonné à cause de la mousse).

Malheureusement, je n'ai pas encore trouvé d'article japonais sur l'installation et l'utilisation de Marian. Lisez des documents et des didacticiels en anglais.

Fairseq Fairseq est une boîte à outils développée par Facebook AI. Ecrit en Pytorch, il est conçu pour être facile à développer, et il a l'impression d'être mis à jour régulièrement. En termes de précision, l'équipe Facebook a obtenu d'excellents résultats au WMT 2019. La vitesse est plus rapide si vous utilisez le mode FP16 (au départ c'était plus rapide que Marian, mais je pense avoir vu quelque part que la mise à jour a rendu Marian plus rapide).

Pour l'utiliser, utilisez un script de prétraitement dédié pour binariser le corpus et le vocabulaire avant l'entraînement. Au moment de l'inférence, l'instruction de test peut être entrée telle quelle sans être binarisée. Une de mes remerciements personnels est que les données d'entraînement binaires et le fichier de point de contrôle du modèle entraîné ne peuvent pas être écrasés par la commande Fairseq (elle s'arrête avec une erreur d'assersion). .. Il y a beaucoup de choses que je peux écrire sur Fairseq, mais je peux écrire un article par lui-même, et il y a d'autres articles japonais, donc je ne mentionnerai que ce niveau dans cet article. Il existe également un exemple officiel et il est très simple à utiliser.

L'installation est presque correcte tant que PyTorch fonctionne. Pour PyTorch, suivez le Officiel pour la méthode d'installation en fonction du système d'exploitation, du package et de la version CUDA.

OpenNMT OpenNMT est un outil développé par le groupe Harvard NLP et SYSTRAN. C'est la plus ancienne de celles introduites aujourd'hui. Il y avait une version Lua, mais il semble qu'elle s'est terminée lorsque la maintenance de Torch a été terminée. Actuellement, le développement de la version PyTorch (OpenNMT-py) et de la version TensorFlow (OpenNMT-tf) est en cours. Les fonctionnalités disponibles des deux sont assez différentes. En plus de la traduction automatique et de la modélisation du langage, l'image en texte, la parole en texte, la synthèse, la classification des séries et le marquage des séries sont également possibles.

Il est généralement utilisé comme processus d'apprentissage avec un prétraitement spécial.

Dans le passé, lorsque j'utilisais OpenNMT-py, je souffrais de la version de torchtext au moment de l'installation, et cela ne sauvegarde pas automatiquement le meilleur modèle en validation, alors sélectionnez le modèle en regardant le journal d'apprentissage au moment de l'inférence. J'étais insatisfait du besoin et ne connaissais pas les options et les paras élevés qui donneraient de l'exactitude. Je ne sais pas ce qui se passe maintenant. Il y a tellement d'articles japonais que vous voudrez peut-être vous y référer.

Tensor2Tensor T2T est une bibliothèque de jeux de données et d'apprentissage en profondeur développée par l'équipe Google Brain. Écrit en TensorFlow. Les autres bibliothèques présentées dans cet article ont la traduction automatique comme fonction principale, mais elles peuvent utiliser des modèles d'apprentissage en profondeur pour diverses tâches telles que la classification d'images et la génération d'images.

L'utilisation approximative est d'exécuter une commande de génération de données pour apprendre et déduire, mais il existe une option appelée --problem. Il s'agit d'une option permettant de spécifier le jeu de données à utiliser, plutôt que de simplement spécifier la tâche. Par conséquent, il est très facile d'expérimenter avec l'ensemble de données de référence existant, mais lorsque vous utilisez l'ensemble de données préparé par vous-même, vous devez définir une classe qui hérite de la classe appelée «Problème». C'est bien que cette spécification lie explicitement le modèle et les données (et la méthode de pré-traitement), mais je pense que d'autres bibliothèques sont supérieures en termes de facilité d'utilisation.

Il y a des articles japonais et Jupyter Notebook officiel, j'ai donc l'impression que les exemples sont substantiels. De plus, le service TensorFlow peut être utilisé, je me demande donc si ce sera le cas lors de l'utilisation d'un modèle d'apprentissage en profondeur en production.

Sockeye Framework Seq2Seq utilisant Apache MXNet (Incubation). L'utilisation semble être similaire à OpenNMT.

Je n'ai pas pu comprendre les fonctionnalités de cette bibliothèque en la regardant ... Je suis désolée que cela ressemble à un blog ...

fin

Je pense qu'il vaut mieux essayer d'en haut.

Recommended Posts

Une introduction approximative à la bibliothèque de traduction automatique neuronale
Présentation de la bibliothèque d'apprentissage automatique SHOGUN
Introduction à l'apprentissage automatique
Version gratuite de DataRobot! ?? Introduction à «PyCaret», une bibliothèque qui automatise l'apprentissage automatique
Introduction à l'architecture de traduction automatique par l'Université de Cambridge par l'application Slack Translation Kiara
J'ai essayé de comprendre attentivement la fonction d'apprentissage dans le réseau de neurones sans utiliser la bibliothèque d'apprentissage automatique (première moitié)
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
Introduction à l'apprentissage automatique à partir de Simple Perceptron
Une introduction à l'apprentissage automatique
Une super introduction à Linux
Super introduction à l'apprentissage automatique
Un mémorandum pour enregistrer la bibliothèque écrit en Hy dans PyPI
Comment faire une traduction japonais-anglais
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
Introduction à la rédaction de notes d'apprentissage automatique
Introduction à la bibliothèque de calcul numérique Python NumPy
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Avant l'introduction à l'apprentissage automatique. ~ Technologie requise pour l'apprentissage automatique autre que l'apprentissage automatique ~
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Une introduction légère à la détection d'objets
J'ai essayé de comprendre attentivement la fonction d'apprentissage dans le réseau de neurones sans utiliser la bibliothèque d'apprentissage automatique (deuxième moitié)
[Introduction à Python] Quelle est la différence entre une liste et un taple?
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
[Introduction à l'apprentissage automatique] Jusqu'à ce que vous exécutiez l'exemple de code avec chainer
Diverses méthodes pour créer numériquement la fonction inverse d'une certaine fonction Introduction
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Comment utiliser la bibliothèque "torchdiffeq" qui implémente le bloc ODE de Neural ODE
Prenons la version gratuite "Introduction à Python pour l'apprentissage automatique" en ligne jusqu'au 27/04
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
J'ai créé un konoha de bibliothèque qui fait passer le tokenizer à une belle sensation
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
Qu'est-ce qu'une bibliothèque en langage C? Quelles informations sont ouvertes au public?
Introduction à l'apprentissage automatique: fonctionnement du modèle
Comment créer un environnement de traduction sphinx
Enregistrez les étapes pour comprendre l'apprentissage automatique
Donner un titre à l'onglet ipywidgets
Super Introduction Arithmétique Bit Python
Une introduction à OpenCV pour l'apprentissage automatique
Réseau neuronal récursif: une introduction à RNN
Probablement l'introduction la plus simple à TensorFlow
Natural Language: Machine Translation Part2 - Transformateur de traduction automatique neurale
Une introduction à Python pour l'apprentissage automatique
Introduction à Machine Learning-Hard Margin SVM Edition-
Essayons la traduction automatique neuronale avec Transformer
Une introduction à l'orientation des objets - Donnez à un objet un enfant.
Introduction à la création d'IA avec Python! Partie 2 J'ai essayé de prédire le prix de l'immobilier dans la ville de Boston avec un réseau neuronal
9 étapes pour devenir un expert en apprentissage automatique dans les plus brefs délais [Entièrement gratuit]
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment calculer la volatilité d'une marque
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
Comment utiliser la bibliothèque C en Python
[Super introduction à l'apprentissage automatique] Découvrez les didacticiels Pytorch
Introduction à Python Préparons l'environnement de développement
Visualisez la couche interne du réseau neuronal