ProHoster > Blog > wiadomości internetowe > GitHub otworzył drogę do rozwoju wykorzystania uczenia maszynowego do wyszukiwania i analizy kodu
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.