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

Вот подробное объяснение проекта.

Цель проекта

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

В 2017 году платформы OTT принесли доход в размере 2019 крор рупий, к 2022 году, по оценкам, выручка может вырасти до 6000 крор. Теперь владельцы OTT должны улучшить этот опыт. Один из способов сделать это - предложить фильмы, которые могут быть интересны пользователю. Такие крупные гиганты, как Amazon и Netflix, уже делают это.

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

Введение

Это приложение в основном имеет две функции

1. Рекомендовать пользователям фильмы на основе фильма, который они искали.

2. Классифицируйте отзывы потребителей как положительные и отрицательные на веб-сайте TMBD для фильма, который они искали.

1.Рекомендовать пользователям фильмы на основе фильма, который они искали

Системы рекомендаций - одно из мощных приложений искусственного интеллекта. Вот несколько приложений рекомендательных систем.

1.Гиганты электронной коммерции, такие как Amazon, Flipkart, используют механизмы рекомендаций, чтобы показать продукты, которые пользователь может в конечном итоге купить.

2. платформы социальных сетей, такие как Instagram, facebook, Youtube, используют вашу активность и пытаются показывать сообщения, которые заставляют вас оставаться на платформе.

3. Платформы OTT, такие как amazon prime, netflix, используют собственную формулу, чтобы рекомендовать фильмы, которые могут понравиться пользователю.

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

В этом проекте мы используем подобие на основе контента, чтобы предлагать пользователю фильмы. Однако существуют различные другие методы, которые описаны в приведенной выше справочной ссылке.

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

Как он решает, какой элемент больше всего похож на понравившийся пользователю?

Есть разные способы найти сходство между фильмами. Давайте рассмотрим оба и найдем тот, который можно использовать в нашем приложении.

Оценки сходства.

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

Косинусное сходство

Косинусное сходство - это показатель, используемый для измерения того, насколько похожи документы независимо от их размера. Математически он измеряет косинус угла между двумя векторами, проецируемыми в многомерное пространство. Косинусное сходство является преимуществом, потому что даже если два похожих документа находятся далеко друг от друга на евклидово расстояние (из-за размера документа), есть вероятность, что они все еще могут быть ориентированы ближе друг к другу. Чем меньше угол, тем выше косинусное подобие.

Расстояние Левенштейна

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

В нашем приложении мы используем гибрид обоих методов. Основная причина этого - повышение точности.

2. Классификация настроений пользователей с помощью обработки естественного языка

С точки зрения непрофессионала, обработка естественного языка - это способ, который помогает нам общаться с компьютером. В настоящее время в этой области проводится огромное количество исследований. Крупные компании, такие как Google, вкладывают в это большие средства.

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

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

Есть много способов преобразования слов в векторы. Некоторые из них - это набор слов и векторизатор tfidf. Поскольку мешок слов не сохраняет смысловое значение значения. Мы используем векторизатор tfidf.

Векторизатор Td-Idf

TF-IDF для слова в документе рассчитывается путем умножения двух разных показателей:

  • Частота использования слова в документе. Есть несколько способов вычисления этой частоты, самый простой из которых - это необработанное количество случаев появления слова в документе. Кроме того, есть способы настроить частоту, длину документа или исходную частоту наиболее частого слова в документе.
  • Обратная частота слова в наборе документов. Это означает, насколько часто встречается слово во всем наборе документов. Чем ближе он к 0, тем чаще встречается слово. Этот показатель можно рассчитать, разделив общее количество документов на количество документов, содержащих слово, и вычислив логарифм.
  • Итак, если это слово очень распространено и встречается во многих документах, это число будет приближаться к нулю, в противном случае оно будет приближаться к единице.

Умножение этих двух чисел дает оценку TF-IDF для слова в документе. Чем выше оценка, тем более уместно это слово в этом конкретном документе.

Наивный классификатор Байеса

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

Архитектура

На картинке выше кратко объясняется архитектура приложения. Вот подробное объяснение того же.

Когда пользователь вводит название фильма

1. Подробная информация о фильме извлекается с помощью TMDB API. TMDB - известный сайт, на котором есть вся подробная информация о фильмах. Мы используем их API-сервис и получаем необходимую информацию.

2. Обзоры клиентов производятся путем извлечения информации из обзоров, представленных на сайте TMDB. Теперь эти обзоры преобразуются в векторы с помощью векторизатора TF IDF (упомянутого в предыдущем разделе), а затем классифицируются как положительные и отрицательные на основе ранее данных классифицированных обзоров.

3. Фильмы рекомендуются пользователю путем сравнения расстояния Левенштейна между текущим фильмом и фильмами, присутствующими в наборе данных TMDB. Предлагаются те, у которых близкое расстояние Левенштейна.

Используемые технологии и концепции

1. Оценка сходства и расстояние Левенштейна

2. фляга для бэкэнда

3. HTML, css, js для интерфейса

4.Beautifulsoup библиотека для парсинга веб-страниц

5.Наивный классификатор Байеса для классификации отзывов пользователей.

6. TMDB API для получения данных о фильмах.

Это некоторые важные из них, но есть много, что можно использовать. Пожалуйста, проверьте файл requirements.txt в репозитории github.

Методология

  1. Создайте учетную запись на https://www.themoviedb.org/, щелкните ссылку API на левой боковой панели в настройках своей учетной записи и заполните все данные, чтобы подать заявку на получение ключа API. Мы используем этот API для получения наших данных.

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

3. Создайте модель sentiment.pynb для классификации настроений пользователей на основе приведенного выше файла reviews.txt, а классификатор, используемый для классификации, - это простой байесовский классификатор.

4. Для внешнего дизайна пользовательского интерфейса используйте home.html и reccomend.html.

5. Напишите вызовы AJAX и создайте правила для получения данных с помощью сценария Java. Найдите файл reccomend.js в репозитории github ниже.

6. Теперь напишите файл main.py, чтобы завершить бэкэнд.

Это просто набросок. Чтобы заполнить заявку, нужно сделать еще много вещей. Найдите код в репозитории github в конце статьи.

Окончательный результат

Вот репозиторий на github: https://github.com/avssridhar/your-movie-partner

После того, как репо развернуто на heroku, вот как это выглядит, и сайт работает на heroku.

Ссылка на сайт: https://yourmoviepartner.herokuapp.com/

Надеюсь, вы нашли приведенное выше объяснение полезным. Рассмотрите возможность хлопать в ладоши для статьи ниже. 😉

Не стесняйтесь обращаться за дальнейшими обсуждениями.

Linkedin: https://www.linkedin.com/in/avs-sridhar-8b9904176/

Twitter: https://twitter.com/AvsSridhar2

использованная литература

  1. Https://towardsdatascience.com/naive-bayes-classifier-81d512f50a7c
  2. Https://monkeylearn.com/blog/what-is-tf-idf/
  3. Https://www.youtube.com/watch?v=D2V1okCEsiE
  4. Https://datascience.stackexchange.com/questions/63325/cosine-similarity-vs-the-levenshtein-distance#:~:text=As%20mentioned%20in%20other%20answers,distance%20between%20sequences%20of% 20 символов
  5. Https://towardsdatascience.com/introduction-to-recommender-systems-6c66cf15ada