Facebook está a desenvolver TransCoder para traducir código dunha linguaxe de programación a outra

Os enxeñeiros de Facebook publicaron un transcompilador TransCoder, que utiliza técnicas de aprendizaxe automática para transformar o código fonte dunha linguaxe de programación de alto nivel a outra. Actualmente, ofrécese soporte para traducir código entre Java, C++ e Python. Por exemplo, TransCoder permítelle converter código fonte Java en código Python e código Python en código fonte Java. Os desenvolvementos do proxecto estanse levando á práctica investigación teórica sobre a creación dunha rede neuronal para a transcompilación automática eficiente do código e espallamento licenciado baixo unha licenza Creative Commons Recoñecemento-NonComercial 4.0 só para uso non comercial.

A implementación do sistema de aprendizaxe automática baséase en Pytorch. Ofrécense dous modelos listos para descargar: primeiro para traducir C++ a Java, Java a C++ e Java a Python, e segundo para a emisión
C++ a Python, Python a C++ e Python a Java. Para adestrar os modelos, utilizamos os códigos fonte dos proxectos publicados en GitHub. Se o desexa, pódense crear modelos de tradución para outras linguaxes de programación. Para comprobar a calidade da emisión, preparouse unha colección de probas unitarias, así como unha suite de probas que inclúe 852 funcións paralelas.

Afirma que en termos de precisión de conversión, TransCoder é significativamente superior aos tradutores comerciais que usan métodos baseados en regras de conversión e, no proceso de traballo, permítelle prescindir da avaliación experta de expertos na lingua de orixe e destino. A maioría dos erros que xorden durante o funcionamento do modelo pódense eliminar engadindo restricións sinxelas ao decodificador para garantir que as funcións xeradas sexan sintácticamente correctas.

Facebook está a desenvolver TransCoder para traducir código dunha linguaxe de programación a outra

Os investigadores propuxeron unha nova arquitectura de rede neuronal "Transformador" para modelar secuencias, na que a recorrencia é substituída por "atención"(modelo seq2seq con atención), que permite desfacerse dalgunhas dependencias no gráfico computacional e paralelizar o que antes non era susceptible de paralelización. Todos os idiomas admitidos usan un único modelo común, que se adestra utilizando tres principios: inicialización, modelado de idiomas e tradución posterior.

Facebook está a desenvolver TransCoder para traducir código dunha linguaxe de programación a outra

Fonte: opennet.ru

Engadir un comentario