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. Пры жаданні мадэлі трансляцыі могуць быць створаны і для іншых моў праграмавання. Для праверкі якасці трансляцыі падрыхтавана калекцыя unit-тэстаў, а таксама тэставы набор, які ўключае 852 паралельныя функцыі.

Сцвярджаецца, што па дакладнасці пераўтварэння TransCoder значна пераўзыходзіць камерцыйныя транслятары, якія выкарыстоўваюць метады на аснове правіл пераўтварэнні, і падчас прац дазваляе абыйсціся без экспертнай адзнакі знаўцаў зыходнай і мэтавай мовы. Большую частку памылак, які ўзнікае пры працы мадэлі, атрымоўваецца ўхіліць праз даданне простых абмежаванняў у дэкадавальнік, якія дазваляюць гарантаваць, што генераваныя функцыі будуць сінтаксічна карэктныя.

Facebook развівае TransCoder для перакладу кода з адной мовы праграмавання на іншую

Даследнікамі прапанавана новая архітэктура нейронавай сеткі "Transformer" для мадэлявання паслядоўнасцяў, у якой рэкурэнтнасць заменена "увагай»(seq2seq model with attention), што дазваляе пазбавіцца ад некаторых залежнасцяў у вылічальным графе і распаралеліць тое, што раней не паддавалася распаралельванню. Для ўсіх падтрымліваемых моў прымяняецца адзіная агульная мадэль, пры трэніроўцы якой выкарыстоўваюцца тры прынцыпы — ініцыялізацыя, мадэляванне мовы і зваротны пераклад.

Facebook развівае TransCoder для перакладу кода з адной мовы праграмавання на іншую

Крыніца: opennet.ru

Дадаць каментар