IBM Malfermas CodeNet por Maŝinlernado-Sistemoj kiuj Tradukas kaj Konfirmas Kodon

IBM rivelis sian CodeNet-iniciaton, kiu celas provizi esploristojn per datumaro kiu permesas al ili eksperimenti kun la uzo de maŝinlernado-teknikoj por krei programlingvo-tradukilojn, kodgenerantojn kaj analizilojn. CodeNet inkluzivas kolekton de 14 milionoj da kodaj ekzemploj, kiuj solvas 4053 oftajn programajn problemojn. Entute, la kolekto enhavas ĉirkaŭ 500 milionojn da linioj de kodo kaj kovras 55 programlingvojn, ambaŭ modernajn lingvojn kiel C++, Java, Python kaj Go, kaj heredajn lingvojn inkluzive de COBOL, Pascal kaj FORTRAN. La evoluoj de la projekto estas distribuitaj sub la licenco Apache 2.0, kaj la datenoj estas planitaj esti distribuitaj en la formo de publika havaĵo.

La ekzemploj estas komentitaj kaj efektivigas identajn algoritmojn en malsamaj programlingvoj. Estas atendite, ke la proponita aro helpos trejni maŝinlernajn sistemojn kaj evoluigi novigojn en la kampo de tradukado kaj maŝinkoda analizo, simile al kiel la ImageNet komentita bilddatumbazo helpis la evoluon de padronrekono kaj komputilvida sistemoj. Diversaj programaj konkursoj estas cititaj kiel unu el la ĉeffontoj de kolektoformado.

Male al tradiciaj tradukistoj, kiuj estas efektivigitaj surbaze de tradukreguloj, maŝinlernado-sistemoj povas kapti kaj konsideri la kuntekston de koda uzo. Kiam oni konvertas de unu programlingvo al alia, kunteksto estas same grava kiel kiam oni tradukas de unu homa lingvo al alia. Ĉi tiu manko de kunteksto-konsidero estas kio malhelpas kodon esti konvertita de heredaj lingvoj kiel ekzemple COBOL.

Havi grandan datumbazon de algoritmo-efektivigoj en malsamaj lingvoj helpos krei universalajn maŝinlernajn sistemojn kiuj, anstataŭ rekta traduko inter specifaj lingvoj, manipulas pli abstraktan reprezenton de la kodo, sendependa de specifaj programlingvoj. Tia sistemo povas esti uzata kiel tradukisto, tradukante la transdonitan kodon en iu ajn el la subtenataj lingvoj en sian internan abstraktan reprezenton, el kiu kodo povas esti generita en pluraj lingvoj.

La sistemo ankaŭ povos fari dudirektajn transformojn. Ekzemple, bankoj kaj registaraj agentejoj daŭre uzas projektojn en la malmoderna COBOL-lingvo. Maŝinlern-bazita tradukisto povos konverti COBOL-kodon en Java-reprezenton, kaj, se necese, traduki la Java fragmenton reen en COBOL-kodon.

Aldone al tradukado inter lingvoj, tiaj areoj de apliko de CodeNet kiel la kreado de inteligentaj kodaj serĉsistemoj kaj aŭtomatigo de klona detekto, same kiel la evoluo de optimumigiloj kaj aŭtomataj kodaj korektsistemoj estas menciitaj. Precipe, la ekzemploj prezentitaj en CodeNet estas ekipitaj per metadatenoj priskribantaj la rezultojn de agado-testado, la rezultan programgrandecon, memorkonsumon kaj staton, kio permesas al ni distingi ĝustan kodon de kodo kun eraroj (por distingi ĝustan kodon de malĝusta kodo, la kolekto specife inkluzivas ekzemplojn kun eraroj, kies parto estas 29.5 %. Maŝina lernadsistemo povas konsideri ĉi tiujn metadatenojn por generi la plej optimuman kodon aŭ por identigi regresojn en la analizita kodo (la sistemo povas kompreni, ke la algoritmo en la sendita kodo ne estas optimume efektivigita aŭ enhavas erarojn).

fonto: opennet.ru

Aldoni komenton