fbpx
  • CodeSearchNet: соревнование по поиску в коде от GitHub

    GitHub опубликовали данные с 6 миллионами функций на Go, Java, JavaScript, PHP, Python и Ruby. Данные включают документацию и метахарактеристики, помимо файлов с кодом. На этих данных компания запустила соревнования CodeSearchNet. Цель — обучить поисковую систему, которая по запросу выдает релевантные данные из датасета и учитывает специфику запросов разработчиков.

    Поиск чужого кода для переиспользования или сравнения подходов — это одно из наиболее частых явлений для разработчика. Несмотря на это, глобальные поисковые системы не всегда выдают необходимые результаты. Это в первую очередь связано с тем, что стандартные поисковые алгоритмы адаптированы под тексты на естественном языке и не учитывают особенности структуры программного языка. GitHub запустили соревнование, чтобы создать поисковую систему по кодовой базе, которая специфически учитывала особенности запросов разработчиков. Для обработки программных файлов на текущий момент нет стандартных датасетов, которые были бы аналогом GLUE в NLP.

    Подробнее про данные

    Разработчики собрали датасет из функций и их документации на Go, Java, JavaScript, PHP, Python и Ruby. Источником данных послужили открытые проекты на GitHub. Чтобы распарсить программный код, они использовали TreeSitter. Пайплайн по предобработке данные доступен в официальном репозитории. Данные поделили на пары: кусок кода — текстовая документация. Объем данных позволяет использовать трансформер архитектуры для обучения.

    Полный предобработанный датасет доступен для скачивания на Amazon S3, включая:

    • 6 миллионов методов;
    • 2 миллиона текстовых пояснений кода;
    • Метаданные кода: репозиторий, номер строки и подобное

    Помимо самих данных, в открытом доступе есть стандартные модели, на которых разработчики тестировали задачу.

    Детали соревнования 

    Чтобы оценить поисковые модели, был собран датасет с реальными поисковыми запросами. Программисты вручную размечали релевантность потенциальных результатов. Запросы собрали из Bing. Эти запросы разработчики объединили с датасетом вопросов и ответов со StackOverflow (StaQC).