GitHub відкрив напрацювання щодо застосування машинного навчання для пошуку та аналізу коду

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

При створенні CodeSearchNet використані технології розбору тексту природною мовою, що дають можливість системам машинного навчання враховувати не тільки синтаксичні особливості, а й зміст виконуваних кодом дій. У GitHub система застосовується в експериментах з організації семантичного пошуку коду з використанням запитів на природною мовою (Наприклад, при запиті «сортування списку рядків» виводиться код з реалізацією відповідних алгоритмів).

Запропонований набір даних включає понад 2 млн зв'язок код-коментар, підготовлених на основі вихідних текстів існуючих відкритих бібліотек. Код охоплює повний вихідний текст окремих функцій або методів, а коментар описує дії, що виконуються (наводиться детальна документація). В даний час набори даних підготовлені для мов Python, JavaScript, Ruby, Go, Java та PHP. Наведено приклади використання запропонованих наборів даних для навчання різних типів нейронних мереж, включаючи Neural-Bag-Of-Words, RNN, Самоувага (BERT) та 1D-CNN+Self-Attention Hybrid.

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

Джерело: opennet.ru

Додати коментар або відгук