Комментарии 12
Сейчас бьюсь над задачей, чтобы нормально извлекать имена книг из их содержимого и унифицировать имена файлов.
По возможности рекомендую взять первую часть текста книги и/или имя файла и отправить с API запросом в какую-нибудь LLM, например Google Flash 1.5 с запросом типа: "Перед тобой содержимое части книги и имя файла. Ответь JSON в формате: {"title": "название книги", "book_type": "медицина|it"}"
Должно получиться довольно эффективно.
Здравствуйте! А вы можете поделиться ссылкой на библиотеку, пожалуйста? :)
Идеальный кейс для LLM. подключив какую llama 3 модель локально можно много чего упростить (например определять тематику и получать более точные ответы при сортировке, или для де-дупликации, не уверен что хеш из первых 1000 знаков идеально подходит для этой задачи. А если все книги ещё и векторезировать уммммм....
Ещё вы опустили тему относительно хранения метаданных, в чем и как вы ее храните? например список уже имеющейся литературы? хеши всех книг, списки ключевых слов и т.д.
Тоже не отказался бы получить доступ в вашу библиотеку, особенно ИТшную.
Публичные LLM, насколько я знаю, денег хотят.. Где же я их столько возьму? Хеши не храню. Они на лету считаются, скрипт принимает решение и видимо после обработки про хеши забывает.
Что не так с хешем из 1000 знаков? Коллизий при 16 тыс. файлов я точно не ожидаю при таком размере хешируемого текста.
Ключевые слова, которые я отобрал для сортировки, прямо в коде гвоздями и прибиты, зачем мудрить, они более или менее статичны.
По поводу доступа напишите в личку, здесь я точно доступы вешать не буду :)
LLM можно ранить локально на вашем компе, абсолютно бесплатно, по гуглите "LM Studio" и "HuggingFace", просто поднимаешь как локальный сервер на localhost. правда желательно иметь видео карту, хоть какой маломальский GPU.
Хеш из 1000 знаков однозначно найдет совпадения, но не знаю все ли книги совпадают, например та же книга но 2nd edition? или я не знаю, лишняя страница с каким текстом в самом начале а дальше все тоже самое? может конечно это мизерный процент...
Сравнивать хеш каждый раз на лету время затратная процедура, и чем больше библиотека будет расти тем дольше, думаю оптимальнее бы было высчитать его 1 раз и хранить как метаданные об уже рассортированной библиотеке, и тогда высчитывать хеш только новой книги и сравнивать его с базой всех хешей который был уже сохранен, и если книга не дубликат и попадает в общую библиотеку то добавить ее хеш к общему списку.
ну а про гвоздями прибито - думаю можно выдрать содержание (ToC) и скормить той же ЛЛМ, она по содержанию куда качественнее определит подраздел
ну и как вишенка на торте все книги можно скормить ЛЛМ а потом спрашивать/чатиться о контенте на любую тему и получать обобщённый ответ с ссылкой на референс на конкретную книгу и параграф в ней если нужен конкретно первоисточник.
Таким образом пользы от вашей библиотеки будет куда больше...
Хотите помогу, так то я Software Architect, тем более у меня есть другой проект очень схожий по функционалу, так что можно убить сразу 2х зайцев.
задача из области "размять пальцы". полезно, но не практично.
аргументы:
- если книг настолько много, что их приходится сортировать, то, возможно, их не перечитать.
- многие книги дублируют друг друга, особенно в начальных главах. "Самый сок" начинается к концу или "размазан" в середине. Поэтому в 30000 первых слов можно насобирать из глав "как установить" python.
- некоторые книги не переводятся корректно в текст.
- в отношении информации все быстро сейчас устаревает, поэтому "обновление кода" в книгах старше 3-4 лет может быть нетривиальной задачей (помним про Keras v2, TF и т.д.).
- концентрируясь только на python и медицине, можно пропустить интересное в смежных языках.
Поэтому, самое простое:
- качаем "свежее" за последние 1-2 года.
- раскладываем по языкам программирования.
*есть конечно хорошие книги или справочники, которые старше 1-2 лет, но их вы и так найдете. они либо в ссылках в новых книгах либо упоминаются в них.
**вот еще еще человек сизифовым трудом занимается - www.youtube.com/@stakap/videos
Сортировка книг по тематикам скриптами Python