Почему часть 2?

Если мы заметили из данных, которые у нас есть из предыдущего поста, у нас есть ограниченные преимущества от набора данных. Вот некоторые из примеров, которых нам не хватает:

предыдущий пост: (Использование системы рекомендаций (ранг, пользователь-пользователь, матричная факторизация) в потоковом приложении)

  • Год выпуска фильмов/телепередач, чтобы понять тенденции года
  • Полная информация о содержании, например обзоры содержания, поможет нам в применении рекомендаций на основе содержания.
  • Больше тегов жанра, потому что мы знаем, что у каждого контента может быть больше жанров
  • Метрики каждого контента, такие как рейтинги, голоса и отзывы. Это может помочь определить, какой контент имеет большую ценность. Поскольку STC не добавил свои рейтинги, мы не можем сделать вывод о местной популярности, используя рейтинги, потому что эти рейтинги были собраны по всему миру из TMDB. Поэтому мы можем добавлять рейтинги глобально. Например, «Фильмы с наибольшим количеством голосов в мире».

Понимание бизнеса

В предыдущей статье я планировал добавить систему рекомендаций на основе контента, но, к сожалению, это было невозможно из-за отсутствия точек данных от STC, которые могли бы помочь нам применить рекомендацию на основе контента. В этой статье наша главная цель — добиться этого, передав наши данные из другого источника данных с помощью TMDB OpenSource API. Это поможет нам получить необходимые данные, такие как дата выпуска, обзор и жанр.

Подход

Наша цель здесь проста, мы постараемся получить как можно больше информации для нашего набора данных. У нас есть список фильмов/телепередач от STC JAWWY, и мы хотим использовать TMDB API для получения дополнительной информации о фильмах STC. Шаги:

  1. Определение названий фильмов и телешоу из наборов данных STC
  2. Поиск этих фильмов и телешоу в TMDB API
  3. Объединить новые переменные в наш основной df
  4. Создайте систему рекомендаций на основе контента, основанную на косинусном сходстве

Загрузка библиотек и пакета API

Вам необходимо создать учетную запись разработчика (БЕСПЛАТНО), чтобы лучше работать с API, и зарегистрируйтесь. Вот хорошие источники для начала работы:

Загрузка данных STC JAWWY

OUTPUT:
Number of TV Shows 276
Number of Movies 1525

Проблема:

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

Цель

Цель состоит в том, чтобы дать движку название фильма, который смотрел пользователь, и показать список похожих фильмов на основе содержания просмотренных фильмов. Например, если бы я смотрел «Мстителей», я бы посмотрел фильмы о супергероях и прочем!

Найдите фильмы и телешоу STC JAWWY в TMDB API

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

Вы заметили что-то в словаре? у нашего жанра есть идентификаторы вместо реальных названий жанров, поэтому нам нужно получить их из API.

OUTPUT:
TV Shows in STC JAWWY     276
TV Shows ID Found in TMDB 134
TV Shows ID Not Found     142

Movies in STC JAWWY       1525
Movies ID Found in TMDB   1332
Movies ID Not Found       193

Наш результат вышел отличным! Кажется, у нас есть менее 50% телешоу из TMDB и почти 80% фильмов, найденных в TMDB API.

Следует отметить, что у JAWWY есть фильмы и телепередачи на арабском языке, и мы можем предположить, что некоторых из них нет в TMDB. Кроме того, опечатки могут быть еще одной проблемой здесь, когда мы не можем искать опечатку в TMDB, и это должно быть правильное исходное имя контента.

Check Point как в играх! Так что нам не нужно повторять все выше

Сохранение словаря фильмов и сериалов в формате CSV

Обратите внимание, что в столбце жанра_ids у нас есть список идентификаторов жанров, который является ссылкой на API жанров. Мы выполним преобразование из этого списка в настоящие названия жанров фильмов и сериалов.

Теперь у нас есть два кадра данных, в которых достаточно точек данных для рекомендации контента. Мы объединим movie_df и tv_df в один окончательный df, и мы можем соединить окончательный df с нашим исходным фреймом данных (STC).

К сожалению, мы потеряем много данных, если будем получать только полную информацию о фильмах и телепередачах. У нас все еще есть почти 1 миллион записей, и в них много контента из разных предметов. Содержимое 793 составляет около 2,6 миллионов наборов данных STC JAWWY.

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

Теперь мы можем использовать точки данных, полученные из TMDB, с нашим исходным набором данных. Он более мощный, и мы можем многое с ним сделать.

Извлечение признаков

Использование sklearn Pipeline для получения похожих фильмов/телепередач на основе обратной частоты терминов (Tfidf) путем извлечения функций из текста

Теперь, когда у нас есть матрицы, представляющие сходство между элементами. Столбцы представляют собой элементы с оценкой сходства по индексу, показывающему, насколько они похожи. Например, столбец 2 равен 0,0725, аналогичный индексу 1.

Мы начнем обратное сопоставление и сопоставление при вводе любого названия фильма/телевидения, чтобы получить рекомендации, используя 1 функцию:

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

Добавление рекомендации по ранжированию на основе самых высоких просмотров

Картирование из фактического набора данных; хорошо подходит для получения всей информации о фильме / телевидении.

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

Имитация всех рекомендаций при просмотре контента.

Что вы получите, если посмотрите…

Анализ и заключение:

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

Вот наша цель, которая отлично работает, вводя «Человек-паук: Возвращение домой» и возвращаясь с другими более похожими фильмами о супергероях; как Черепашка-ниндзя, Бэтмен и Тор!

Спасибо, что прочитали этот пост, и я надеюсь, что вам понравились выводы. Я много анализирую данные, и вы можете найти эту записную книжку на Github. Часть моего пути к данным состоит в том, чтобы (узнать › применить › объяснить). Кроме того, хотелось бы услышать ваши отзывы и любые улучшения!

Код на гитхабе:

Часть 1: Использование системы рекомендаций (ранг, пользователь-пользователь, матричная факторизация) в потоковом приложении

Часть 2: Система рекомендаций НЛП на основе контента (этот пост)

Подключаемся! Линкедин!