- Обзор моего представления
- Рекомендательная система
- Характеристики
- Как это работает
- Как хранятся данные:
- Как осуществляется доступ к данным:
- pilotpirxie / рекомендация
- 🦝 Простая рекомендательная система с открытым исходным кодом
- рекомендация
- Характеристики
- Обзорное видео
- Как это работает
- Как хранятся данные:
- Видео — Демонстрация рекомендаций по фильмам
- Категория представления:
- Используемый язык
- Ссылка на код
- Дополнительные ресурсы / информация
- Коллаборационисты
- Meat Boy
Обзор моего представления
Рекомендательная система
Рекомендательная система с открытым исходным кодом, основанная на данных временных рядов и статистическом анализе. Написана на TypeScript и Node.js с использованием Redis для хранения данных. Рекомендательная система использует индекс Жаккара для расчета пересечения двух множеств. Одно множество представлено максимально возможной суммой баллов тегов, а другое — суммой баллов пользовательских событий по каждому тегу. Чем выше индекс Жаккара, тем выше рекомендация. Для повышения производительности он использует числа для представления множеств.
Характеристики
- Использование оценки тегов и индекса Жаккара
- Фильтрация на основе контента
- Движок, управляемый событиями
- Наивное исследование новых тегов
- Подходит для рекомендации продуктов и контента
- Точная настройка весов тегов
- Минималистичный и легкий
- Написан на TypeScript и Node.js
Как это работает
Как хранятся данные:
- Акторы хранятся в Redis как простые ключи
String
с датой созданияtimestamps
в качестве значения. - Элементы имеют тип
Set
сtags
в качестве членов. Элемент может иметь несколько тегов. - События представляют собой тип
String
сactorId:id:tag:timestamp:ttl
и атрибутом expire, установленным для обеспечения свежести рекомендаций.
Как осуществляется доступ к данным:
- Получить актера с помощью событий
- Проверить, существует ли актер, с помощью
EXISTS actor:${id}
. - Получите все события пользователя с помощью
SCAN ${петля курсора} MATCH actor:${id}
.
- Проверить, существует ли актер, с помощью
- Удаление одного актера
- Сканирование для каждого события, связанного с ключом актера
SCAN ${loop cursor} MATCH actor:${id}*
- Для каждого ключа удалите с помощью
DEL ${key}
.
- Сканирование для каждого события, связанного с ключом актера
- Добавьте одного актера
- Сканирование для каждого связанного с ключом актера
SCAN ${loop cursor} MATCH actor:${id}*
- Для каждого ключа удалить с помощью
DEL ${key}
- Добавьте нового актера с помощью
SET actor:${id} ${Date.now().toString()}
.
- Сканирование для каждого связанного с ключом актера
- Добавьте одно событие
- Проверьте, существует ли актер, если установлен флаг, используя
EXISTS actor:${id}
- Добавить событие с помощью
SET actor:${id}:${tag}:${date}:${ttl} ${score}
. - Если был предоставлен
TTL
, установите срок действия события с помощьюEXPIRE actor:${id}:${tag}:${date}:${ttl} ${ttl}
.
- Проверьте, существует ли актер, если установлен флаг, используя
- Получить все элементы с тегами
- Получить все элементы с
SCAN ${loop cursor} MATCH item:*
- Для каждого элемента получить все теги с помощью
SMEMBERS ${itemKey}
- Получить все элементы с
- Получить один элемент с тегами
- Получить все теги элемента с помощью
SMEMBERS item:${id}
- Получить все теги элемента с помощью
- Удалить отдельный элемент
- Вызвать с помощью
DEL item:${id}
- Вызвать с помощью
- Добавить отдельный элемент
- Проверьте, существует ли уже элемент
EXISTS item:${id}
- Если да, то удалите
DEL item:${id}
. - И добавьте элемент с тегами
SADD item:${id} ${tags}
.
- Проверьте, существует ли уже элемент
pilotpirxie / рекомендация
🦝 Простая рекомендательная система с открытым исходным кодом
рекомендация
Рекомендательная система с открытым исходным кодом, основанная на данных временных рядов и статистическом анализе. Написана на TypeScript
и Node.js
с использованием Redis
для хранения данных. Система рекомендаций использует индекс Jaccard
для вычисления пересечения двух множеств. Одно множество представлено максимально возможной суммой баллов тегов, а другое — суммой баллов пользовательских событий по каждому тегу. Чем выше индекс Жаккара, тем выше рекомендация. Для повышения производительности он использует числа для представления множеств.
Характеристики
- Использование оценки тегов и индекса Жаккара
- Фильтрация на основе контента
- Движок, управляемый событиями
- Наивное исследование новых тегов
- Подходит для рекомендации продуктов и контента
- Точная настройка весов тегов
- Минималистичный и легкий
- Написан на TypeScript и Node.js
Обзорное видео
Как это работает
Как хранятся данные:
- Акторы хранятся в Redis как простые ключи
String
с датой созданияtimestamps
в качестве значения. - Элементы имеют тип
Set
сtags
в качестве членов. Элемент может иметь…
Видео — Демонстрация рекомендаций по фильмам
Категория представления:
Минимализм Маги
Заменяет базу данных временных рядов для ввода большого объема событий актера (например, пользователя) и OLAP-операций для вычисления рекомендаций. Имейте в виду ограничение по времени хакатона, поэтому воспринимайте это заявление с щепоткой соли 😉
Используемый язык
TypeScript
Ссылка на код
https://github.com/pilotpirxie/recommendation
Дополнительные ресурсы / информация
Коллаборационисты

Meat Boy
- Ознакомьтесь с Redis OM, клиентскими библиотеками для работы с Redis как многомодельной базой данных.
- Используйте RedisInsight для визуализации данных в Redis.
- Подпишитесь на бесплатную базу данных Redis.