Я добавил рекомендации в GitHub
Браузерное расширение добавит пять похожих репозиториев прямо на страницу с кодом.
Интро
Мне всегда было трудно найти интересные репозитории на GitHub. Кроме того, когда я искал какие-то open-source инструменты или библиотеки, мне приходилось открывать кучу ссылок и вкладок, чтобы посмотреть похожие репозитории.
Тогда-то я и решил, что Гитхабу не хватает рекомендаций на странице репозитория. Как и в любой другой социальной сети, когда вы открываете какой-нибудь пост, то видите еще кучу рекомендуемых постов или видео для повышения вовлеченности. Я подумал, что было бы неплохо иметь список похожих репозиториев прям на странице репозитория.
Немного деталей
Первой проблемой, которую нужно было решить, было получение базы данных с популярными репозиториями гитхаба для использования в качестве пула рекомендаций. Короче говоря, я написал скраппер на python, который загружал все страницы репозиториев гитхаба с более чем 100 звездами и опубликованных за последние 8 лет. Так я хотел избавиться от бесполезного шума в данных и нерелевантных репозиториев.
Следующей задачей было каким-то образом сравнить описания и содержание репозиториев для предоставления рекомендаций. Это работа для текстовых эмбеддингов.
Подробнее о векторных эмбеддингах вы можете прочитать в статье OpenAI. Вкратце, это метод преобразования текста или описания на гитхабе в точку (а точнее вектор) в каком-то векторном пространстве. Что интересно, эти вектора сохраняют некоторую информацию исходного текста. Например, если два текста имеют схожий смысл, их эмбеддинги будут близки друг к другу в векторном пространстве.
В целом, мне нужен был только один запрос к API, поэтому я решил использовать flask в качестве простого и легкого бэкенда. Что касается фронтенда, я подумал, что делать отдельный сайт для рекомендации репозиториев будет неудобно для пользователей (да и мне лень), поэтому я решил сделать его в виде расширения для Chrome и расширения для Firefox.
Вся эта история конечно же не коммерческая, так что весь код открыт для всех желающих: код бэкенд и расширения на гитхабе.
По всем вопросам 👉 github.com/ovyan
------------------
Ссылка на секретный телеграм канал