Полная сквозная система рекомендаций на основе контента, которая рекомендует похожие фильмы на основе ввода пользователя.

Всякий раз, когда мы посещаем торговый центр, чтобы купить новую пару обуви или одежды, мы находим преданного человека, который помогает нам с продуктами, которые мы должны купить, исходя из наших предпочтений, и упрощает нашу работу. Простыми словами, он представляет собой рекомендательную систему. Но в современном мире все находится в сети, и в Интернете так много контента, миллионы видео на Youtube и миллионы товаров на Amazon, что затрудняет выбор пользователю. Появляется система рекомендаций, которая упрощает жизнь пользователя, рекомендуя следующее видео для просмотра или аналогичный продукт для покупки.

Система рекомендаций — это фрагмент кода, который достаточно умен, чтобы понять предпочтения пользователя и рекомендовать что-то, исходя из его/ее интересов, цель — повысить прибыльность. Например, Youtube и NetFlix хотят, чтобы вы проводили больше времени на их платформе, поэтому они рекомендуют видео на основе предпочтений пользователя. Amazon хочет, чтобы вы покупали товары на их веб-сайте, чтобы они могли получать больше прибыли.



Какие существуют типы рекомендательных систем?

На основе популярности: рекомендации лучших продуктов со своего веб-сайта каждому пользователю. Этот метод не будет учитывать интересы пользователя. Например, раздел «В тренде» на Youtube, 250 лучших фильмов на IMDB.

На основе содержания:

Это основано на сходстве между продуктами. Например, если пользователь посмотрел фильм и он ему понравился, он может захотеть посмотреть похожие фильмы в будущем. Это может быть основано на жанре, актере, актрисе или режиссере.

Совместная фильтрация:

Это основано на сходстве пользователей. Например, если люди A и B посмотрели и ему понравился фильм M, затем, если человек A посмотрел фильм Z и ему понравился, мы можем порекомендовать фильм Z человеку B, поскольку A и B являются похожими пользователями.

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



Гибридная фильтрация. При этом используются все или некоторые из вышеупомянутых методов для формирования гибридной модели.

Система рекомендаций фильмов на основе контента:

Давайте посмотрим, как мы можем создать систему рекомендации книг на основе контента. Ниже представлено изображение финальной модели, которую мы собираемся построить для этого проекта.

Ниже приведены шаги, которые мы будем выполнять.

  • Давайте импортируем базовые библиотеки, прочитаем набор данных и создадим фреймы данных. Набор данных можно скачать по ссылке — dataset
  • Объедините фреймы данных «фильмы» и «титры», чтобы получить окончательный фрейм данных.

  • Учитывайте только обязательные столбцы.

  • работая над рубрикой — жанры:

Столбец «жанры» — это список словарей, в нем есть и ключи, и значения, но нам нужны только значения жанра, поэтому давайте напишем функцию для получения только необходимых данных.

Столбец «Жанры» теперь содержит только необходимые данные.

  • Давайте применим ту же функцию к столбцу «ключевые слова».

  • Давайте изменим приведенную выше функцию, чтобы получить только первые 3 имени приведения.

  • Давайте получим имя директора из столбца «экипаж», изменив приведенную выше функцию.

  • Давайте преобразуем столбец «Обзор» из строки в список.

  • Нам нужно изменить имена съемочной группы и актеров таким образом, чтобы между именами не было пробелов, потому что, когда мы преобразуем слова в векторы, это повлияет на нашу модель машинного обучения. Например, Джеймс Кэмерон должен быть преобразован в «Джеймс Кэмерон», Джонни Депп должен быть преобразован в ДжонниДеппа, а «Научная фантастика» — в «Научная фантастика».

  • Давайте создадим новый столбец под названием «теги», объединив функции «ключевые слова», «обзор», «жанры», «актерский состав» и «команда».

  • Давайте создадим новый фрейм данных new_df, взяв только функции «movie_id», «заголовок» и «теги».

  • Давайте преобразуем теги функции из списка в строку.

  • Преобразуйте теги функций в нижний регистр.

  • Примените стемминг для преобразования слов в их основные формы.

  • Теперь давайте преобразуем теги в мешок слов, удалив при этом все стоп-слова, и теперь векторы фильмов будут готовы. Каждый фильм представляет собой вектор с 5000 размерностями.

  • Давайте вычислим оценку сходства между каждым вектором фильма.

  • Давайте создадим функцию, которая принимает название фильма в качестве входных данных и рекомендует 5 фильмов на основе оценок сходства.

Взгляните на некоторые рекомендации от модели.

  • Развертывание модели: давайте воспользуемся библиотекой «streamlit», чтобы создать простой графический интерфейс и развернуть модель.

Мы успешно завершили внешний интерфейс приложения, и вы можете развернуть его на любой из облачных платформ. Взгляните на некоторые рекомендации ниже.

Мы успешно выполнили все шаги, и наша модель готова. Вы можете попробовать построить аналогичную модель. Полный код можно найти на моей странице Github.