IBMk CodeNet irekitzen du kodea itzultzen eta egiaztatzen duten ikaskuntza automatikoko sistemetarako

IBMk bere CodeNet ekimena aurkeztu du, programazio-lengoaiaren itzultzaileak, kode-sortzaileak eta analizatzaileak sortzeko makina ikasteko tekniken erabilerarekin esperimentatzeko aukera ematen dien datu-multzo bat eskaintzea helburu duena. CodeNet-ek 14 ohiko programazio-arazo ebazten dituen 4053 milioi kode adibideko bilduma biltzen du. Guztira, bildumak 500 milioi kode lerro inguru ditu eta 55 programazio-lengoaia hartzen ditu, bai C++, Java, Python eta Go bezalako lengoaia modernoak, bai COBOL, Pascal eta FORTRAN barne. Proiektuaren garapenak Apache 2.0 lizentziapean banatzen dira, eta datu multzoak domeinu publiko moduan banatzea aurreikusi da.

Adibideak ohartarazita daude eta algoritmo berdinak ezartzen dituzte programazio-lengoaia ezberdinetan. Proposatutako multzoak ikaskuntza automatikoko sistemak trebatzen lagunduko duela eta itzulpengintzaren eta makina-kodeen analisiaren alorrean berrikuntzak garatzen lagunduko duela espero da, ImageNet-eko irudien datu-baseak ereduak ezagutzeko eta ordenagailu bidezko ikusmeneko sistemak garatzen lagundu duenaren antzera. Hainbat programazio-lehiaketa aipatzen dira bilduma osatzeko iturri nagusietako bat bezala.

Itzultzaile tradizionalek ez bezala, zeinak itzulpen-arauetan oinarrituta ezartzen diren, ikaskuntza automatikoko sistemek kodearen erabileraren testuingurua har dezakete eta kontuan hartu dezakete. Programazio-lengoaia batetik bestera bihurtzean, testuingurua giza hizkuntza batetik bestera itzultzean bezain garrantzitsua da. Testuingurua kontuan hartzeko falta hori da kodea COBOL bezalako lengoaia zaharretatik bihurtzea eragozten duena.

Lengoaia desberdinetan algoritmoen inplementazio datu-base handi bat izateak, hizkuntza zehatzen arteko itzulpen zuzenaren ordez, kodearen irudikapen abstraktuagoa manipulatzen duten makina-ikaskuntza sistema unibertsalak sortzen lagunduko du, programazio-lengoaia zehatzetatik independentea. Sistema hori itzultzaile gisa erabil daiteke, onartutako edozein hizkuntzatan transmititutako kodea bere barneko irudikapen abstraktura itzuliz, eta hortik kodea hizkuntza anitzetan sor daiteke.

Sistemak ere bi norabideko eraldaketak egiteko gai izango da. Adibidez, bankuek eta gobernu agentziek COBOL hizkuntza zaharkituan erabiltzen jarraitzen dute proiektuak. Ikaskuntza automatikoan oinarritutako itzultzaile batek COBOL kodea Java irudikapen bihurtzeko gai izango da, eta, behar izanez gero, Java zatia COBOL kodeara itzuli.

Hizkuntzen arteko itzulpenaz gain, CodeNet-en aplikazio-eremuak aipatzen dira, hala nola kode adimendunaren bilaketa-sistemak sortzea eta klonen detekzioaren automatizazioa, baita optimizatzaileen eta kode-zuzenketa automatikoaren sistemak garatzea ere. Hain zuzen ere, CodeNet-en aurkezten diren adibideek errendimendu proben emaitzak, ondoriozko programaren tamaina, memoria-kontsumoa eta egoera deskribatzen dituzten metadatuez hornituta daude, eta horri esker kode zuzena eta akatsak dituzten kodeak bereiz ditzakegu (kode zuzena eta kode okerra bereizteko, bildumak, zehazki, akatsak dituzten adibideak biltzen ditu, eta horien kuota % 29.5 da. Ikaskuntza automatikoko sistema batek metadatu hauek kontuan har ditzake koderik onena sortzeko edo analizatutako kodean erregresioak identifikatzeko (sistemak uler dezake bidalitako kodearen algoritmoa ez dagoela modu egokian inplementatuta edo akatsak dituela).

Iturria: opennet.ru

Gehitu iruzkin berria