Facebook està desenvolupant TransCoder per traduir codi d'un llenguatge de programació a un altre

Els enginyers de Facebook han publicat un transcompilador TransCoder, que utilitza tècniques d'aprenentatge automàtic per transformar el codi font d'un llenguatge de programació d'alt nivell a un altre. Actualment, es proporciona suport per traduir codi entre Java, C++ i Python. Per exemple, TransCoder us permet convertir el codi font Java en codi Python i el codi Python en codi font Java. Els desenvolupaments del projecte s'estan posant en pràctica investigació teòrica sobre la creació d'una xarxa neuronal per a la transcompilació automàtica eficient del codi i propagació amb llicència de Creative Commons Reconeixement-NoComercial 4.0 només per a ús no comercial.

La implementació del sistema d'aprenentatge automàtic es basa en Pytorch. S'ofereixen dos models ja fets per descarregar: primer per traduir C++ a Java, Java a C++ i Java a Python, i segon per a la seva emissió
C++ a Python, Python a C++ i Python a Java. Per entrenar els models, hem utilitzat els codis font dels projectes publicats a GitHub. Si es desitja, es poden crear models de traducció per a altres llenguatges de programació. Per comprovar la qualitat de l'emissió, s'ha preparat una col·lecció de tests unitaris, així com una suite de proves que inclou 852 funcions paral·leles.

S'afirma que en termes de precisió de conversió, TransCoder és significativament superior als traductors comercials que utilitzen mètodes basats en regles de conversió i, en el procés de treball, us permet prescindir de l'avaluació experta d'experts en l'idioma d'origen i d'arribada. La majoria dels errors que sorgeixen durant el funcionament del model es poden eliminar afegint restriccions senzilles al descodificador per garantir que les funcions generades siguin sintàcticament correctes.

Facebook està desenvolupant TransCoder per traduir codi d'un llenguatge de programació a un altre

Els investigadors han proposat una nova arquitectura de xarxa neuronal "Transformer" per modelar seqüències, en la qual la recurrència es substitueix per "atenció"(model seq2seq amb atenció), que permet desfer-se d'algunes dependències en el gràfic computacional i paral·lelitzar allò que abans no era susceptible de paral·lelització. Tots els idiomes admesos utilitzen un únic model comú, que s'entrena mitjançant tres principis: inicialització, modelització d'idiomes i traducció posterior.

Facebook està desenvolupant TransCoder per traduir codi d'un llenguatge de programació a un altre

Font: opennet.ru

Afegeix comentari