logo

Нейросеть
для поиска фильмов

В рамках внутреннего проекта создали NLP-сервис для умного поиска и рекомендации фильмов.
1 (12).png
2 (13).png
ИндустрияВнутренний проект
Тип бизнесаIT
РегионРоссия
ИндустрияВнутренний проект
Тип бизнесаIT
РегионРоссия

Клиент

В 2021 году мы разработали сервис по поиску фильмов и сериалов. Как и онлайн-сурдопереводчик SignLab, проект Movie Search появился в результате нашего интереса к Data Science. Точнее, к одной из ее областей – NLP, а также инструменту работы с NLP – нейронным сетям.

Столкнулись с похожей бизнес-задачей?Давайте ее обсудим
Столкнулись с похожей бизнес-задачей?Давайте ее обсудим

Процесс разработки

Простор для экспериментов

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

1/4

Подготовка

Собрали фич-лист и создали на его основе user scenario.

2/4

UI/UX

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

3/4

Разработка

Фронтендер переносил макеты в верстку. Бэкендеры разбирались с векторизацией, подбирали модели с учетом конкретных задач и делали API.

4/4

Спецификация

Задокументировали требования и описали потоки данных. Если решим доработать проект, проще будет разобраться.

Как мы построили и внедрили NLP-модель
в наш сайт для поиска фильмов:

1. Сбор датасета

Собирали мы информацию с сайта IMDb – самой крупной онлайн-базы данных о кино. У IMDb есть бесплатный API для парсинга, где данные уже классифицированы.

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

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

2. Векторизация

Любой поисковый запрос пользователя для ИИ выглядит как набор символов. Чтобы ИИ «понял» текст, его нужно перевести в числовой формат. Помогает в этом векторизация.

Вариантов поиска у нас два: по описанию и по ключевой фразе. Чтобы получать релевантные результаты, векторизацией запросов занимаются сразу два алгоритма:
– Для поиска по описанию используется языковая модель BERT от Google.
– Для поиска по ключевым словам данные из запросов извлекаются с помощью модели NER Stanza.

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

3. Формирование и сохранение векторов

Использовали открытую БД – Milvus. Он ищет схожести в наборах данных и хранит их в векторном формате.

Извлекать записи из БД можно с помощью разных методов, от этого будет зависеть конечный результат. Мы выбрали метод Евклидова расстояния (L2). Он точнее определяет координаты между точками «запрос – ответ» и выдает релевантные результаты.

4. Рекомендательная система

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

Так как Movie Search не подразумевал регистрации, пользователи не могли бы отмечать лайками понравившиеся фильмы. Значит, принцип рекомендательной системы нужно базировать на чем-то другом. Например, на тех же моделях BERT и NER Stanza – данных в датасетах для этого достаточно.

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

Технологии

technology
Бэкенд алгоритма

Python

technology
Бэкенд сервиса

Django

technology
База данных

PostgreSQL

technology
База данных

Milvus

technology
NLP-модель

BERT

technology
NLP-модель

NER Stanza

technology
Библиотека

TensorFlow

technology
Брокер сообщений

NATS

Результат

На создание Movie Search ушло шесть недель. Основные функции, на которых мы сосредоточились, – поиск фильмов и умные рекомендации. Благодаря моделям на базе нейросетей результат выдачи будет точным, даже если пользователь помнит только актера или основную идею. Достаточно пары слов на естественном языке (например, «мультфильм про то, как крыса становится поваром»), и Movie Search сделает все остальное.

98% –

точность поиска по базе фильмов.

grade
6 недель

мы потратили на разработку и запуск сервиса.

grade

Напишите нам

/ 5000

Что происходит дальше:

  • Мы получаем запрос, обрабатываем его в течение 24 часов и связываемся по указанным вами e‑mail или телефону для уточнения деталей.

  • Подключаем аналитиков и разработчиков. Совместно они составляют проектное предложение с указанием объемов работ, сроков, стоимости и размера команды.

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

  • Когда все детали улажены, мы подписываем договор и сразу же приступаем к работе.