GitHub otworzył drogę do rozwoju wykorzystania uczenia maszynowego do wyszukiwania i analizy kodu

GitHub wprowadzono projekt CodeSearchNet, która przygotowała modele uczenia maszynowego oraz zbiory danych niezbędne do parsowania, klasyfikacji i analizy kodu w różnych językach programowania. CodeSearchNet, podobny do ImageNet, zawiera duży zbiór fragmentów kodu z adnotacjami, które formalizują działanie kodu. Komponenty do modeli szkoleniowych i przykłady wykorzystania CodeSearchNet są napisane w Pythonie przy użyciu frameworku Tensorflow i dystrybuowane przez na licencji MIT.

Podczas tworzenia CodeSearchNet wykorzystano technologie analizowania tekstu w języku naturalnym, dzięki czemu systemy uczenia maszynowego uwzględniają nie tylko cechy syntaktyczne, ale także znaczenie działań wykonywanych przez kod. System GitHub stosowany w eksperymentach nad organizacją wyszukiwania kodu semantycznego za pomocą zapytań język naturalny (na przykład przy żądaniu „sortowania listy ciągów” wyświetlany jest kod z implementacją odpowiednich algorytmów).

Proponowany zbiór danych zawiera ponad 2 miliony linków z komentarzami do kodu, przygotowanych na podstawie tekstów źródłowych istniejących otwartych bibliotek. Kod obejmuje pełny tekst źródłowy poszczególnych funkcji lub metod, a komentarz opisuje działania wykonywane przez funkcję (szczegółowa dokumentacja jest dostępna). Obecnie zbiory danych przygotowywane są dla Pythona, JavaScript, Ruby, Go, Java i PHP. Podano przykłady wykorzystania proponowanych zbiorów danych do uczenia różnych typów sieci neuronowych, m.in Neuronowy worek słów, RNN, Samouważność (BERT) i Hybryda 1D-CNN + samouważność.

Aby opracować mechanizmy wyszukiwania w języku naturalnym, przygotowano dodatkowo zestaw CodeSearchNet Challenge, zawierający m.in
99 typowe zapytania z około 4 tysiącami adnotacji eksperckich opisujących najbardziej prawdopodobne powiązania kodu w zbiorze danych CodeSearchNet Corpus, obejmujących około 6 milionów metod i funkcji (ustawić rozmiar około 20 GB). Konkurs CodeSearchNet Challenge może służyć jako punkt odniesienia do oceny skuteczności niektórych metod wyszukiwania kodu języka naturalnego. Używanie narzędzi KubeFlow przygotowany
przykład wyszukiwarka kodów.

Źródło: opennet.ru

Dodaj komentarz