GitHub proiect , în cadrul căruia au fost pregătite modele de învățare automată și seturi de date necesare pentru analizarea, clasificarea și analiza codului în diverse limbaje de programare. CodeSearchNet, similar cu , include o colecție vastă de fragmente de cod, însoțite de comentarii care formalizează acțiunile efectuate prin cod. Componentele pentru antrenarea modelelor și exemplele de utilizare a CodeSearchNet sunt scrise în Python, folosind cadrul Tensorflow și sub licența MIT.
În crearea CodeSearchNet au fost utilizate tehnologii de procesare a textului în limbaj natural, care permit sistemelor de învățare automată să țină cont nu doar de aspectele sintactice, ci și de semnificația acțiunilor efectuate prin cod. Pe GitHub, sistemul în experimentele de organizare a căutării semantice a codului utilizând interogări în (de exemplu, la interogarea "sortarea listei de șiruri" apare codul cu implementarea algoritmilor corespunzători).
Setul de date propus include peste 2 milioane de asocieri „cod-comentariu”, pregătite pe baza textelor sursă ale bibliotecilor deschise existente. Codul acoperă întregul text sursă al unor funcții sau metode, iar comentariul descrie acțiunile efectuate de funcție (se oferă documentație detaliată). În prezent, seturile de date sunt pregătite pentru limbajele Python, JavaScript, Ruby, Go, Java și PHP. Sunt oferite exemple de utilizare a seturilor de date propuse pentru antrenarea diferitelor tipuri de rețele neuronale, inclusiv , , (BERT) și .
Pentru dezvoltarea mecanismelor de căutare în limbaj natural, a fost pregătit suplimentar setul CodeSearchNet Challenge, care include
de interogări cu circa 4 mii de comentarii de experți care descriu cele mai probabile asocieri cu codul în setul de date CodeSearchNet Corpus, acoperind aproximativ 6 milioane de metode și funcții ( aproximativ 20 GB). CodeSearchNet Challenge poate servi ca etalon pentru evaluarea eficienței diferitelor metode de căutare a codului în limbaj natural. Folosind instrumentele pregătit
motorului de căutare a codului.
Sursa: opennet.ro
