Comments 6
Мне кажется, для рекомендательной системы нужно базу стихов разметить, типа, любовная лирика отдельно, природа отдельно, военная поэзия отдельно. Чем больше классов - тем лучше. А потом найти запрос пользователя в базе, определить в какие классы попадает выбранное им стихотворение, и выдать ему что-то подобное.
А строить вектора, которые ещё и не работают как задумывалось потому что в системе вектор по полному тексту, а пользователь вводит одну две-строчки, ну такое. Я же правильно понял, что в идеале если я введу "я помню чудное мгновенье", оно мне должно найти стихи, в которых есть слова "я", "помню", "чудное" и "мгновенье"?
Причём хочу отметить, что поле ввода предлагает ввести стихотворение, а в поиске потом будет участвовать и фамилия автора. Ввёл "Белая берёза под моим окном", получил стихотворение Андрея Белого.
Да, интересная мысль, сделать разметку по темам) Она есть в исходном датасете, но я её не использую.
Вектора кодируют весь текст в целом, то есть модель строит эмбеддинг, который кодирует в основном семантику, но это всё же не прямой поиск по ключевым словам, более сложная вещь))
тематику можно добавить как дополнение, это классная мысль, спасибо!
Я понимаю, что это не прямой поиск. Переформулирую. Если ввод пользователя до последней запятой совпадает с текстом в базе, то расстояние между векторами будет ноль. И это будет идеальная рекомендация в вашей системе - то стихотворение, которое пользователь и так знает. Правильно?
Вставил в поле ввода Александр Пушкин Я помню чудное мгновенье <полный текст стихотворения>
Получил Доля схожести: 1.0000001192092896
Посмотрел этот датасет:
В части стихов в текст вошло название или посвящение - хорошо бы вычистить
Тема размещена лишь у малой части стихов - хорошо бы прогнать их через LLM, которая бы разметила по темам, например "война: 0.5, любовь: 0.5 "
Соединяем физику и лирику. Как я собрал рекомендательную систему для стихов с помощью Flask, sqlite-vec и Hugging Face