Facebook бір бағдарламалау тілінен екіншісіне кодты аудару үшін TransCoder әзірлеуде

Facebook инженерлері транскомпиляторды шығарды TransCoder, ол бастапқы кодты бір жоғары деңгейлі бағдарламалау тілінен екіншісіне түрлендіру үшін машиналық оқыту әдістерін пайдаланады. Қазіргі уақытта Java, C++ және Python тілдері арасында кодты аударуға қолдау көрсетіледі. Мысалы, TransCoder Java бастапқы кодын Python кодына және Python кодын Java бастапқы кодына түрлендіруге мүмкіндік береді. Жобалық әзірлемелер тәжірибеге енгізілуде теориялық зерттеу кодты тиімді автоматты түрде транскомпиляциялау үшін нейрондық желіні құру бойынша және кеңейтіңіз тек коммерциялық емес мақсатта пайдалануға арналған Creative Commons Attribution-NonCommercial 4.0 лицензиясы бойынша лицензияланған.

Машиналық оқыту жүйесін енгізу Pytorch негізінде жасалған. Жүктеп алу үшін екі дайын модель ұсынылады: бірінші C++ тілін Java тіліне, Java тілін C++ тіліне және Java тілін Python тіліне аудару үшін және екіншісі тарату үшін
C++-ден Python-ға, Python-дан C++-ге және Python-дан Java-ға. Модельдерді үйрету үшін біз GitHub сайтында жарияланған жобалардың бастапқы кодтарын қолдандық. Қажет болса, басқа бағдарламалау тілдері үшін аударма үлгілерін жасауға болады. Трансляция сапасын тексеру үшін бірлік сынақтарының жинағы, сондай-ақ 852 параллельді функцияны қамтитын сынақ жинағы дайындалды.

Түрлендіру дәлдігі бойынша TransCoder конверсия ережелеріне негізделген әдістерді қолданатын коммерциялық аудармашылардан айтарлықтай жоғары және жұмыс процесінде ол бастапқы және аударма тілдегі сарапшылардың сараптамалық бағасынсыз жасауға мүмкіндік береді деп мәлімдейді. Модельдің жұмысы кезінде туындайтын қателердің көпшілігін дешифраторға қарапайым шектеулер қосу арқылы генерацияланған функциялардың синтаксистік дұрыстығын қамтамасыз ету арқылы жоюға болады.

Facebook бір бағдарламалау тілінен екіншісіне кодты аудару үшін TransCoder әзірлеуде

Зерттеушілер реттіліктерді модельдеу үшін жаңа нейрондық желі архитектурасын «Трансформатор» ұсынды, онда қайталану «назар«(seq2seq моделі назар аудара отырып), бұл есептеу графигіндегі кейбір тәуелділіктерден арылуға және бұрын параллельизацияға жарамсыз нәрсені параллельдеуге мүмкіндік береді. Қолдау көрсетілетін тілдердің барлығы бір жалпы үлгіні пайдаланады, ол үш принцип арқылы оқытылады: инициализация, тілді модельдеу және кері аудару.

Facebook бір бағдарламалау тілінен екіншісіне кодты аудару үшін TransCoder әзірлеуде

Ақпарат көзі: opennet.ru

пікір қалдыру