Рекомендательная система поиска

Всем привет, может кто разрабатывал что нибудь похожее на фильтрацию товаров относительно предпочтений клиента(коллаборативная фильтрация) или фильтрацию товаров по их описанию, модуль, который бы из “свободного” описания товаров извлекал полезные признаки и по ним бы уже происходила фильтрация. Примером полезного признака может служить тема текста. Куда копать или есть свои наработки и вы сможете поделится? В идеале хочу сделать такую фильтрацию для интернет магазина, но если не получится внедрить в CMS то буду пробовать, как умную систему sql запросов в отдельном приложении. Склоняюсь использовать pyton для CMS

Если я не ошибаюсь, Вы описываете типичный полнотекстовый поиск (Fulltext search). Его давно уже многие СУБД поддерживают. Вот, для примера, статья с хабра за 2008 год: https://habr.com/ru/post/40218/

А тут вот есть каталог систем ПП: https://rvb.ru/soft/catalogue/c08.html
Обратите внимание, что Эластик, например - вполне себе опенсорц

Полнотекстовый поиск, это очень близкое к моей теме, но все равно немного не такой алгоритм мне требуется, коллаборативная фильтрация работает по другому

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

Маркетологи разделяют людей на 3 группы. Искатели, стадо и пассивы. Искатели - это молодёжь которая ищет новых ощущений и пробует разные товары разную дичь. За ними идёт стадо - это люди среднего возраста. Им тупо из-за работы и бытовых проблем семьи некогда пробовать новинки. Поэтому они смотрят на идолов и покупают такие же вещи как у них.
Третья группа пассивы - старики которые точно знаю, что им нужно и долго подбирают товар.

В каждой возрастной группе есть все три типа покупателей. Но разделение по возрастам даёт хорошие показатели. А некоторые огрехи не-так уж и важны. Как говорят профессионалы классификация с точностью 80% делается за 20% времени, а оставшиеся 20% за 80%. На самом деле бывает, что получить 81% приходится тратить месяцы работы. Так что запомните лучшее враг хорошему.

Отвлеклись вернёмся. Что вам нужно сделать для получения?

товаров относительно предпочтений клиента

Вам нужно определить возраст клиента. Возраст клиент определяется по времени суток запроса и по словарному запасу. Но вообще самое простое воспользоваться поисковиком. Гугл и яндекс уже знают эту информацию и настроив рекламу на нужный пол вы сможете направлять людей на нужные товары.
https://support.google.com/analytics/answer/2799357?hl=ru
Вам всего то надо настроить рекламу, и отслеживать покупателей по предыдущей ссылке с которой они пришли. А получить эту ссылку в JS проще простого.

Чуть по сложнее попросить пользователя зарегистрироваться и рассказать о себе. Пол и дату рождения для восстановления пароля. К примеру по вопросу о восстановлении пароля “девичья фамилия матери” или “кличка вашего питомца” можно определить пол человека. Это уже воронка продаж.

А далее имея 3 базовых класса покупателей и 2 пола, то бишь всего 6 классов вы можете предлагать товары из сходя из статистики какие товары чаще покупают те и предлагаете. Т.е. возле каждого товара вы можете прикрепить поле с метриками и отслеживать, накапливаем статистику в течение недели или месяца. А затем понимая кто чаще берёт какой товар тому и предлагать данный товар.

клиента(коллаборативная фильтрация)
Раньше это называлась целевой рекламой.

Вот к примеру тут немного про то как это сделано у нетфликса. Как они рисуют в рекламе афро американцев, что-бы продать им фильм. Даже если в фильме только белые.

https://pikabu.ru/story/netflix_obvinili_v_namerennom_obmane_temnokozhikh_zriteley_6238368
https://habr.com/ru/post/409583/

1 Симпатия

Так бывает что статистики не хватает. К примеру у вас очень много товаров. И среди них есть похожие к примеру шасси, корпус рэс, кейс, коробка - это всё слова синонимы. Каждый производитель называет по своему. Тогда на основе анализа “темы текста” можно найти синонимы и предложить аналоги.

Для этого существует Word2Vec

Помимо Word2Vec есть и другие модели Word Embeddings: такие как нейронные сети глубинного обучения и мешок-слов.


Для Питона есть библиотеки с десятком уже готовых алгоритмов связывания слов( Word Embeddings) .
1 Симпатия