Ang Facebook ay bumubuo ng TransCoder upang isalin ang code mula sa isang programming language patungo sa isa pa

Ang mga inhinyero ng Facebook ay naglathala ng isang transcompiler TransCoder, na gumagamit ng mga diskarte sa pag-aaral ng makina upang baguhin ang source code mula sa isang mataas na antas ng programming language patungo sa isa pa. Sa kasalukuyan, ibinibigay ang suporta para sa pagsasalin ng code sa pagitan ng Java, C++ at Python. Halimbawa, pinapayagan ka ng TransCoder na i-convert ang Java source code sa Python code, at Python code sa Java source code. Ang mga pagpapaunlad ng proyekto ay isinasabuhay teoretikal na pananaliksik sa paglikha ng isang neural network para sa mahusay na awtomatikong transcompilation ng code at kumalat lisensyado sa ilalim ng lisensyang Creative Commons Attribution-NonCommercial 4.0 para sa hindi pangkomersyal na paggamit lamang.

Ang pagpapatupad ng machine learning system ay batay sa Pytorch. Dalawang yari na modelo ang inaalok para sa pag-download: muna para sa pagsasalin ng C++ sa Java, Java sa C++ at Java sa Python, at pangalawa para sa broadcast
C++ sa Python, Python sa C++ at Python sa Java. Upang sanayin ang mga modelo, ginamit namin ang mga source code ng mga proyektong naka-post sa GitHub. Kung nais, ang mga modelo ng pagsasalin ay maaaring gawin para sa iba pang mga programming language. Upang suriin ang kalidad ng broadcast, isang koleksyon ng mga unit test ang inihanda, pati na rin ang isang test suite na may kasamang 852 parallel functions.

Sinasabing sa mga tuntunin ng katumpakan ng conversion, ang TransCoder ay higit na nakahihigit sa mga komersyal na tagasalin na gumagamit ng mga pamamaraan batay sa mga panuntunan ng conversion, at sa proseso ng trabaho, pinapayagan ka nitong gawin nang walang ekspertong pagtatasa ng mga eksperto sa pinagmulan at target na wika. Karamihan sa mga error na lumitaw sa panahon ng pagpapatakbo ng modelo ay maaaring alisin sa pamamagitan ng pagdaragdag ng mga simpleng paghihigpit sa decoder upang matiyak na ang mga nabuong function ay syntactically tama.

Ang Facebook ay bumubuo ng TransCoder upang isalin ang code mula sa isang programming language patungo sa isa pa

Ang mga mananaliksik ay nagmungkahi ng isang bagong neural network architecture na "Transformer" para sa pagmomodelo ng mga pagkakasunud-sunod, kung saan ang pag-ulit ay pinapalitan ng "pansin"(seq2seq model na may pansin), na nagbibigay-daan sa iyong alisin ang ilang dependencies sa computational graph at iparallelize kung ano ang dati ay hindi pumapayag sa parallelization. Ang lahat ng sinusuportahang wika ay gumagamit ng isang karaniwang modelo, na sinanay gamit ang tatlong prinsipyo—pagsisimula, pagmomodelo ng wika, at pabalik na pagsasalin.

Ang Facebook ay bumubuo ng TransCoder upang isalin ang code mula sa isang programming language patungo sa isa pa

Pinagmulan: opennet.ru

Magdagdag ng komento