GitHub адкрыў напрацоўкі па прымяненні машыннага навучання для пошуку і аналізу кода

GitHub прадставіў праект CodeSearchNet, у рамках якога падрыхтаваны мадэлі машыннага навучання і наборы даных, неабходныя для разбору, класіфікацыі і аналізу кода на розных мовах праграмавання. CodeSearchNet, па аналогіі з IMAGEnet, уключае вялікую калекцыю ўрыўкаў кода, забяспечаных анатацыямі, якія фармалізуюць выкананыя кодам дзеяння. Кампаненты для навучання мадэляў і прыклады выкарыстання CodeSearchNet напісаны на мове Python з выкарыстаннем фрэймворка Tensorflow і распаўсюджваецца пад ліцэнзіяй MIT.

Пры стварэнні CodeSearchNet скарыстаны тэхналогіі разбору тэксту на натуральнай мове, якія даюць магчымасць сістэмам машыннага навучання ўлічваць не толькі сінтаксічныя асаблівасці, але і сэнс выкананых кодам дзеянняў. У GitHub сістэма ўжываецца у эксперыментах па арганізацыі семантычнага пошуку кода з выкарыстаннем запытаў на натуральнай мове (напрыклад, пры запыце "сартаванне спісу радкоў" выводзіцца код з рэалізацыяй адпаведных алгарытмаў).

Прапанаваны набор дадзеных уключае больш за 2 млн звязкаў «код-каментар», падрыхтаваных на аснове зыходных тэкстаў існуючых адкрытых бібліятэк. Код ахоплівае поўны зыходны тэкст асобных функцый або метадаў, а каментар апісвае выкананыя функцыяй дзеянні (прыводзіцца дэталёвая дакументацыя). У цяперашні час наборы дадзеных падрыхтаваны для моў Python, JavaScript, Ruby, Go, Java і PHP. Прадстаўлены прыклады выкарыстання прапанаваных набораў дадзеных для навучання розных тыпаў нейронавых сетак, у тым ліку Neural-Bag-Of-Words, РНН, Self-Attention (BERT) і 1D-CNN+Self-Attention Hybrid.

Для развіцця механізмаў пошуку на натуральнай мове дадаткова падрыхтаваны набор CodeSearchNet Challenge, які ўключае
99 тыпавых запытаў з каля 4 тысячамі экспертных анатацый, якія апісваюць найбольш верагодныя прывязкі да кода ў наборы дадзеных CodeSearchNet Corpus, які ахоплівае каля 6 млн метадаў і функцый (памер набору каля 20 Гб). CodeSearchNet Challenge можа выступаць як эталон для адзнакі эфектыўнасці тых ці іншых метадаў пошуку кода на натуральнай мове. З выкарыстаннем інструментара KubeFlow падрыхтаваны
прыклад рухавічка для пошуку кода.

Крыніца: opennet.ru

Дадаць каментар