Facebook ûntwikkelet TransCoder om koade oer te setten fan de iene programmeartaal nei de oare

Facebook-yngenieurs hawwe in transcompiler publisearre TransCoder, dy't masine-learentechniken brûkt om boarnekoade te transformearjen fan de iene programmeartaal op heech nivo nei de oare. Op it stuit wurdt stipe levere foar it oersetten fan koade tusken Java, C++ en Python. Bygelyks, TransCoder lit jo Java-boarnekoade konvertearje yn Python-koade, en Python-koade yn Java-boarnekoade. Projektûntwikkelingen wurde yn 'e praktyk brocht teoretysk ûndersyk op it meitsjen fan in neural netwurk foar effisjinte automatyske transkompilaasje fan koade en fersprieding lisinsje ûnder in Creative Commons Attribution-NonCommercial 4.0-lisinsje foar net-kommersjeel gebrûk.

De ymplemintaasje fan it masine learsysteem is basearre op Pytorch. Twa ready-made modellen wurde oanbean foar download: earst foar it oersetten fan C ++ nei Java, Java nei C ++ en Java nei Python, en de twadde foar útstjoering
C++ nei Python, Python nei C++ en Python nei Java. Om de modellen te trenen, brûkten wy de boarnekoades fan projekten pleatst op GitHub. As jo ​​​​wolle, kinne oersettingsmodellen makke wurde foar oare programmeartalen. Om de kwaliteit fan 'e útstjoering te kontrolearjen, is in samling ienheidstests taret, lykas in testsuite dy't 852 parallelle funksjes omfettet.

It wurdt beweare dat TransCoder wat de konverzje-krektens oanbelanget signifikant superieur is oan kommersjele oersetters dy't metoaden brûke basearre op konverzjeregels, en yn it proses fan wurk kinne jo dwaan sûnder de saakkundige beoardieling fan saakkundigen yn 'e boarne en doeltaal. De measte flaters dy't ûntsteane tidens de wurking fan it model kinne wurde eliminearre troch it tafoegjen fan ienfâldige beheiningen oan 'e dekoder om te soargjen dat de oanmakke funksjes syntaktysk korrekt binne.

Facebook ûntwikkelet TransCoder om koade oer te setten fan de iene programmeartaal nei de oare

Ûndersikers hawwe foarsteld in nije neuronale netwurk arsjitektuer "Transformer" foar modellering sekwinsjes, wêryn weromkomst wurdt ferfongen troch "oandacht"(seq2seq-model mei oandacht), wêrtroch jo guon ôfhinklikens kinne kwytreitsje yn 'e berekkeningsgrafyk en parallelisearje wat earder net foar parallellisaasje oanwêzich wie. Alle stipe talen brûke ien mienskiplik model, dat wurdt oplaat mei trije prinsipes - inisjalisaasje, taalmodellering, en werom-oersetting.

Facebook ûntwikkelet TransCoder om koade oer te setten fan de iene programmeartaal nei de oare

Boarne: opennet.ru

Add a comment