Facebook ontwikkel TransCoder om kode van een programmeertaal na 'n ander te vertaal

Facebook-ingenieurs het 'n transsamesteller gepubliseer Transkodeerder, wat masjienleertegnieke gebruik om bronkode van een hoëvlak-programmeertaal na 'n ander te transformeer. Tans word ondersteuning verskaf vir die vertaling van kode tussen Java, C++ en Python. Byvoorbeeld, TransCoder laat jou toe om Java-bronkode om te skakel na Python-kode, en Python-kode in Java-bronkode. Projekontwikkelings word in die praktyk toegepas teoretiese navorsing op die skep van 'n neurale netwerk vir doeltreffende outomatiese transkompilasie van kode en versprei gelisensieer onder 'n Creative Commons Attribution-NonCommercial 4.0-lisensie slegs vir nie-kommersiële gebruik.

Die implementering van die masjienleerstelsel is gebaseer op Pytorch. Twee klaargemaakte modelle word aangebied vir aflaai: 1 vir die vertaling van C++ na Java, Java na C++ en Java na Python, en 2 vir uitsending
C++ na Python, Python na C++ en Python na Java. Om die modelle op te lei, het ons die bronkodes van projekte gebruik wat op GitHub geplaas is. Indien verlang, kan vertaalmodelle vir ander programmeertale geskep word. Om die kwaliteit van die uitsending na te gaan, is 'n versameling eenheidstoetse voorberei, asook 'n toetsreeks wat 852 parallelle funksies insluit.

Daar word beweer dat in terme van omskakelingsakkuraatheid, TransCoder aansienlik beter is as kommersiële vertalers wat metodes gebruik wat op omskakelingsreëls gebaseer is, en in die proses van werk laat dit jou toe om sonder die deskundige beoordeling van kundiges in die bron- en doeltaal klaar te kom. Die meeste van die foute wat tydens die werking van die model ontstaan ​​kan uitgeskakel word deur eenvoudige beperkings by die dekodeerder by te voeg om te verseker dat die gegenereerde funksies sintakties korrek is.

Facebook ontwikkel TransCoder om kode van een programmeertaal na 'n ander te vertaal

Navorsers het 'n nuwe neurale netwerkargitektuur "Transformator" voorgestel vir die modellering van rye, waarin herhaling vervang word deur "aandag"(seq2seq model met aandag), wat jou toelaat om ontslae te raak van sommige afhanklikhede in die berekeningsgrafiek en paralleliseer wat voorheen nie vatbaar was vir parallelisering nie. Alle ondersteunde tale gebruik 'n enkele algemene model, wat opgelei word deur drie beginsels te gebruik - initialisering, taalmodellering en terugvertaling.

Facebook ontwikkel TransCoder om kode van een programmeertaal na 'n ander te vertaal

Bron: opennet.ru

Voeg 'n opmerking