O Facebook está desenvolvendo o TransCoder para traduzir código de uma linguagem de programação para outra

Os engenheiros do Facebook publicaram um transcompilador Transcodificador, que usa técnicas de aprendizado de máquina para transformar o código-fonte de uma linguagem de programação de alto nível para outra. Atualmente, é fornecido suporte para tradução de código entre Java, C++ e Python. Por exemplo, TransCoder permite converter o código-fonte Java em código Python e o código Python em código-fonte Java. Desenvolvimentos de projetos estão sendo colocados em prática pesquisa teórica na criação de uma rede neural para transcompilação automática eficiente de código e espalhar licenciado sob uma licença Creative Commons Attribution-NonCommercial 4.0 apenas para uso não comercial.

A implementação do sistema de aprendizado de máquina é baseada em Pytorch. Dois modelos prontos são oferecidos para download: primeiro para traduzir C++ para Java, Java para C++ e Java para Python, e segundo para transmissão
C++ para Python, Python para C++ e Python para Java. Para treinar os modelos, utilizamos os códigos-fonte dos projetos postados no GitHub. Se desejar, podem ser criados modelos de tradução para outras linguagens de programação. Para verificar a qualidade da transmissão, foi preparada uma coleção de testes unitários, bem como um conjunto de testes que inclui 852 funções paralelas.

Alega-se que em termos de precisão de conversão, o TransCoder é significativamente superior aos tradutores comerciais que utilizam métodos baseados em regras de conversão e, no processo de trabalho, permite dispensar a avaliação especializada de especialistas no idioma de origem e de destino. A maioria dos erros que surgem durante a operação do modelo podem ser eliminados adicionando restrições simples ao decodificador para garantir que as funções geradas estejam sintaticamente corretas.

O Facebook está desenvolvendo o TransCoder para traduzir código de uma linguagem de programação para outra

Os pesquisadores propuseram uma nova arquitetura de rede neural “Transformer” para modelar sequências, na qual a recorrência é substituída por “atenção"(modelo seq2seq com atenção), que permite se livrar de algumas dependências no gráfico computacional e paralelizar o que antes não era passível de paralelização. Todos os idiomas suportados usam um único modelo comum, que é treinado usando três princípios: inicialização, modelagem de linguagem e tradução reversa.

O Facebook está desenvolvendo o TransCoder para traduzir código de uma linguagem de programação para outra

Fonte: opennet.ru

Adicionar um comentário