GitHub ir atklājis attīstību mašīnmācības izmantošanā koda meklēšanai un analīzei

GitHub ieviesa projekts CodeSearchNet, kas ir sagatavojis mašīnmācīšanās modeļus un datu kopas, kas nepieciešamas koda parsēšanai, klasificēšanai un analīzei dažādās programmēšanas valodās. CodeSearchNet, līdzīgs ImageNet, ietver lielu koda fragmentu kolekciju ar anotācijām, kas formalizē koda darbību. Apmācības modeļu komponenti un CodeSearchNet izmantošanas piemēri ir rakstīti Python, izmantojot Tensorflow ietvaru un izplata saskaņā ar MIT licenci.

Veidojot CodeSearchNet, tika izmantotas dabiskās valodas teksta parsēšanas tehnoloģijas, kas ļauj mašīnmācīšanās sistēmām ņemt vērā ne tikai sintaktiskās pazīmes, bet arī koda veikto darbību nozīmi. GitHub sistēma piemēro eksperimentos par semantiskā koda meklēšanas organizēšanu, izmantojot vaicājumus dabiskā valoda (piemēram, pieprasot “kārtot virkņu sarakstu”, tiek parādīts kods ar atbilstošo algoritmu ieviešanu).

Ierosinātajā datu kopā ir vairāk nekā 2 miljoni kodu komentāru saišu, kas sagatavotas, pamatojoties uz esošo atvērto bibliotēku avota tekstiem. Kods aptver atsevišķu funkciju vai metožu pilnu avota tekstu, un komentārā ir aprakstītas funkcijas veiktās darbības (tiek nodrošināta detalizēta dokumentācija). Pašlaik datu kopas ir sagatavotas Python, JavaScript, Ruby, Go, Java un PHP. Ir sniegti piemēri piedāvāto datu kopu izmantošanai dažāda veida neironu tīklu apmācībai, t.sk Neironu maiss-of-Words, RNN, Pašuzmanība (BERT) un 1D-CNN+Self-Attention Hybrid.

Lai izstrādātu dabiskās valodas meklēšanas mehānismus, papildus ir sagatavots CodeSearchNet Challenge komplekts, t.sk
99 tipisks vaicājumi ar aptuveni 4 tūkstošiem ekspertu anotāciju, kas apraksta visticamākos kodu saistījumus CodeSearchNet Corpus datu kopā, aptverot aptuveni 6 miljonus metožu un funkciju (iestatīts izmērs apmēram 20 GB). CodeSearchNet Challenge var kalpot kā etalons, lai novērtētu noteiktu dabiskās valodas koda meklēšanas metožu efektivitāti. Izmantojot rīkus KubeFlow sagatavots
piemērs kodu meklētājprogramma.

Avots: opennet.ru

Pievieno komentāru