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

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

Такие рекомендатели могут быть созданы самостоятельно с помощью таких инструментов, как Sagemaker и TensorFlow, или мы можем использовать параметры plug-and-play, которые можно применить практически сразу.

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

Table of Contents
Part 1: Preparing the Data
Part 2: Generating the Recommendations
Part 3: Results

Часть 1: Подготовка данных

Входными данными являются комментарии и видеоданные из плейлиста Netflix Trailers, извлеченные с помощью YouTube Data API v3. Этот API можно использовать бесплатно, но действуют квоты использования. Следовательно, данные были извлечены за несколько дат в сентябре-октябре 2022 года.

YouTube Data API предоставляет доступ к множеству типов ресурсов и методов. Здесь использовались:

  • playlistItems.list чтобы получить список всех идентификаторов видео в плейлисте трейлеров
  • videos.list чтобы получить подробную информацию о каждом из этих видео (название, описание, дата загрузки и т. д.)
  • comments.list для получения ответов на комментарии/комментариев подуровня
  • commentThreads.list чтобы получить список основных/высших комментариев к каждому видео

В результате был получен набор данных из 1 181 917 комментариев к 1 254 видео.

Затем эти необработанные данные были очищены и отформатированы в соответствии с требованиями к схеме AWS Personalize. Это включает в себя:

  • Преобразование полей данных времени в формат метки времени UNIX
  • Проанализируйте названия видео, чтобы удалить ненужные слова, такие как «трейлер», «Netflix» и т. д.
  • Неструктурированные текстовые поля должны были быть заключены в двойные кавычки, а любые двойные кавычки внутри самого значения должны были быть удалены или отформатированы с помощью escape-символов.

Поля, которые не использовались или не очищались должным образом, были удалены на этом этапе, но остаются доступными в необработанных данных для будущих итераций. Вот окончательный набор данных:

Часть 2: Генерация рекомендаций

Теперь, когда отформатированные данные готовы, переходим к консоли AWS для создания рекомендаций!

Оба файла сначала загружаются в корзину S3 в формате CSV:

Разрешения и доступ также необходимо настроить — создайте роль IAM для AWS Personalize и добавьте политику корзины S3, чтобы разрешить Personalize доступ для чтения и записи.

Далее мы можем приступить к созданию рекомендателя из сервиса AWS Personalize:

Для начала создайте группу набора данных и выберите домен варианта использования. Персонализация предоставляет различные рецепты, включая сегментацию пользователей, персонализированное ранжирование и сопутствующие элементы. Для этого проекта я использую рецепт similar-items в пользовательском домене.

Импортируйте данные в Personalize, указав расположение S3, куда данные были загружены, и предоставив схему, которая должна соответствовать импортированным данным.

После создания и успешного импорта набора данных создайте решение и выберите тип используемого рецепта (aws-similar-items).

С этой настройкой мы можем получать результаты рекомендаций через кампанию или пакет — здесь я использую пакетное задание, чтобы получить результаты для всех видео. Укажите входные данные (список идентификаторов видео в формате JSON) и выходной каталог (папка, в которую будут записаны результаты) для запуска пакетного задания:

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

Часть 3: Результаты

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

На первый взгляд между некоторыми рекомендованными названиями есть очевидное сходство. Всем парням: Всегда и навсегда связан с другими ромкомами (Любовь крепкая, Он и есть все, Princess Switch); Alice in Borderland с другими видеоиграми и боевиками, вдохновленными мангой (DOTA, Castlevania, Ясуке), и Король тигров и другие документальные фильмы-расследования (Отче наш, Нерассказанное, Изобретая Анну). Мальчик по имени Рождество также возвращает различные фильмы на рождественскую тематику, такие как Один до конца, Рождественский замок и Эльфы.

Однако для других связь не столь ясна. Во-первых, что может быть общего между Продажой заката и Шоу Cuphead, которое нравится тем же зрителям?

Очень популярные недавние фильмы также были показаны непропорционально много раз — половина шоу в нашем списке видео были рекомендованы ‹10 раз, но один только Серый человек был рекомендован в общей сложности 370 раз!

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

  1. Добавление метаданных элемента: это решение было основано исключительно на взаимодействиях (комментариях), и метаданные элемента практически не включались. Дополнительная информация, такая как актерский состав, жанр и описания, может значительно повысить релевантность результата.
  2. Рекомендация для элементов без взаимодействий: некоторые шоу практически не содержат данных о взаимодействии, т. е. новые заголовки, сталкивающиеся с проблемой холодного запуска, или особые случаи — в этом наборе данных количество комментариев для детских шоу составляет 0, поскольку комментарии для детского контента отключены.

Какие еще области стоит изучить? Дайте мне знать, если у вас есть какие-либо предложения!

Спасибо за прочтение.