Facebook développe TransCoder pour traduire le code d'un langage de programmation à un autre

Les ingénieurs de Facebook ont ​​publié un transcompilateur Transcodeur, qui utilise des techniques d'apprentissage automatique pour transformer le code source d'un langage de programmation de haut niveau à un autre. Actuellement, la traduction de code entre Java, C++ et Python est prise en charge. Par exemple, TransCoder vous permet de convertir le code source Java en code Python et le code Python en code source Java. Les développements du projet sont mis en pratique recherche théorique sur la création d'un réseau neuronal pour une transcompilation automatique efficace du code et propagé sous licence Creative Commons Attribution-NonCommercial 4.0 pour une utilisation non commerciale uniquement.

La mise en œuvre du système d'apprentissage automatique est basée sur Pytorch. Deux modèles prêts à l'emploi sont proposés en téléchargement : premier pour traduire C++ en Java, Java en C++ et Java en Python, et deuxième pour diffusion
C++ vers Python, Python vers C++ et Python vers Java. Pour entraîner les modèles, nous avons utilisé les codes sources des projets publiés sur GitHub. Si vous le souhaitez, des modèles de traduction peuvent être créés pour d'autres langages de programmation. Pour vérifier la qualité de la diffusion, une collection de tests unitaires a été préparée, ainsi qu'une suite de tests comprenant 852 fonctions parallèles.

On prétend qu'en termes de précision de conversion, TransCoder est nettement supérieur aux traducteurs commerciaux qui utilisent des méthodes basées sur des règles de conversion et, dans le processus de travail, il vous permet de vous passer de l'expertise d'experts dans la langue source et cible. La plupart des erreurs qui surviennent lors du fonctionnement du modèle peuvent être éliminées en ajoutant de simples restrictions au décodeur pour garantir que les fonctions générées sont syntaxiquement correctes.

Facebook développe TransCoder pour traduire le code d'un langage de programmation à un autre

Les chercheurs ont proposé une nouvelle architecture de réseau neuronal « Transformer » pour modéliser des séquences, dans laquelle la récurrence est remplacée par «attention"(modèle seq2seq avec attention), qui permet de se débarrasser de certaines dépendances dans le graphe informatique et de paralléliser ce qui ne se prêtait auparavant pas à la parallélisation. Tous les langages pris en charge utilisent un seul modèle commun, qui est entraîné selon trois principes : l'initialisation, la modélisation du langage et la rétro-traduction.

Facebook développe TransCoder pour traduire le code d'un langage de programmation à un autre

Source: opennet.ru

Ajouter un commentaire