Обзор моего представления

Логотип проекта


Система рекомендаций

Система рекомендаций с открытым исходным кодом, основанная на данных временных рядов и статистическом анализе. Написано на TypeScript и Node.js с использованием Redis для хранения. Система рекомендаций использует индекс Жаккара для расчета пересечения двух наборов. Один набор представлен максимально возможной суммой оценок тегов, а другой набор представляет собой сумму оценок пользовательских событий на тег. Чем выше индекс Жаккара, тем выше рекомендация. Он использует числа для представления наборов для повышения производительности.


Функции

  • Используйте оценку тега и индекс Жаккара
  • Контентная фильтрация
  • Движок, управляемый событиями
  • Наивное исследование новых тегов
  • Подходит для рекомендации продукта и контента
  • Точная настройка весов тегов
  • Минималистичный и легкий
  • Написано на TypeScript и Node.js


Как это работает


Как хранятся данные:

  • Актеры хранятся в Redis как простые String ключи с датой создания timestamps как ценность.
  • Предметы Set введите с tags как члены. Элемент может иметь несколько тегов.
  • События String введите с actorId:id:tag:timestamp:ttl и атрибут срока действия, установленный для обеспечения актуальности рекомендаций.


Как осуществляется доступ к данным:

  • Получить актера с событиями
    • Проверьте, существует ли актер с EXISTS actor:${id}
    • Получить все пользовательские события с помощью SCAN ${loop cursor} 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}
  • Удалить один элемент
  • Добавить один элемент
    • Проверить, существует ли элемент EXISTS item:${id}
    • Если да, то удалите DEL item:${id}
    • И добавить элемент с тегами SADD item:${id} ${tags}

🦝 Простая система рекомендаций с открытым исходным кодом

Рекомендация

Система рекомендаций с открытым исходным кодом, основанная на данных временных рядов и статистическом анализе. Написано в TypeScript а также Node.js с использованием Redis для хранения. В рекомендательной системе используется Jaccard index для вычисления пересечения двух множеств. Один набор представлен максимально возможной суммой оценок тегов, а другой набор представляет собой сумму оценок пользовательских событий на тег. Чем выше индекс Жаккара, тем выше рекомендация. Он использует числа для представления наборов для повышения производительности.

Функции

  • Используйте оценку тега и индекс Жаккара
  • Контентная фильтрация
  • Движок, управляемый событиями
  • Наивное исследование новых тегов
  • Подходит для рекомендации продукта и контента
  • Точная настройка весов тегов
  • Минималистичный и легкий
  • Написано на TypeScript и Node.js

Архитектура рекомендаций

Обзорное видео


видео

Как это работает

Как хранятся данные:

  • Актеры хранятся в Redis как простые String ключи с датой создания timestamps как ценность.
  • Предметы Set введите с tags как члены. Товар может иметь…


Видео — Демонстрация рекомендуемых фильмов



Категория подачи:

Минимализм Маги


Используемый язык

Машинопись


Ссылка на код


Дополнительные ресурсы/информация

Архитектура


Соавторы

мясной образ