Facebook kodni bir dasturlash tilidan boshqasiga tarjima qilish uchun TransCoder dasturini ishlab chiqmoqda

Facebook muhandislari transkompilyatorni nashr etishdi TransCoder, bu manba kodini bir yuqori darajadagi dasturlash tilidan boshqasiga aylantirish uchun mashinani o'rganish usullaridan foydalanadi. Hozirda Java, C++ va Python o'rtasida kodni tarjima qilish uchun yordam ko'rsatilmoqda. Masalan, TransCoder Java manba kodini Python kodiga va Python kodini Java manba kodiga aylantirish imkonini beradi. Loyiha ishlanmalari amaliyotga tatbiq etilmoqda nazariy tadqiqotlar kodni samarali avtomatik transkompilyatsiya qilish uchun neyron tarmog'ini yaratish bo'yicha va tarqaldi faqat notijorat maqsadlarda foydalanish uchun Creative Commons Attribution-NonCommercial 4.0 litsenziyasi ostida litsenziyalangan.

Mashinani o'rganish tizimini joriy etish Pytorchga asoslangan. Yuklab olish uchun ikkita tayyor model taklif etiladi: birinchi C++ tilini Java-ga, Java-ni C++-ga va Java-ni Python-ga tarjima qilish uchun va ikkinchi efir uchun
C++-dan Python-ga, Python-dan C++-ga va Python-dan Java-ga. Modellarni o'rgatish uchun biz GitHub-da joylashtirilgan loyihalarning manba kodlaridan foydalandik. Agar so'ralsa, boshqa dasturlash tillari uchun tarjima modellari yaratilishi mumkin. Eshittirish sifatini tekshirish uchun birlik testlari to'plami, shuningdek, 852 parallel funktsiyalarni o'z ichiga olgan test to'plami tayyorlangan.

Ta'kidlanishicha, TransCoder konversiyaning aniqligi nuqtai nazaridan konversiya qoidalariga asoslangan usullardan foydalanadigan tijorat tarjimonlaridan sezilarli darajada ustundir va ish jarayonida u manba va maqsadli til bo‘yicha ekspertlarning ekspert bahosisiz bajarishga imkon beradi. Modelning ishlashi davomida yuzaga keladigan xatolarning ko'pchiligi yaratilgan funktsiyalarning sintaktik jihatdan to'g'ri bo'lishini ta'minlash uchun dekoderga oddiy cheklovlar qo'shish orqali bartaraf etilishi mumkin.

Facebook kodni bir dasturlash tilidan boshqasiga tarjima qilish uchun TransCoder dasturini ishlab chiqmoqda

Tadqiqotchilar ketma-ketliklarni modellashtirish uchun yangi "Transformer" neyron tarmog'i arxitekturasini taklif qilishdi, bunda takrorlanish "" bilan almashtiriladi.diqqat"(seq2seq modeli diqqat bilan), bu sizga hisoblash grafigidagi ba'zi bog'liqliklardan xalos bo'lishga va ilgari parallellashtirish uchun mos bo'lmagan narsalarni parallellashtirishga imkon beradi. Barcha qo'llab-quvvatlanadigan tillar bitta umumiy modeldan foydalanadi, u uchta printsipdan foydalangan holda o'qitiladi - ishga tushirish, tilni modellashtirish va orqaga tarjima.

Facebook kodni bir dasturlash tilidan boshqasiga tarjima qilish uchun TransCoder dasturini ishlab chiqmoqda

Manba: opennet.ru

a Izoh qo'shish