Анализ фильмов с интернет-портала Кинопоиск

в 7:16, , рубрики: API Кинопоиск, анализ данных, аналитика, Кинопоиск, Микросервисная архитектура, фильмы

О. Р. Чумакова* , С. Р. Леонов* , И. В. Пятлин* и А. А. Антонов*

 *Санкт-Петербургский политехнический университет Петра Великого, Санкт-Петербург, Россия

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

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

Для эффективной работы системы был использован современный технологический стек. Обработка данных осуществлялась с помощью MongoDB, что обеспечило хранение и управление большими объёмами неструктурированной информации. RabbitMQ организовал асинхронный обмен сообщениями между компонентами системы, а серверная часть приложения разрабатывалась на базе Spring Boot, что ускорило процесс разработки и упростило развертывание приложения. Контейнеризация с использованием Docker обеспечила удобное развертывание и масштабирование системы. Основными языками программирования стали Java 17 и Python: Java использовалась для серверной части и микросервисов, а Python — для анализа данных и построения алгоритмов обработки информации.

Для анализа данных применялись библиотеки Pandas, Seaborn и SciPy, которые обеспечили эффективную обработку данных и визуализацию результатов. В рамках анализа строились графики, отображающие популярность жанров, исследовалась корреляция оценок на Кинопоиске и IMDb, а также визуализировалась связь между бюджетами и кассовыми сборами. Для представления результатов применялись такие инструменты, как matplotlib и seaborn, позволяя визуализировать ключевые закономерности в виде графиков и диаграмм.

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

Ключевые слова: КиноПоиск, фильмы, анализ данных, жанры, API КиноПоиск, микросервисная архитектура, аналитика.

1. Введение

1.1. Обзор предметной области

КиноПоиск[1] — это крупнейшая российская онлайн-платформа для поиска, просмотра и оценки фильмов и сериалов. Сервис предоставляет информацию о фильмах, сериалах, актерах, режиссерах и других участниках кинопроизводства. На платформе пользователи могут выставлять оценки фильмам, оставлять рецензии, составлять списки для просмотра и делиться своими впечатлениями с другими участниками сообщества. КиноПоиск служит одновременно базой данных о фильмах и социальной сетью для киноманов, что делает его ценным источником данных для анализа предпочтений зрителей и изучения закономерностей в индустрии кино.

КиноПоиск был выбран для анализа по нескольким причинам. Во-первых, это крупнейшая русскоязычная платформа, предоставляющая доступ к данным о тысячах фильмов и сериалов, включая метаданные (жанр, год выпуска, актерский состав) и пользовательские оценки. В отличие от международных аналогов, таких как IMDb или Rotten Tomatoes, КиноПоиск лучше отражает вкусы и предпочтения русскоязычной аудитории, что позволяет выделить локальные тренды и провести их сравнение с международными. Во-вторых, доступ к данным КиноПоиска возможен через публичные или полуофициальные API и парсинг, что позволяет собирать данные о фильмах, оценках и рецензиях для последующего анализа.

Для сбора данных мы использовали API КиноПоиска[2], который позволяет получить доступ к информации о фильмах, включая их название, жанры, год выхода, бюджет, сборы, рейтинги (как на КиноПоиске, так и на других платформах, таких как IMDb), количество отзывов и комментарии пользователей. Также доступны метаданные о создателях фильмов — актерах, режиссерах и продюсерах. Эти данные позволяют проводить разносторонний анализ, включая изучение корреляций между бюджетом и сборами, выявление наиболее популярных жанров и анализ различий в оценках фильмов на КиноПоиске и IMDb.

Интерес и актуальность темы объясняются потребностью киностудий и продюсеров в прогнозировании успеха фильмов на стадии производства. Анализ взаимосвязей между бюджетом, сборами и пользовательскими оценками может помочь определить ключевые факторы, влияющие на успех фильмов. Кроме того, популярность потоковых сервисов и онлайн-платформ делает востребованными исследования зрительских предпочтений, которые могут быть использованы для таргетированной рекламы и рекомендационных систем. Результаты анализа также полезны для платформы КиноПоиск, поскольку они позволяют улучшать алгоритмы рекомендаций и персонализировать контент для пользователей.

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

1.2. Постановка задачи

Основные задачи проекта включают в себя:

  1. Сбор данных: Использование API КиноПоиск для извлечения информации о фильмах.

  2. Обработка данных: Анализ текстовых данных, вычисление средней оценки фильма, определение наиболее популярных жанров и актеров.

  3. Визуализация данных: Представление результатов анализа с помощью графиков и диаграмм для выявления трендов в фильмах.

  4. Автоматизация обновлений: Регулярное обновление базы данных с новыми фильмами и свежими оценками.

Исследовательские задачи включают в себя:

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

2. Анализ изменения популярности различных жанров фильмов с течением времени. Оценить, как изменялась популярность различных жанров фильмов в зависимости от времени. Это поможет понять текущие тренды в киноиндустрии

3. Исследовать, как бюджет фильмов соотносится с их сборами. Оценить, существует ли корреляция между бюджетом фильма и его сборами на кассе, чтобы понять, насколько эффективными являются инвестиции в фильмы.

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

1.3. Предмет и объект исследования

Для данного проекта, который включает в себя аналитику данных о фильмах (оценки, жанры, бюджеты, актеры, режиссеры и т. д.), можно выделить следующие предмет и объект исследования.

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

  • Оценки фильмов: Исследование распределения оценок фильмов и факторов, влияющих на них.

  • Популярность жанров: Изучение изменений в популярности жанров фильмов с течением времени.

  • Бюджеты и сборы: Анализ взаимосвязи между бюджетами фильмов и их кассовыми сборами.

  • Актеры и режиссеры: Определение роли актеров и режиссеров в успехе фильмов, особенно в контексте фильмов с высокими оценками.

Объект исследования — это непосредственно то, что подвергается анализу. В рамках этого проекта объектами исследования являются:

  • Фильмы: Все фильмы, представленные на исследуемом портале.

  • Данные о фильмах: Это может включать данные о жанре, бюджете, сборах, оценках пользователей, а также информацию о съемочной группе (актеры, режиссеры).

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

Таким образом, предмет исследования связан с различными аспектами, которые можно анализировать в контексте данных о фильмах, а объект исследования — это сами фильмы и связанные с ними метрики.

1.4. Альтернативные площадки для получения данных

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

1. IMDb (Internet Movie Database)  — это крупнейшая международная платформа, предоставляющая обширную базу данных о фильмах, сериалах, актерах, режиссерах и других участниках киноиндустрии. IMDb охватывает глобальный рынок и используется зрителями по всему миру.

  • Преимущества:

    • Широкий охват аудитории по всему миру.

    • Данные на английском языке и возможность получения международных рейтингов.

    • Большое количество отзывов и оценок пользователей.

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

  • Недостатки:

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

2. TMDb (The Movie Database) — это международная база данных фильмов и телешоу, которая предоставляет подробную информацию о фильмах, сериалах и актерах. Это бесплатная платформа с открытым API, что позволяет использовать данные в различных приложениях и проектах.

Преимущества:

  • Бесплатный доступ к данным через API.

  • Возможность интеграции с другими сервисами и приложениями.

  • Хорошо структурированная информация о фильмах, сериалах и актерах.

Недостатки:

  • Меньший охват аудитории по сравнению с IMDb или КиноПоиском.

3. Rotten Tomatoess — это популярная платформа, которая собирает рецензии и рейтинги от критиков и зрителей. Она предоставляет усредненные рейтинги для фильмов и сериалов на основе анализа профессиональных рецензий и зрительских оценок.

Преимущества:

  • Уникальный подход, основанный на рецензиях критиков и зрителей.

  • Обширная информация о фильмах и актерах.

  • Хорошая репутация среди зрителей и критиков.

Недостатки:

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

4. FilmAffinity — это международная платформа, которая предоставляет данные о фильмах, сериалах и актерах, с фокусом на европейский и испаноязычный рынок.

Преимущества:

  • Хорошо развита в испаноязычных странах.

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

Недостатки:

  • Меньше данных о фильмах на английском языке и ограниченный охват международной аудитории.

5. AllMovie — это платформа, предоставляющая информацию о фильмах, жанрах, актерах и режиссерах, а также рецензии и рекомендации.

Преимущества:

  • Разнообразие жанров и подробные профили фильмов.

  • Платформа предоставляет аналитику о киноиндустрии.

Недостатки:

  • Ограниченный набор фильмов по сравнению с IMDb или КиноПоиском.

6. Letterboxd — это социальная сеть для киноманов, которая позволяет пользователям делиться отзывами о фильмах, создавать списки и делиться рекомендациями. Платформа имеет как зрительские, так и профессиональные оценки.

Преимущества:

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

  • Рекомендации фильмов на основе предпочтений друзей.

  • Система тегов и списков фильмов.

Недостатки:

  • Ограниченное количество профессиональных рецензий.

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

Преимущества:

  • Хороший доступ к данным о фильмах в кинотеатрах.

  • Система зрительских отзывов и оценок.

Недостатки:

  • Ограничение по географическому охвату, поскольку Fandango фокусируется в основном на американской аудитории.

8. Metacritic собирает рецензии критиков и пользователей, а затем агрегирует их в единую оценку. Платформа охватывает не только кино, но и музыку, игры, сериалы.

Преимущества:

  • Уникальная система агрегирования рецензий.

  • Широкий охват критических и пользовательских оценок.

Недостатки:

  • Платформа менее ориентирована на массовую аудиторию, чем другие ресурсы.

Выбор между этими платформами зависит от целей проекта. КиноПоиск — идеален для анализа русскоязычной аудитории и фильмов, снятых в России или СНГ. IMDb и TMDb обеспечивают глобальный охват и могут быть полезны для более широкого анализа международного кино. Для оценки критических рецензий можно использовать Rotten Tomatoes или Metacritic, а для социальных взаимодействий и рекомендаций — Letterboxd. Выбор платформы должен учитывать как языковые и культурные особенности аудитории, так и цели анализа.

2. Обзор аналогичных исследований

Для анализа аналогичных исследований по теме исследования фильмов и их популярности были рассмотрены две работы, проведенные зарубежными авторами:

  1. "Movie Data Analysis and a Recommendation Model" [3]

В этом исследовании проанализированы данные о фильмах и разработана модель рекомендаций. Основная цель работы — создать систему рекомендаций фильмов на основе анализа пользовательских предпочтений и данных о фильмах. Для анализа использовался датасет с платформы Kaggle, содержащий данные о фильмах, такие как идентификатор фильма, идентификатор пользователя, рейтинг и дата оценки.

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

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

  1. "Capstone Project on Movie Data Analysis" (Carnegie Mellon University) [4]

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

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

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

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

3. Описание и характеристика модели данных

3.1. Характеристика источника данных

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

1. Полнота данных отражает наличие всей необходимой информации для исследования.

Преимущества:

  • Kinopoisk API предоставляет широкий спектр данных:

    • Название фильма, год выпуска, жанр, описание.

    • Оценки пользователей и критиков.

    • Информация о бюджете и кассовых сборах.

    • Состав съемочной группы (режиссеры, актеры, сценаристы).

    • Даты релизов и страны производства.

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

Ограничения:

  • Полные бюджетные данные и кассовые сборы могут отсутствовать для малобюджетных фильмов и независимого кино.

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

  • Данные о жанрах могут быть ограничены и не всегда включают все поджанры.

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

2. Точность данных означает, насколько правильно и подробно данные передают реальное положение дел.

Преимущества:

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

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

  • Информация о жанрах и странах производства совпадает с официальными источниками.

Ограничения:

  • Пользовательские оценки могут быть подвержены субъективности, накруткам или аномалиям (например, резкий рост отрицательных оценок из-за определенных событий).

  • Бюджет и сборы могут быть приблизительными или неполными, особенно для международного проката.

  • Некоторая информация может дублироваться или содержать ошибки из-за человеческого фактора в источниках данных.

Вывод: Точность данных из Kinopoisk API высокая, но субъективные оценки пользователей и неполная финансовая информация могут снизить ее уровень.

3. Достоверность данных показывает, насколько источнику можно доверять и насколько данные подтверждены авторитетными источниками.

Преимущества:

  • Kinopoisk — авторитетная платформа для киноданных в России и странах СНГ.

  • Данные о фильмах, актерах и жанрах часто согласуются с другими крупными источниками, такими как IMDb и The Movie Database (TMDb).

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

Ограничения:

  • Данные о кассовых сборах и бюджетах не всегда подтверждаются официальными источниками.

  • Рейтинги могут быть подвержены "накрутке" или предвзятым оценкам со стороны организованных групп пользователей.

  • Устаревшие или малоизвестные фильмы могут содержать устаревшую или непроверенную информацию.

Вывод: Достоверность данных из Kinopoisk API высокая, особенно для популярных фильмов. Однако финансовые показатели и оценки пользователей требуют дополнительной проверки.

Обобщение:

Критерий

Оценка

Комментарий

Полнота

Высокая

Основные данные присутствуют, но бывают пробелы в деталях.

Точность

Высокая

Пользовательские оценки и бюджетные данные могут варьироваться.

Достоверность

Высокая

Kinopoisk — надежный источник, но нуждается в валидации финансовых данных.

Таким образом, данные из Kinopoisk API являются хорошей основой для аналитического проекта. Однако для критически важных аспектов (например, бюджетов или финансовых сборов) рекомендуется дополнительно сверять информацию с альтернативными источниками, такими как IMDb или TMDb.

4. Программное решение

4.1. Архитектура

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

Модуль извлечения данных: Этот модуль отвечает за сбор данных из различных источников, таких как API КиноПоиска или IMDb. Его основная цель — автоматизация процесса извлечения информации, включая данные о фильмах, рейтингах, жанрах, актёрах и других метаданных. Используются современные подходы, такие как асинхронные API-запросы (реализованные на базе Spring Reactive), что позволяет эффективно использовать токены доступа и минимизировать задержки. Модуль также включает механизм обработки ошибок, что гарантирует стабильность работы при сбоях в доступе к внешним сервисам

Модуль хранения данных: Модуль хранения данных играет центральную роль в обеспечении доступности и целостности собранной информации. Данные, полученные от модуля извлечения, сохраняются в базе данных MongoDB, которая выбрана благодаря её способности обрабатывать большие объёмы неструктурированных данных. Основные функции модуля:

  • Обработка и сохранение JSON-объектов, полученных из API.

  • Устранение дублирующихся записей и обеспечение нормализации данных.

  • Поддержка индексации для ускорения доступа к данным.

  • Реализация механизма резервного копирования для предотвращения потерь данных. Этот модуль предоставляет данные для дальнейшей обработки через HTTP-интерфейсы или прямой доступ к базе.

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

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

Архитектура проекта представлена на рисунке 1.

Анализ фильмов с интернет-портала Кинопоиск - 1

Рис. 1. Архитектура проекта

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

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

Для работы с базами данных в проекте была выбрана MongoDB[5] — высокопроизводительная NoSQL-база данных, которая поддерживает гибкое хранение информации в формате BSON (бинарное представление JSON). Благодаря своей масштабируемости и способности обрабатывать большие объемы данных, MongoDB стала оптимальным решением для работы с неструктурированными данными.

Для организации обмена сообщениями между компонентами системы использовался RabbitMQ[6] — брокер сообщений с открытым исходным кодом. Он позволяет реализовать асинхронную передачу сообщений между микросервисами, что обеспечивает устойчивость системы и упрощает обработку больших потоков данных.

В качестве основного фреймворка для разработки серверной части проекта был выбран Spring Boot[7], который упрощает создание, настройку и развертывание приложений на языке Java. Благодаря встроенной поддержке работы с базами данных, безопасностью и другими важными аспектами разработки, Spring Boot позволил сократить время разработки и повысить устойчивость системы. Базовая инфраструктура приложения строилась на фреймворке Spring, который предоставляет гибкий механизм управления зависимостями и удобные инструменты для создания многофункциональных приложений.

Для анализа данных и визуализации применялись библиотеки Pandas[8], Seaborn[9] и SciPy[10]. Pandas использовалась для работы с табличными данными и временными рядами, что позволило эффективно обрабатывать и анализировать большие объемы данных. Для визуализации ключевых показателей использовалась библиотека Seaborn, которая предоставляет удобный инструмент для создания сложных графиков и диаграмм. Дополнительно библиотека SciPy применялась для научных вычислений, включая работу с математическими и статистическими задачами, что обеспечило проведение точного анализа данных.

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

Основными языками программирования проекта стали Java 17[13] и Python[14]. Java 17 была выбрана за ее высокую производительность, безопасность и долгосрочную поддержку (LTS), что делает её надежным выбором для серверных приложений и микросервисов. Python использовался для анализа данных и построения алгоритмов обработки информации, благодаря своей универсальности, лаконичному синтаксису и огромному количеству библиотек для анализа данных и машинного обучения.

4.3. Особенности реализации

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

  • Асинхронная архитектура: Использование Spring Reactive позволяет системе эффективно обрабатывать множество одновременных запросов. Асинхронность помогает справляться с ограничениями API КиноПоиска, где максимальное количество запросов ограничено, благодаря оптимальному использованию доступных токенов и минимизации времени простоя.

  • Изолированность модулей: Каждая функциональная часть системы реализована в виде отдельного модуля с чётко определёнными задачами. Например, модуль извлечения данных полностью сосредоточен на работе с API, тогда как модуль очистки фокусируется на обработке и нормализации данных. Такой подход упрощает разработку, тестирование и последующее масштабирование системы.

  • Масштабируемость: Горизонтальное масштабирование поддерживается за счёт добавления новых серверов для модулей Fetcher и Analyzer, кластеризации RabbitMQ и шардирования MongoDB. Вертикальное масштабирование реализовано через увеличение вычислительных ресурсов для отдельных серверов. Это позволяет системе обрабатывать большие объёмы данных без потери производительности.

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

  • Контейнеризация: Благодаря использованию Docker, все компоненты системы упакованы в контейнеры, что обеспечивает идентичную среду для разработки и эксплуатации. Конфигурация через Docker Compose позволяет быстро развернуть систему на любой инфраструктуре.

4.4. Возможности горизонтального масштабирования

Горизонтальное масштабирование в проекте обеспечивается рядом архитектурных решений:

  • Fetcher: Этот модуль может работать одновременно на нескольких серверах, что позволяет увеличить количество запросов к API КиноПоиска. Использование реактивных подходов обеспечивает эффективное распределение нагрузки между серверами.

  • RabbitMQ: Кластеризация брокера сообщений позволяет системе справляться с большими объёмами данных. Сообщения распределяются между несколькими очередями, что снижает риск появления "узких мест".

  • MongoDB: Реализовано шардирование, что даёт возможность хранить большие объёмы данных, распределённых между несколькими серверами. Это особенно важно для долгосрочного хранения метаданных о фильмах.

  • Analyzer: Этот модуль масштабируется за счёт параллельной работы нескольких серверов, которые используют кэширование для ускорения повторных вычислений. Такой подход обеспечивает быструю обработку аналитических запросов даже при увеличении нагрузки.

4.5. Дистрибутив и развертывание

Система разрабатывалась с акцентом на удобство развертывания и поддержки. Для этого используется контейнеризация с помощью Docker. Каждый модуль системы, включая Fetcher, Analyzer и Storage, упакован в отдельный контейнер. Контейнеры объединены через docker-compose.yml, что упрощает настройку и запуск системы.

Пользователь может развернуть систему на локальной машине или в облачной инфраструктуре. В сопроводительной документации подробно описаны шаги настройки и конфигурации. Основные преимущества такого подхода:

  • Мобильность: Контейнеры могут быть развернуты в любой среде без необходимости изменения кода.

  • Стабильность: Единообразие среды разработки и эксплуатации снижает вероятность ошибок, связанных с несовместимостью зависимостей.

  • Масштабируемость: Система легко адаптируется к увеличению нагрузки за счёт добавления новых контейнеров.

5. Результаты анализа

5.1 Распределение оценок фильмов на Кинопоиске

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

Основные этапы подготовки данных:

  1. Извлечение данных:

    • Данные поступали в виде потока JSON-объектов. Каждый объект представлял собой информацию о фильме, включая название, рейтинг, жанры, страны производства, актеров, режиссеров и финансовую информацию (бюджет и сборы).

    • Все полученные объекты были собраны в список и преобразованы в табличный формат (DataFrame) с помощью библиотеки Pandas.

  2. Обработка категориальных данных:

    • Столбцы, содержащие списки жанров и стран производства, были преобразованы в читабельный вид. Вместо вложенных JSON-объектов был создан список с названиями жанров и стран для каждого фильма.

  3. Конвертация валют:

    • Для анализа бюджета и сборов фильмы изначально имели значения в различных валютах (USD, EUR, RUB). С использованием фиксированных курсов валют (1 USD = 90 RUB, 1 EUR = 100 RUB) все значения бюджета и сборов были переведены в рубли.

  4. Обработка пропусков и преобразование типов:

    • Пропуски в данных о жанрах и странах были заполнены значением "неизвестно".

    • Были удалены фильмы, у которых отсутствовало название или не было указано значений рейтингов Кинопоиска и IMDb.

    • Столбцы, содержащие числовые данные (оценки, бюджет, сборы), были приведены к числовому формату для корректного анализа.

  5. Извлечение данных о персоналиях:

    • Для каждого фильма из списка участников проекта (режиссеры и актеры) были извлечены имена актеров и режиссеров, чтобы использовать их для анализа.

  6. Финальная очистка данных:

    • После всех преобразований и обработки было оставлено только 14 основных столбцов с информацией о фильме: название, год выпуска, жанры, страны, рейтинги (Кинопоиск и IMDb), количество голосов, бюджет и сборы в рублях, а также список актеров и режиссеров.

    • Очищенные данные были сохранены в файл kinopoisk_cleaned_movies.csv для последующего анализа.

После подготовки данных был проведен анализ распределения оценок фильмов на Кинопоиске. Оценки пользователей Кинопоиска (столбец rating.kp) послужили основным показателем для анализа.

Основные этапы анализа:

  1. Расчет ключевых статистических показателей:

  • Средняя оценка: Рассчитано среднее арифметическое всех оценок Кинопоиска, чтобы определить, какие оценки встречаются чаще всего.

  • Медианная оценка: Рассчитана медиана — это оценка, которая делит все фильмы на две равные части.

  • Модальная оценка: Определена мода — это оценка, которая встречается наиболее часто среди всех фильмов.

  1. Анализ доли высоких и низких оценок:

  • Посчитан процент фильмов с высокими оценками (выше 7 баллов) и низкими оценками (меньше 5 баллов). Эти показатели помогают оценить, насколько критичны пользователи платформы Кинопоиск.

  1. Графический анализ:

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

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

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

Анализ фильмов с интернет-портала Кинопоиск - 2

Рис. 2. Распределение оценок на платформе КиноПоиск

Результаты анализа:

После обработки данных и их анализа были получены следующие ключевые результаты:

  • Средняя оценка: Средняя оценка фильмов на Кинопоиске составила 6.29 балла. Это указывает на то, что большинство фильмов получает достаточно высокие оценки, что может быть связано с особенностями аудитории или механизмами выставления оценок.

  • Медианная оценка: Медианная оценка составила 6.42. Немного выше среднего, что свидетельствует о небольшой асимметрии в сторону высоких оценок.

  • Модальная оценка: Самая часто встречающаяся оценка среди всех фильмов оказалась равной 6.00, что отражает более реалистичное восприятие фильмов пользователями.

  • Процент высоких и низких оценок:

    • Процент фильмов с оценкой выше 7 баллов составил 25.69%, что говорит о количестве положительно оцененных фильмов.

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

Также на гистограмме распределения оценок можно увидеть несколько ключевых особенностей:

  • Большинство оценок сгруппированы в диапазоне от 6 до 8 баллов, что подчеркивает положительный настрой аудитории Кинопоиска.

  • Видна четкая концентрация около оценок 7 и 8, что совпадает с модой и медианой, найденными ранее.

  • Значения ниже 5 встречаются реже, что отражает низкий процент фильмов с откровенно негативными отзывами.

Гистограмма показывает плавное распределение без явных скачков, что говорит о том, что оценки выставляются равномерно, без резких всплесков.

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

5.2 Сравнение оценки фильмов на IMDb и Кинопоиск

Для корректного сравнения оценок фильмов на Кинопоиске и IMDb были выполнены следующие шаги:

  1. Очистка данных:

  • Были удалены фильмы, у которых отсутствуют значения оценок Кинопоиска (rating.kp) и IMDb (rating.imdb).

  • Все значения рейтингов были приведены к числовому типу данных для удобства расчетов и визуализации.

  1. Рассчет коэффициента корреляции:

  • Для оценки степени зависимости между оценками на Кинопоиске и IMDb был рассчитан коэффициент корреляции Пирсона.

  • Корреляция Пирсона измеряет силу линейной зависимости между двумя переменными и принимает значения от -1 до 1:

  • 1 — идеальная положительная зависимость (чем выше оценка на одной платформе, тем выше и на другой).

  • 0 — отсутствие линейной зависимости (никакой связи между оценками нет).

  • -1 — идеальная отрицательная зависимость (чем выше оценка на одной платформе, тем ниже на другой).

Визуализация взаимосвязи оценок:

Для лучшего понимания связи оценок был построен диаграмма рассеяния (scatter plot) с дополнительной линейной регрессией.

Элементы графика:

  • Точки: Каждая точка на графике представляет собой фильм, где координаты (x, y) — это оценка на Кинопоиске и оценка на IMDb.

  • Линия регрессии: Она показывает общее направление зависимости между оценками на двух платформах.

  • Коэффициент корреляции: Отображен в виде текста на графике, чтобы сразу видеть силу и направление связи.

  • Оси X и Y: Диапазоны осей ограничены от 0 до 10, чтобы оценки на Кинопоиске и IMDb находились в сопоставимом диапазоне.

Рис. 3. Сравнение оценок на двух платформах: КиноПоиск и IMDb

Результаты анализа:

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

  2. Анализ линейной регрессии: Линия регрессии, отображенная на графике, показывает положительную связь между оценками. Наклон линии говорит о том, что при увеличении оценки на Кинопоиске, оценка на IMDb тоже растет. Плотность точек ближе к линии говорит о сильной связи. Если точки сильно разбросаны вокруг линии, это говорит о слабой корреляции. Однако  также заметно, что оценки на IMDb в среднем ниже, чем на Кинопоиске. Это может быть связано с различиями в аудитории двух платформ. IMDb — международная платформа с более разнообразной аудиторией, что часто приводит к строгим или сбалансированным оценкам. Кинопоиск, в свою очередь, ориентирован преимущественно на русскоязычных пользователей, и их оценки могут быть более лояльными, особенно к местным фильмам. 

Основные наблюдения: 

  1. Положительная корреляция: Трендовая линия показывает, что оценка на Кинопоиске и IMDb растут вместе, хотя разброс довольно велик, особенно в середине диапазона (оценки от 4 до 7), где оценки не всегда совпадают.

  2. Отличия в восприятии: Приблизительно при высоких оценках (8+) наблюдается тенденция к меньшим расхождениям, что может свидетельствовать о более универсальной привлекательности этих фильмов для разных аудиторий. 

  3. Разброс данных: В диапазоне оценок от 3 до 7 разброс значителен, что может свидетельствовать о различиях в восприятии фильмов на этих платформах, возможно, из-за культурных или жанровых предпочтений. 

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

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

5.3 Рейтинг фильмов по жанрам

Для анализа жанров фильмов и их оценок на двух платформах были выполнены следующие шаги:

  1. Очистка и преобразование данных:

  • Разделение жанров: так как один фильм может относиться к нескольким жанрам, колонка с жанрами была "взорвана" (explode), чтобы каждая строка соответствовала одному жанру конкретного фильма.

  • Выбор столбцов: для анализа были отобраны только три столбца — жанр, оценка на Кинопоиске (rating.kp) и оценка на IMDb (rating.imdb).

  • Группировка по жанрам: были рассчитаны средние значения оценок для каждого жанра по обеим платформам.

  • Фильтрация по количеству фильмов: чтобы исключить жанры с недостаточным количеством фильмов (что могло бы исказить выводы), были оставлены только те жанры, которые содержат не менее 500 фильмов.

  1. Подготовка данных для визуализации:

  • Данные были преобразованы из "широкого" формата (где в одной строке средние оценки Кинопоиска и IMDb) в "длинный" формат для построения сгруппированного гистограммы со сравнением оценок.

  • Для улучшения читаемости была задана цветовая схема и стиль для графика.

Визуализация распределения рейтингов по жанрам

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

Элементы графика:

  • Горизонтальные столбцы: Показывают средние оценки для каждого жанра на Кинопоиске и IMDb.

  • Цвета столбцов: Оранжевый для Кинопоиска и жёлтый для IMDb.

  • Ось Y: Отображает список жанров, отсортированных по значению средних оценок.

  • Ось X: Показывает диапазон оценок от 4 до 10, чтобы избежать излишнего "белого пространства" на графике.

Анализ фильмов с интернет-портала Кинопоиск - 3

Рис. 4. Средний рейтинг фильмов по жанрам на КиноПоиске и IMDb

На основе полученного графика можно сделать следующие выводы:

  1. Различия в оценках по жанрам: В некоторых жанрах средние оценки на Кинопоиске и IMDb заметно различаются. Например, такие жанры, как семейное кино и боевик, имеют высокие оценки на Кинопоиске, но на IMDb они намного ниже. Это может указывать на различия в восприятии этих жанров среди русскоязычной и международной аудитории.

  2. Жанры с одинаковыми оценками: Для некоторых жанров, таких как документальное кино и короткометражка, оценки на обеих платформах более близки, что может говорить о схожем восприятии этих жанров в обеих аудиториях.

  3. Жанры с высокой популярностью: Жанры документальное и биография имеют сравнительно высокие оценки на обеих платформах. Это может отражать вкусовые предпочтения пользователей, которые ценят более серьёзные и "глубокие" жанры.

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

Практическое применение

  1. Для анализа аудитории: Различие в оценках по жанрам может использоваться для анализа предпочтений русскоязычной и международной аудитории.

  2. Для маркетинга: Производителям контента и дистрибьюторам можно ориентироваться на жанры, которые больше ценятся локальной аудиторией (например, семейное кино).

  3. Для рекомендационных систем: Можно учитывать различия в оценках жанров при разработке рекомендаций фильмов для пользователей двух платформ.

5.4. Изменение популярности топ-15 жанров

Для построения графика популярности жанров по годам были выполнены следующие шаги:

  1. Разделение жанров:

  • Для каждой строки с фильмом жанры были "взорваны" (explode), чтобы каждый фильм имел по одной записи на жанр. Это позволило анализировать, как часто определённый жанр встречается в выпусках фильмов за каждый год.

  1. Подсчёт фильмов по годам и жанрам:

  • Количество фильмов для каждого жанра было подсчитано по годам. В итоге для каждого сочетания "год + жанр" была рассчитана сумма фильмов.

  1. Отбор топ-15 жанров:

  • Были выбраны 15 самых популярных жанров по общему количеству фильмов, чтобы избежать перегруженности графика из-за слишком большого количества линий. Такой подход позволяет сосредоточиться на основных трендах и избежать визуального шума.

  1. Подготовка для графика:

  • Жанры были упорядочены по общему количеству фильмов (чтобы легенда отображала самые популярные жанры первыми).

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

Визуализация изменения популярности жанров

Описание графика:

  • Ось X — годы выпуска фильмов.

  • Ось Y — количество выпущенных фильмов для каждого жанра в конкретном году.

  • Цветные линии — каждая линия представляет изменение количества фильмов для одного из топ-15 жанров.

  • Цветовая палитра — для разных жанров используются яркие, легко различимые цвета из палитры tab10.

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

Анализ фильмов с интернет-портала Кинопоиск - 4

Рис. 5. Изменение популярности 15 жанров с течением времени

На графике можно увидеть:

  • С 1950-х годов наблюдается заметный рост в количестве фильмов в самых популярных жанрах. Например, драма и комедия пережили быстрый рост в последние десятилетия. 

  • Для большинства жанров пик их популярности приходится на 2000-е годы, с резким увеличением выпуска фильмов в эти годы, особенно в жанре драма, комедии и мелодрама. 

  • Некоторые жанры, такие как короткометражка, показывают спад после 1990-х, что может указывать на уменьшение интереса к короткометражному кино по сравнению с длинными форматами. 

Однако, также можно заметить резкий спад популярности всех жанров в промежутке между 2000 и 2020 годами. Чтобы определить, почему такое могло произойти, стоит более детально рассмотреть конкретно данный период времени.

Анализ фильмов с интернет-портала Кинопоиск - 5

Рис. 6. Изменение популярности 15 жанров с 2000-е по 2020-е годы

На графике явно виден спад между 2010 и 2020 годами, особенно среди жанров, таких как: 

  • Драма

  • Комедия

  • Триллер

  • Мелодрама 

  • Фэнтези 

Заметно, что многие из этих жанров начинают резко терять популярность в период с 2010 по 2020 годы, после чего тренды начинают выравниваться или сохраняться на относительно низком уровне. 

Возможные причины спада популярности жанров: 

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

  • Рост популярности стриминговых платформ: Появление таких сервисов, как Netflix, Amazon Prime и другие, изменило ландшафт киноиндустрии. На этих платформах начали выпускаться не только большие блокбастеры, но и более нишевые или независимые фильмы, что могло привести к снижению интереса к жанрам, популярным на традиционном телевидении или в кинотеатрах. 

  • Пандемия COVID-19: На спад в 2020 году мог повлиять глобальный кризис, вызванный пандемией COVID-19, который привёл к закрытию кинотеатров, отмене многих премьер и снижению производства. Зрители были вынуждены больше смотреть контент на стриминговых сервисах, и жанры, связанные с массовым кино, могли потерять популярность.

  • Конкуренция с телевизионными сериалами: В последние годы наблюдается рост популярности сериалов, что также может объяснить снижение количества фильмов в традиционных жанрах. Некоторые жанры, такие как драма и криминал, активно переходят в формат сериалов, а не остаются в рамках полнометражных фильмов. 

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

Если в какой-то период времени в определённом жанре снимается много фильмов, это может свидетельствовать о том, что жанр вызывает интерес у продюсеров, студий и создателей. Киноиндустрия реагирует на спрос зрителей, а увеличение производства фильмов в жанре — это прямое отражение того, что студии считают этот жанр перспективным и прибыльным.Также количество фильмов может служить косвенным индикатором того, что зрители интересуются этим жанром. Это не обязательно значит, что каждый фильм был успешным или получил высокие оценки, но большое количество фильмов может указывать на растущий или стабильный интерес к жанру среди широкой аудитории.Например, если какой-то жанр внезапно начал выпускаться в большом количестве, это может означать, что зрители в какой-то момент начали проявлять особый интерес к этому виду контента. Студии, понимая это, начали увеличивать количество фильмов в этом жанре. 

Использование количества фильмов как индикатора популярности жанра оправдано в контексте анализа трендов и предпочтений индустрии. Это объективный и легко измеримый показатель, который может служить основой для анализа изменений в киноиндустрии. Однако для более глубокого анализа зрительского интереса необходимо учитывать и другие параметры, такие как рейтинги, кассовые сборы или данные о просмотрах.

5.5. Бюджет фильмов и мировые сборы

Для анализа взаимосвязи между бюджетами фильмов и их мировыми сборами была проведена фильтрация и преобразование данных:

  • Были исключены фильмы с бюджетом менее 50 000 рублей и сборами менее 50 000 рублей, так как такие фильмы могли бы исказить график.

  • Были оставлены только фильмы с числом голосов на Кинопоиске более 1000 — это позволяет анализировать фильмы, которые вызвали достаточный интерес у зрителей.

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

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

Визуализация и интерпретация пузырькового графика

Описание графика

  • Ось X (логарифмическая) — бюджет фильма.

  • Ось Y (логарифмическая) — мировые сборы.

  • Размер пузырьков — чем больше голосов на Кинопоиске, тем больше пузырь.

  • Цвет пузырьков — передаёт визуальные различия между значениями (не имеет особой смысловой нагрузки).

Анализ фильмов с интернет-портала Кинопоиск - 6

Рис. 7. График пузырьков. Бюджет фильмов и мировые сборы

На графике пузырьков видно, что большинство фильмов с маленькими бюджетами и сборами находятся в нижней части графика, где пузырьки маленькие и рассеяны. Сужение и появление более крупных пузырьков начинается только на значениях бюджетов и сборов около 10^7.5 до 10^8.5, что говорит о том, что крупные фильмы с большими бюджетами и высокими сборами составляют меньшинство. В этой области мы начинаем наблюдать более плотное скопление пузырьков, что может свидетельствовать о том, что для высокобюджетных фильмов существует некоторое сходство между размерами бюджета и сборами. 

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

5.6. Анализ выбросов

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

Чтобы лучше понять, какие именно фильмы относятся к этим выбросам, были выделены четыре ключевые категории:

  1. Фильмы с большим бюджетом и большими сборами — фильмы с бюджетом более 100 млн рублей и сборами более 1 млрд рублей. Такие фильмы, как правило, являются успешными проектами, окупающими свои затраты за счет глобального проката и широкой рекламной кампании.

  2. Фильмы с большим бюджетом, но маленькими сборами — фильмы с бюджетом более 100 млн рублей, но при этом со сборами менее 1 млн рублей. Эти фильмы представляют собой финансовые провалы и являются яркими примерами неэффективного вложения средств.

  3. Фильмы с маленьким бюджетом, но большими сборами — фильмы с бюджетом менее 1 млн рублей, но при этом их сборы превышают 10 млн рублей. Такие фильмы — это "темные лошадки", которые неожиданно приносят большую прибыль, часто благодаря вирусному маркетингу или актуальности тематики.

  4. Фильмы с маленьким бюджетом и маленькими сборами — фильмы с бюджетом менее 1 млн рублей и сборами менее 1 млн рублей. Это малобюджетные проекты, которые часто остаются незамеченными широкой аудиторией и не приносят значительных доходов.

Для анализа фильмов по этим категориям был произведен отбор данных по следующим критериям: из общей базы фильмов были исключены фильмы с минимальными бюджетами и сборами (менее 50 000 рублей), а также фильмы, которые имели слишком мало оценок на Кинопоиске (менее 1000), чтобы оставить для анализа только значимые проекты. Далее, для каждого фильма была рассчитана метрика "разница между сборами и бюджетом" (fee_budget_diff), которая позволила увидеть, какие фильмы принесли наибольшую прибыль или убытки.

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

Фильмы с большим бюджетом и большими сборами:

name

genres

year

budget_rub

fees_rub_world

rating.kp

rating.imdb

Звёздные войны: Скайуокер. Восход

['фантастика', 'фэнтези', 'боевик', 'приключения']

2019

275000000.0

1074144248.0

6.057

6.4

Алиса в Стране чудес

['фэнтези', 'детектив', 'приключения', 'семейный']

2010

200000000.0

1025467110.0

7.128

6.4

Темный рыцарь: Возрождение легенды

['фантастика', 'боевик', 'триллер', 'драма', 'криминал']

2012

250000000.0

1081041287.0

8.166

8.4

Мир Юрского периода: Господство

['фантастика', 'боевик', 'триллер', 'приключения']

2022

165000000.0

1001978080.0

5.708

5.6

Хоббит: Нежданное путешествие

['фэнтези', 'приключения', 'боевик']

2012

180000000.0

1017003568.0

8.111

7.8

Фильмы с большим бюджетом, но маленькими сборами:

name

genres

year

budget_rub

fees_rub_world

rating.kp

rating.imdb

Дневники Мумбая

['драма']

2010

102000000.0

678715.0

7.578

7.0

Донбасс. Окраина

['драма', 'военный', 'триллер', 'история']

2018

105721524.0

172100.0

7.388

3.7

История одного назначения

['драма']

2018

110000000.0

623263.0

7.048

6.6

13

['ужасы', 'триллер', 'драма', 'комедия', 'криминал', 'детектив']

2006

119000000.0

362735.0

6.407

6.6

Дорогами любви

['драма', 'мелодрама']

2003

120000000.0

836225.0

8.091

6.5

Фильмы с маленьким бюджетом, но большими сборами:

name

genres

year

budget_rub

fees_rub_world

rating.kp

rating.imdb

Наполеон Динамит

['комедия']

2004

400000.0

46118097.0

6.809

7.0

Беспечный ездок

['драма', 'приключения']

1969

360000.0

41728598.0

7.656

7.2

Угнать за 60 секунд

['боевик', 'триллер', 'драма', 'криминал']

1974

150000.0

40000000.0

7.176

6.3

Пятница 13-е

['ужасы', 'триллер', 'детектив']

1980

700000.0

39754601.0

6.292

6.4

Лики смерти

['документальный', 'ужасы']

1979

450000.0

35000000.0

5.333

4.2

Фильмы с маленьким бюджетом и маленькими сборами:

name

genres

year

budget_rub

fees_rub_world

rating.kp

rating.imdb

Дом дьявола

['ужасы']

2008

900000.0

101215.0

5.553

6.3

Поза ребенка

['драма']

2013

850000.0

97170.0

6.719

7.4

Тайны старого отеля

['ужасы', 'детектив']

2011

750000.0

78396.0

4.218

5.5

Полицейская тачка

['триллер', 'криминал']

2015

800000.0

143658.0

6.276

6.3

Душа тишины

['триллер', 'драма', 'криминал']

2005

900000.0

381420.0

6.676

6.1

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

5.7. Топ 10 лучших и худших актеров и режиссеров

В данном анализе был выделен топ-10 актёров и режиссёров с самыми высокими средними рейтингами по оценкам на Кинопоиске и IMDb среди фильмов, получивших высокие оценки (выше 7.5 на одной из платформ). Для этого:

  1. Отбор фильмов с высокими рейтингами — выбраны фильмы, которые получили оценку выше 7.5 на одной из платформ (Кинопоиск или IMDb). Такой подход позволил учесть мнение пользователей обеих платформ.

  2. Разделение актёров и режиссёров — для каждого фильма был "развернут" список актёров и режиссёров, чтобы каждый актёр и режиссёр оказался в отдельной строке, что позволило корректно посчитать их вклад в фильмы.

  3. Подсчёт среднего рейтинга — для каждого актёра и режиссёра были вычислены средние рейтинги по фильмам, в которых они участвовали.

  4. Сортировка и отбор топ-10 — после сортировки по среднему рейтингу были выбраны топ-10 актёров и режиссёров, которые чаще всего ассоциируются с высоко оценёнными фильмами.

Топ-10 актёров с самыми высокими рейтингами:

actor

avg_kp_rating

avg_imdb_rating

Билли Херрингтон

9.36

9.4

Ван Даркхолм

9.36

9.4

Алан Р. Кесслер

9.11

9.3

Билл Болендер

9.11

9.3

Гил Беллоуз

9.11

9.3

Гордон Грин

9.11

9.3

Гэри Ли Дэвис

9.11

9.3

Джеймс Кисики

9.11

9.3

Джо Пекорато

9.11

9.3

Джон Д. Крэйг

9.11

9.3

Топ-10 режиссёров с самыми высокими рейтингами:

director

avg_kp_rating

avg_imdb_rating

Павел Гринёв

8.99

8.9

Лорна Дэвис

8.97

8.6

Питер Уэббер

8.94

7.8

Ричард Дэйл

8.94

7.8

Винсент Скарза

8.83

8.5

Кеннет Р. Шапиро

8.83

8.5

Янош Жомбояи

8.82

8.6

Джошуа Риль

8.8

8.1

О Юн-дон

8.8

7.65

Свен Оффен

8.78

8.4

Для выявления топ-10 актёров и режиссёров с самыми низкими рейтингами был применён аналогичный подход, но с изменением критерия отбора фильмов:

  1. Отбор фильмов с низкими рейтингами — выбраны фильмы, которые получили оценку ниже 5.5 на Кинопоиске или IMDb. Такой фильтр позволил сосредоточиться на фильмах, которые были

  2. Разделение списка актёров и режиссёров — каждый фильм был "разделён" на несколько строк для учёта всех участников.

  3. Подсчёт средних рейтингов — для каждого актёра и режиссёра были рассчитаны средние оценки фильмов, в которых они участвовали.

  4. Сортировка — актёры и режиссёры были отсортированы от самых низких к высоким рейтингам.

  5. Отбор топ-10 — выделены 10 актёров и 10 режиссёров с самыми низкими средними рейтингами.

Топ-10 актёров с самыми низкими рейтингами:

actor

avg_kp_rating

avg_imdb_rating

Адам Грэхэм

2.02

1.5

Джинни Ю

2.02

1.5

Джорджина Толентино

2.02

1.5

Дэн Гленн

2.02

1.5

Донован Смит

2.03

3.2

Луи Дель Моничо

2.03

3.2

Майк Бернелл

2.03

3.2

Рен Напье

2.03

3.2

Фиона Финлейсон

2.03

3.2

Хезер Селф

2.03

3.2

Топ-10 режиссёров с самыми низкими рейтингами:

director

avg_kp_rating

avg_imdb_rating

Льюис Шонбрун

2.02

1.5

Марк Аллен

2.03

3.2

Том Стаут

2.08

2.4

Коулмэн Френсис

2.12

1.9

Лаки Коли

2.12

2.0

Раджеш Баджадж

2.12

2.0

Жан-Жак Анно

2.13

4.1

Эндрю Беллвар

2.14

1.85

Алексей Андрианов

2.14

2.4

Бретт Скотт Эрмилио

2.15

2.0

Основные выводы:

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

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

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

6. Общие выводы

В ходе разработки программного обеспечения для анализа и визуализации данных о фильмах была реализована модульная архитектура, обеспечивающая гибкость, надёжность и масштабируемость системы. Основными компонентами стали модули для извлечения, очистки, обработки и визуализации данных. Каждый из этих модулей выполняет свою чёткую роль: от автоматизированного сбора данных из внешних источников до их анализа и наглядного представления результатов. Такой подход позволил упростить интеграцию новых функций и обеспечить высокую производительность при работе с большими объёмами данных.

Для реализации серверной части использовался Spring Boot, что обеспечило создание надёжной микросервисной архитектуры с возможностью масштабирования. Для обмена данными между модулями был задействован RabbitMQ, который позволяет передавать сообщения асинхронно и минимизировать задержки в обработке информации. Хранение данных осуществлялось в MongoDB, что обеспечило гибкость в работе с неструктурированными данными, такими как списки актёров и жанры. Для обработки и визуализации данных применялись библиотеки Pandas, NumPy, SciPy и Seaborn, что позволило автоматизировать анализ, строить статистические модели и создавать понятные графики для визуального представления ключевых выводов. Контейнеризация приложения с использованием Docker упростила развертывание системы и её переносимость между различными средами разработки и эксплуатации.

В результате проделанной работы удалось выявить несколько значимых тенденций и особенностей, которые проливают свет на современные процессы и закономерности в киноиндустрии. Анализ популярности жанров показал, что индустрия кино претерпела значительные изменения за последние десятилетия. Начиная с середины XX века, жанры драма и комедия постепенно заняли ведущие позиции по количеству выпускаемых фильмов. Это может свидетельствовать о том, что эти жанры обладают универсальной привлекательностью для широкой аудитории и остаются востребованными вне зависимости от исторического контекста или изменений в культурных предпочтениях зрителей. Интересно отметить, что жанр короткометражек, популярный в первые десятилетия развития кино, утратил своё значение после 1990-х годов. Вероятной причиной этого можно считать смещение интереса аудитории к полнометражным фильмам, которые дают возможность глубже раскрывать сюжет и персонажей. Также свою роль могло сыграть развитие потоковых сервисов, где основной акцент делается на сериалах и полнометражных картинах.

Особое внимание было уделено финансовому аспекту кинопроизводства, а именно — соотношению бюджетов фильмов и их кассовых сборов. Здесь удалось выделить несколько неожиданных закономерностей. Было обнаружено, что крупнобюджетные фильмы далеко не всегда обеспечивают высокий коммерческий успех. Довольно часто встречаются случаи, когда фильмы с огромными вложениями в производство терпят крах в прокате. Это подчёркивает, что большие инвестиции не гарантируют финансовой окупаемости. Причины такого явления могут заключаться в переоценке интересов аудитории, провалах в маркетинговых стратегиях или недостатках самого сценария и режиссёрской работы. С другой стороны, были выделены фильмы с небольшим бюджетом, но впечатляющими кассовыми сборами. Это явление заслуживает особого внимания, поскольку оно доказывает, что идея и креативный подход могут быть более ценными, чем крупные вложения. Подобные успехи часто встречаются среди независимого кино, где уникальные идеи, харизматичные персонажи и оригинальные подходы к повествованию находят отклик у зрителей.

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

Заключительной частью исследования стал анализ влияния актёров и режиссёров на успех фильмов. Этот этап работы показал, что наличие в проекте определённых актёров или режиссёров способно значительно повлиять на восприятие фильма зрителями и его итоговый рейтинг. Были выделены актёры и режиссёры, чьи фильмы чаще всего получали высокие оценки на Кинопоиске и IMDb. Такие деятели индустрии, как правило, имеют устойчивую репутацию и доверие у зрителей. Зачастую они работают над проектами, которые привлекают внимание уже на этапе анонсирования, что способствует успешному прокату. В то же время были определены и актёры, чьи фильмы систематически получают низкие оценки. Это может быть связано с тем, что они часто участвуют в проектах низкого качества или сотрудничают с кинокомпаниями, которые специализируются на малобюджетных или коммерчески сомнительных фильмах. Данный факт подчеркивает значимость выбора съёмочной команды для достижения успеха фильма.

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

7. Возможные улучшения

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

1. Оптимизация производительности и масштабируемости

  • Кэширование данных: Для улучшения производительности можно внедрить механизмы кэширования (например, Redis или Memcached) для хранения часто запрашиваемых данных. Это снизит нагрузку на базу данных и ускорит обработку запросов.

  • Масштабируемость MongoDB: Использование шардирования в MongoDB для обработки больших объемов данных и оптимизации запросов, особенно если данные сильно растут.

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

2. Улучшение обработки сообщений

  • Тонкая настройка RabbitMQ: Улучшение работы с RabbitMQ путем настройки очередей, использования приоритетных очередей или настройки длительности жизни сообщений. Это поможет уменьшить задержки и увеличить пропускную способность.

  • Мониторинг и отказоустойчивость RabbitMQ: Внедрение более эффективного мониторинга очередей сообщений с использованием таких инструментов, как Prometheus и Grafana, для отслеживания и устранения потенциальных узких мест.

3. Оптимизация работы с данными

  • Усовершенствование обработки данных с Pandas: Использование более эффективных структур данных, таких как Dask или Vaex, для работы с большими объемами данных, когда Pandas не справляется из-за ограничения памяти.

  • Использование облачных решений: Для работы с данными в реальном времени или для хранения данных можно использовать облачные хранилища и базы данных, такие как Google BigQuery, AWS RDS или MongoDB Atlas, что даст большую гибкость и масштабируемость.

4. Расширение функционала фронтенда

  • Использование современных UI-фреймворков: Для улучшения UX можно внедрить современные фреймворки, такие как React или Vue.js, для создания динамичных интерфейсов, с минимальными задержками и более высокой отзывчивостью.

  • Внедрение Progressive Web App (PWA): Это позволит вашему приложению работать как нативное приложение на мобильных устройствах, а также работать в офлайн-режиме.

  • Автоматическое обновление интерфейса: Использование WebSocket или других технологий для автоматической синхронизации интерфейса с сервером в реальном времени.

5. Обеспечение безопасности

  • Шифрование данных: Для защиты конфиденциальной информации необходимо использовать шифрование данных в базе данных (например, с использованием библиотеки AES) и защищенные каналы для передачи данных (например, TLS).

  • Роль-based access control (RBAC): Улучшение системы аутентификации и авторизации с использованием контролей доступа на основе ролей, чтобы гарантировать, что только определенные пользователи могут выполнять определенные действия.

  • Двухфакторная аутентификация: Внедрение двухфакторной аутентификации для повышения безопасности аккаунтов пользователей.

6. Контейнеризация и оркестрация

  • Использование Kubernetes: Для улучшения масштабируемости и управления контейнерами стоит рассмотреть возможность использования Kubernetes для оркестрации контейнеров Docker, что обеспечит автоматическое масштабирование и балансировку нагрузки.

  • CI/CD pipeline: Разработка и внедрение pipeline для непрерывной интеграции и доставки (CI/CD) с использованием таких инструментов, как Jenkins, GitLab CI, или GitHub Actions, для автоматизации процессов сборки, тестирования и развертывания.

7. Дополнительные улучшения в UI/UX

  • Динамическая визуализация данных: Для улучшения восприятия данных можно внедрить более сложные и интерактивные графики с использованием библиотеки, такой как D3.js или Plotly.

  • Темная тема: Для улучшения удобства работы с интерфейсом в разных условиях освещенности можно добавить поддержку темной темы, что сейчас очень востребовано среди пользователей.

8. Мониторинг и логирование

  • Centralized logging: Внедрение централизованной системы логирования (например, ELK stack — Elasticsearch, Logstash, Kibana) для эффективного мониторинга и анализа логов в реальном времени.

  • A/B тестирование: Для анализа и улучшения пользовательского опыта можно интегрировать систему A/B тестирования, чтобы определить, какие функциональности или интерфейсные решения лучше воспринимаются пользователями.

Эти улучшения помогут повысить производительность системы, улучшить UX, а также улучшить безопасность и удобство работы с проектом.

Список литературы

  1. КиноПоиск. Онлайн кинотеатр. [Электронный ресурс] // URL: https://www.kinopoisk.ru/

  2. API КиноПоиска. [Электронный ресурс] // URL:  https://kinopoiskdev.readme.io/reference/moviecontroller_findmanybyqueryv1_4 

  3. Movie Data Analysis and a Recommendation Model. [Электронный ресурс] // URL: https://www.researchgate.net/publication/366442596_Movie_Data_Analysis_and_a_Recommendation_Model 

  4. IMDb Movie Analysis. [Электронный ресурс] // URL: https://www.stat.cmu.edu/capstoneresearch/fall2022/315files_f22/team24.html 

  5. MongoDB Documentation. [Электронный ресурс] // URL: https://mongodb.prakticum-team.ru/docs/ 

  6. RabbitMQ Documentation. [Электронный ресурс] // URL: https://www.rabbitmq.com/docs 

  7. Spring Boot Documentation. [Электронный ресурс] // URL: https://docs.spring.io/spring-boot/docs/current/reference/html/

  8. Pandas Documentation. [Электронный ресурс] // URL: https://pandas.pydata.org/docs/ 

  9. Seaborn Documentation. [Электронный ресурс] // URL: https://seaborn.pydata.org/ 

  10. SciPy Documentation. [Электронный ресурс] // URL: https://docs.scipy.org/doc/scipy/

  11. Docker Documentation. [Электронный ресурс] // URL: https://docs.docker.com/ 

  12. Docker Compose Documentation. [Электронный ресурс] // URL: https://docs.docker.com/compose/

  13. Java Documentation. [Электронный ресурс] // URL: https://docs.oracle.com/en/java/ 

Python Documentation. [Электронный ресурс] // URL: https://docs.python.org/3/index.html

Автор: Chum_Olga

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js