Facebook razvija TransCoder za prevajanje kode iz enega programskega jezika v drugega

Facebookovi inženirji so objavili transprevajalnik TransCoder, ki uporablja tehnike strojnega učenja za pretvorbo izvorne kode iz enega visokonivojskega programskega jezika v drugega. Trenutno je na voljo podpora za prevajanje kode med Javo, C++ in Python. TransCoder vam na primer omogoča pretvorbo izvorne kode Java v kodo Python in kodo Python v izvorno kodo Java. Razvoj projekta se izvaja v praksi teoretično raziskovanje o ustvarjanju nevronske mreže za učinkovito samodejno prevajanje kode in širjenje licenciran pod licenco Creative Commons Attribution-NonCommercial 4.0 samo za nekomercialno uporabo.

Izvedba sistema strojnega učenja temelji na Pytorchu. Za prenos sta na voljo dva že pripravljena modela: najprej za prevajanje C++ v Javo, Jave v C++ in Jave v Python ter Drugi za oddajo
C++ v Python, Python v C++ in Python v Javo. Za usposabljanje modelov smo uporabili izvorne kode projektov, objavljenih na GitHubu. Po želji lahko modele prevajanja izdelamo tudi za druge programske jezike. Za preverjanje kakovosti oddajanja je pripravljena zbirka enotnih testov ter testna zbirka, ki vključuje 852 vzporednih funkcij.

Trdi se, da je TransCoder glede natančnosti pretvorbe bistveno boljši od komercialnih prevajalcev, ki uporabljajo metode, ki temeljijo na pravilih pretvorbe, in v procesu dela vam omogoča, da delate brez strokovne ocene strokovnjakov v izvornem in ciljnem jeziku. Večino napak, ki nastanejo med delovanjem modela, je mogoče odpraviti z dodajanjem enostavnih omejitev dekoderju, ki zagotavljajo sintaktično pravilne generirane funkcije.

Facebook razvija TransCoder za prevajanje kode iz enega programskega jezika v drugega

Raziskovalci so predlagali novo arhitekturo nevronske mreže "Transformer" za modeliranje zaporedij, v kateri je ponavljanje nadomeščeno z "pozornost"(model seq2seq s pozornostjo), ki vam omogoča, da se znebite nekaterih odvisnosti v računskem grafu in vzporedite tisto, kar prej ni bilo mogoče vzporediti. Vsi podprti jeziki uporabljajo en sam skupni model, ki se usposablja po treh načelih – inicializaciji, jezikovnem modeliranju in povratnem prevajanju.

Facebook razvija TransCoder za prevajanje kode iz enega programskega jezika v drugega

Vir: opennet.ru

Dodaj komentar