Исследовательская группа

Методы машинного обучения в области программной инженерии

Создание эмбеддингов зависимостей и их использование в рекоммендательной системе

January 18

Зависимости проекта — это очень специфичный и любопытный источник информации. С одной стороны, по сравнению с самим кодом проекта они представляются очень маленькими, с другой стороны, они несут в себе чрезвычайно много инофрмации о проекте — подчас одного взгляда на них достаточно, чтобы сказать, о чём проект. С этой точки зрения зависимости можно рассматривать как "скелет" проекта — и, следовательно, на их основании можно сравнивать проекты и делать о них выводы.

В нашей работе мы решили исследовать создание эмбеддингов зависимостей и создали прототип рекомендательной системы на их основании. Мы собрали датасет из 7,132 фалов requirements.txt, представляющих собой списки зависимостей проектов на языке Python, а также собрали их версии за предыдущие 10 лет. На основании этих данных мы создали матрицу совместной встречаемости библиотек и проектов и с помощью сингулярного разложения превратили её в эмбеддинги проектов и зависимостей. Мы провели кластеризацию векторов зависимостей и исследовали их семантическую структуру. Чтобы исследовать полезность полученных эмбеддингов, мы создали прототип рекомендательной системы, которая позволяет подсказывать для проектов релевантные зависимости. Для сравнения различных моделей мы использовали синтетический бенчмарк, основанный на эволюции зависимостей в собранных проектах, а также провели опрос разработчиков.

В целом исследование показало, что эмбеддинги зависимостей — это простой и эффективный способ определять сходство между проектами, и мы надеемся встроить их в поисковые системы в наших продуктах.

Докладчик: Ярослав Голубев.

Язык доклада: русский.

Дата и время: 18-е января, 18:00.

https://us02web.zoom.us/j/509624984?pwd=dFhRUlowSWprSVAva0JFQ2NUVzZTdz09

Meeting ID: 509 624 984

Passcode: 016883