Facebook kehittää TransCoder-ohjelmaa kääntämään koodia ohjelmointikielestä toiseen

Facebookin insinöörit ovat julkaisseet muuntajan TransCoder, joka käyttää koneoppimistekniikoita lähdekoodin muuntamiseen korkean tason ohjelmointikielestä toiseen. Tällä hetkellä tukea tarjotaan koodin kääntämiseen Java, C++ ja Python välillä. Esimerkiksi TransCoderin avulla voit muuntaa Java-lähdekoodin Python-koodiksi ja Python-koodin Java-lähdekoodiksi. Hankekehitystä viedään käytäntöön teoreettinen tutkimus hermoverkon luomisesta koodin tehokkaaseen automaattiseen muuntamiseen ja levitän lisensoitu Creative Commons Attribution-NonCommercial 4.0 -lisenssillä vain ei-kaupalliseen käyttöön.

Koneoppimisjärjestelmän toteutus perustuu Pytorchiin. Kaksi valmista mallia tarjotaan ladattavaksi: ensimmäinen C++:n kääntämiseen Javaksi, Java:n C++:ksi ja Java Pythoniksi ja toinen lähetystä varten
C++:sta Pythoniin, Pythonista C++:han ja Pythonista Javaan. Mallien kouluttamisessa käytimme GitHubissa julkaistujen projektien lähdekoodeja. Haluttaessa voidaan luoda käännösmalleja muille ohjelmointikielille. Lähetyksen laadun tarkistamiseksi on laadittu kokoelma yksikkötestejä sekä testipaketti, joka sisältää 852 rinnakkaista toimintoa.

Väitetään, että muunnostarkkuuden suhteen TransCoder on huomattavasti parempi kuin kaupalliset kääntäjät, jotka käyttävät muunnossääntöihin perustuvia menetelmiä, ja työskentelyssä se mahdollistaa ilman lähde- ja kohdekielen asiantuntijoiden asiantuntija-arviota. Suurin osa mallin toiminnan aikana syntyvistä virheistä voidaan poistaa lisäämällä dekooderille yksinkertaisia ​​rajoituksia, joilla varmistetaan, että luodut funktiot ovat syntaktisesti oikein.

Facebook kehittää TransCoder-ohjelmaa kääntämään koodia ohjelmointikielestä toiseen

Tutkijat ovat ehdottaneet uutta neuroverkkoarkkitehtuuria "Transformer" sekvenssien mallintamiseen, jossa toistuminen korvataan "huomio"(seq2seq-malli huomiolla), jonka avulla voit päästä eroon joistakin riippuvuuksista laskennallisessa graafissa ja rinnastaa sen, mitä aiemmin ei voitu rinnastaa. Kaikki tuetut kielet käyttävät yhtä yhteistä mallia, jota opetetaan käyttämällä kolmea periaatetta – alustus, kielimallinnus ja paluukäännös.

Facebook kehittää TransCoder-ohjelmaa kääntämään koodia ohjelmointikielestä toiseen

Lähde: opennet.ru

Lisää kommentti