Facebook sedang membangunkan TransCoder untuk menterjemah kod daripada satu bahasa pengaturcaraan ke bahasa lain

Jurutera Facebook telah menerbitkan transcompiler TransCoder, yang menggunakan teknik pembelajaran mesin untuk mengubah kod sumber daripada satu bahasa pengaturcaraan peringkat tinggi kepada yang lain. Pada masa ini, sokongan disediakan untuk menterjemah kod antara Java, C++ dan Python. Sebagai contoh, TransCoder membolehkan anda menukar kod sumber Java kepada kod Python, dan kod Python ke kod sumber Java. Pembangunan projek sedang dipraktikkan penyelidikan teori untuk mencipta rangkaian neural untuk transkompilasi automatik kod dan sebar dilesenkan di bawah lesen Creative Commons Attribution-NonCommercial 4.0 untuk kegunaan bukan komersial sahaja.

Pelaksanaan sistem pembelajaran mesin adalah berdasarkan Pytorch. Dua model siap sedia ditawarkan untuk dimuat turun: pertama untuk menterjemah C++ ke Java, Java ke C++ dan Java ke Python, dan kedua untuk siaran
C++ kepada Python, Python kepada C++ dan Python kepada Java. Untuk melatih model, kami menggunakan kod sumber projek yang disiarkan di GitHub. Jika dikehendaki, model terjemahan boleh dibuat untuk bahasa pengaturcaraan lain. Untuk menyemak kualiti siaran, koleksi ujian unit telah disediakan, serta suite ujian yang merangkumi 852 fungsi selari.

Didakwa dari segi ketepatan penukaran, TransCoder jauh lebih unggul daripada penterjemah komersial yang menggunakan kaedah berdasarkan peraturan penukaran, dan dalam proses kerja ia membolehkan anda melakukannya tanpa penilaian pakar pakar dalam bahasa sumber dan sasaran. Kebanyakan ralat yang timbul semasa operasi model boleh dihapuskan dengan menambahkan sekatan mudah pada penyahkod untuk memastikan fungsi yang dihasilkan adalah betul dari segi sintaksis.

Facebook sedang membangunkan TransCoder untuk menterjemah kod daripada satu bahasa pengaturcaraan ke bahasa lain

Penyelidik telah mencadangkan seni bina rangkaian saraf baru "Transformer" untuk urutan pemodelan, di mana pengulangan digantikan dengan "perhatian"(model seq2seq dengan perhatian), yang membolehkan anda menyingkirkan beberapa kebergantungan dalam graf pengiraan dan menyelaraskan apa yang sebelum ini tidak dapat diterima oleh paralelisasi. Semua bahasa yang disokong menggunakan satu model biasa, yang dilatih menggunakan tiga prinsip—pemulaan, pemodelan bahasa dan terjemahan belakang.

Facebook sedang membangunkan TransCoder untuk menterjemah kod daripada satu bahasa pengaturcaraan ke bahasa lain

Sumber: opennet.ru

Tambah komen