Я добавил рекомендации в GitHub
Браузерное расширение добавит пять похожих репозиториев прямо на страницу с кодом.
Интро
Мне всегда было трудно найти интересные репозитории на GitHub. Кроме того, когда я искал какие-то open-source инструменты или библиотеки, мне приходилось открывать кучу ссылок и вкладок, чтобы посмотреть похожие репозитории.
Тогда-то я и решил, что Гитхабу не хватает рекомендаций на странице репозитория. Как и в любой другой социальной сети, когда вы открываете какой-нибудь пост, то видите еще кучу рекомендуемых постов или видео для повышения вовлеченности. Я подумал, что было бы неплохо иметь список похожих репозиториев прям на странице репозитория.
Немного деталей
Первой проблемой, которую нужно было решить, было получение базы данных с популярными репозиториями гитхаба для использования в качестве пула рекомендаций. Короче говоря, я написал скраппер на python, который загружал все страницы репозиториев гитхаба с более чем 100 звездами и опубликованных за последние 8 лет. Так я хотел избавиться от бесполезного шума в данных и нерелевантных репозиториев.
Следующей задачей было каким-то образом сравнить описания и содержание репозиториев для предоставления рекомендаций. Это работа для текстовых эмбеддингов.
Подробнее о векторных эмбеддингах вы можете прочитать в статье OpenAI. Вкратце, это метод преобразования текста или описания на гитхабе в точку (а точнее вектор) в каком-то векторном пространстве. Что интересно, эти вектора сохраняют некоторую информацию исходного текста. Например, если два текста имеют схожий смысл, их эмбеддинги будут близки друг к другу в векторном пространстве.
В целом, мне нужен был только один запрос к API, поэтому я решил использовать flask в качестве простого и легкого бэкенда. Что касается фронтенда, я подумал, что делать отдельный сайт для рекомендации репозиториев будет неудобно для пользователей (да и мне лень), поэтому я решил сделать его в виде расширения для Chrome и расширения для Firefox.
Вся эта история конечно же не коммерческая, так что весь код открыт для всех желающих: код бэкенд и расширения на гитхабе.
По всем вопросам 👉 github.com/ovyan
------------------
Ссылка на секретный телеграм канал
Ну вощето нужные репы гуглятся.
Если репа рабочая и как следствие - популярная , она в топе выдачи и везде рекомендуется.
Поэтому искать какой-то нонейм не имеет смысла.
Очередное бесполезное решение
Кажется, Вы не поняли смысла расширения
Я вот тоже не понял, если можно воспользоваться Гуглом
Если вы наткнулись на какой-нибудь прикольный репозиторий или библиотеку, всегда интересно глянуть альтернативы или похожие продукты. Мне лень такое гуглить)
обычно внизу этих пакетов в ридми прописаны аналоги) Но может кому-то и пригодится расширение. Идея в целом не топ, но имеет место быть
Посмотрел по своим звездочкам, не нашёл в readme альтернатив. Да и не все будут упоминать конкурентов у себя)
Это опенсурс. Какие конкуренты )
Все зависит от лицензии)
Код то открыт. Любой может зарабатывать тогда, если это апач лицензия. В чем конкуренция то )
Вот вы и сами ответили на свой вопрос)
Нет конкуренции никакой между проектами
Не будет внимания к проекту - им не будут заниматься. Вот и все)
Обычно проектами занимаются или для себя или это какая-то учебная разработка. Без разницы на внимание
Хаха
чисто из прикола открыл парочку последних что я ставил - никаких аналогов в ридми((
Автор, Вы молодец! Забрал себе в полезности, отличная идея и реализация 🤘🏻
Спасибо!
Такое статьи на хабр бы писать с более подробным описанием алгоритма рекомендаций. На vc не та аудитория)
Почему именно sentence-transformers? Есть какие-то преимущества над другими векторизаторами?
Короткий ответ: я тестил много подходов, текущий выдавал наиболее точные результаты.
Я работаю с сегментацией параграфов (обычно описание и полезный readme это 3-4 коротких предложения). Я начинал с простого word2vec + tf-idf. Потом попробовал doc2vec. Подсказки были релевантными, но мне не нравилось качество. Понятно, что на 100к описаниях (30% которых это мусор) обучить чего-нибудь стоящего не получится, я начал тестить популярные pre-trained модели. Ну и просто начал с самых популярных моделек на HF. SBERT показался по качеству/скорости самым подходящим вариантом, решил остановиться на нем.
IMHO было б интересно еще векторизовать используемый проектом API. Хотя это toolchain-специфично, конечно, для узкой прикладной задачи должен компактный кластер получиться.
Что вы имеете в виду под "векторизовать API"?
Для начала, например, выделить библиотеки, которые проект импортируют. Модели естественных языков тут конечно не подойдут, надо обучать.
Ви таки считаете, что тем, кто ищет нужный код нужны рекомендации....
ладно. ждем 90% кода copilot (удобный кстати) и новых выпускников курсов python.
в интересное время живем, господа.
В чем удобство?
решает рутину. иногда удивляет да и вообще - веселей.
следить конечно нужно внимательно и пожалуй, на большие функции не соглашаться.
Короче, иногда говнокодит но больше по делу подставляет варианты.
Да, как только эмбеддинги не называли... Но вот "вкрапления"... (смайл с вытекшими глазами)
Изначально статью писал на английском, это был артефакт перевода... спасибо за замечание)
потенциально - довольно полезная вещичка. спасибо, автор!
Спасибо!
Охуенчик
Привет
Прошелся по десятку популярных пакетов. В целом - стек/экосистему определяет, но о релевантности говорить слишком рано.
Пример: https://github.com/spatie/laravel-medialibrary
5k звезд, в Readme есть секция Alternatives, ни одного пакета в подсказках нет, сами подсказки нерелевантны
Еще пример: https://github.com/spatie/laravel-backup
Но идея занятная, подписался
Спасибо за замечание! Да, в выборке пока 80к+ репозиториев. Будет спрос - добавлю больше. Возможно эти репозитории просто не попали в пулл. Да и в теории можно не ограничиваться на 5 рекомендациях, может добавлю кнопку "показать больше".
Анализ всего README, возможно, не нужен. Большей релевантности можно добиться, если анализировать первый заголовок, абзац под ним, поле About ну и название репы
Сейчас все происходит именно так, как Вы описали)
Если она есть - можно и с неё инфу просто выводить там же где и ваша инфа.
добавить просто все репозитории с гитхаб
Profanity - Vanity. Гениально. Ни одного похожего репозитория.
А сорян. Не заметил, перепутал с другим profanity проектом, более популярным. Описание подходит к рекомендациям.
А можно узнать кейзы для использования расширения? Мне ни разу не приходилось искать похожие к чему-то проекты за годы в разработке и обитания на гитхабе. Плюс оно ищет похожее по идее: react-input найдёт react-input-new & react-form-elements (условно) или просто похожие по структуре проекты на реакте? Первое теоретически могло бы иметь смысл, если бы многочисленные агрегаторы не предлагали кучи альтернатив, а поисковики по каким-то причинам не могли бы работать адекватно.
А мне часто интересно посмотреть альтернативы проектам которые лайкают мои друзья, нахожу что-то интересное
почему именно альтернативы тому, что лайкают друзья? Можно просто смотреть трендинг или рандомные проекты, если цели никакой нету - а, как я понял её нет
Спасибо за идею!
А почему на гитхабе написано что авторов два - ты и какой-то Евгений. А тут ты пишешь от первого лица, якобы ты все придумал и ты все сделал?
Кто успел того и тапки
Да ну, это ж для гиков. Зачем аналоги искать? Нашел либо копирнул репо и идёшь дальше кодить
Есть еще github topics и collections
Пипец нердский круг интересов. Лучше бы на PornHub искал ))