IBM membuka CodeNet untuk sistem pembelajaran mesin yang menerjemahkan dan memverifikasi kode

IBM telah meluncurkan inisiatif CodeNet, yang bertujuan untuk memberikan para peneliti kumpulan data yang memungkinkan mereka bereksperimen dengan penggunaan teknik pembelajaran mesin untuk membuat penerjemah bahasa pemrograman, pembuat kode, dan penganalisis. CodeNet mencakup kumpulan 14 juta contoh kode yang memecahkan 4053 masalah pemrograman umum. Secara total, koleksinya berisi sekitar 500 juta baris kode dan mencakup 55 bahasa pemrograman, baik bahasa modern seperti C++, Java, Python, dan Go, serta bahasa lawas termasuk COBOL, Pascal, dan FORTRAN. Perkembangan proyek didistribusikan di bawah lisensi Apache 2.0, dan kumpulan datanya rencananya akan didistribusikan dalam bentuk domain publik.

Contoh-contoh tersebut diberi anotasi dan mengimplementasikan algoritma yang identik dalam bahasa pemrograman yang berbeda. Rangkaian yang diusulkan ini diharapkan dapat membantu melatih sistem pembelajaran mesin dan mengembangkan inovasi di bidang penerjemahan dan penguraian kode mesin, serupa dengan bagaimana database gambar beranotasi ImageNet membantu pengembangan pengenalan pola dan sistem visi komputer. Berbagai kompetisi pemrograman disebut-sebut sebagai salah satu sumber utama pembentukan koleksi.

Berbeda dengan penerjemah tradisional, yang diterapkan berdasarkan aturan penerjemahan, sistem pembelajaran mesin dapat menangkap dan mempertimbangkan konteks penggunaan kode. Saat mengonversi dari satu bahasa pemrograman ke bahasa lain, konteks sama pentingnya dengan saat menerjemahkan dari satu bahasa manusia ke bahasa lain. Kurangnya pertimbangan konteks inilah yang mencegah konversi kode dari bahasa lama seperti COBOL.

Memiliki database implementasi algoritme yang besar dalam berbagai bahasa akan membantu menciptakan sistem pembelajaran mesin universal yang, alih-alih menerjemahkan langsung antar bahasa tertentu, memanipulasi representasi kode yang lebih abstrak, tidak bergantung pada bahasa pemrograman tertentu. Sistem seperti itu dapat digunakan sebagai penerjemah, menerjemahkan kode yang dikirimkan dalam bahasa apa pun yang didukung ke dalam representasi abstrak internalnya, yang darinya kode tersebut kemudian dapat dihasilkan dalam berbagai bahasa.

Sistem juga akan mampu melakukan transformasi dua arah. Misalnya, bank dan lembaga pemerintah terus menggunakan proyek dalam bahasa COBOL yang sudah ketinggalan zaman. Penerjemah berbasis pembelajaran mesin akan dapat mengubah kode COBOL menjadi representasi Java, dan, jika perlu, menerjemahkan fragmen Java kembali menjadi kode COBOL.

Selain terjemahan antar bahasa, bidang penerapan CodeNet seperti pembuatan sistem pencarian kode pintar dan otomatisasi deteksi klon, serta pengembangan pengoptimal dan sistem koreksi kode otomatis juga disebutkan. Secara khusus, contoh yang disajikan di CodeNet dilengkapi dengan metadata yang menjelaskan hasil pengujian kinerja, ukuran program yang dihasilkan, konsumsi memori dan status, yang memungkinkan kita membedakan kode yang benar dari kode yang memiliki kesalahan (untuk membedakan kode yang benar dari kode yang salah, koleksi secara khusus menyertakan contoh-contoh dengan kesalahan, yang porsinya adalah 29.5%). Sistem pembelajaran mesin dapat mempertimbangkan metadata ini untuk menghasilkan kode yang paling optimal atau untuk mengidentifikasi regresi dalam kode yang dianalisis (sistem dapat memahami bahwa algoritme dalam kode yang dikirimkan tidak diterapkan secara optimal atau mengandung kesalahan).

Sumber: opennet.ru

Tambah komentar