Facebook razvija TransCoder za prevođenje koda iz jednog programskog jezika u drugi

Inženjeri Facebooka objavili su transcompiler TransCoder, koji koristi tehnike strojnog učenja za transformaciju izvornog koda iz jednog programskog jezika visoke razine u drugi. Trenutno postoji podrška za prevođenje koda između Jave, C++ i Pythona. Na primjer, TransCoder vam omogućuje pretvaranje Java izvornog koda u Python kod, i Python koda u Java izvorni kod. Razvoj projekta se provodi u praksi teorijsko istraživanje o stvaranju neuronske mreže za učinkovitu automatsku transkompilaciju koda i širenje licenciran pod licencom Creative Commons Attribution-NonCommercial 4.0 samo za nekomercijalnu upotrebu.

Implementacija sustava strojnog učenja temelji se na Pytorchu. Za preuzimanje su ponuđena dva gotova modela: prvo za prevođenje C++ u Javu, Jave u C++ i Jave u Python, i drugi za emitiranje
C++ u Python, Python u C++ i Python u Javu. Za obuku modela koristili smo izvorne kodove projekata objavljenih na GitHubu. Po želji se mogu izraditi modeli prijevoda za druge programske jezike. Za provjeru kvalitete emitiranja pripremljena je zbirka unit testova, kao i testni paket koji uključuje 852 paralelne funkcije.

Tvrdi se da je u pogledu točnosti pretvorbe TransCoder znatno superiorniji od komercijalnih prevoditelja koji koriste metode temeljene na pravilima pretvorbe, au procesu rada omogućuje vam da bez stručne procjene stručnjaka za izvorni i ciljni jezik. Većina pogrešaka koje nastaju tijekom rada modela mogu se eliminirati dodavanjem jednostavnih ograničenja dekoderu kako bi se osiguralo da su generirane funkcije sintaktički ispravne.

Facebook razvija TransCoder za prevođenje koda iz jednog programskog jezika u drugi

Istraživači su predložili novu arhitekturu neuronske mreže "Transformer" za modeliranje sekvenci, u kojoj je ponavljanje zamijenjeno s "pažnja"(seq2seq model s pažnjom), koji vam omogućuje da se riješite nekih ovisnosti u računskom grafu i paralelizirate ono što prethodno nije bilo podložno paralelizaciji. Svi podržani jezici koriste jedan zajednički model koji se obučava pomoću tri principa—inicijalizacije, modeliranja jezika i povratnog prijevoda.

Facebook razvija TransCoder za prevođenje koda iz jednog programskog jezika u drugi

Izvor: opennet.ru

Dodajte komentar