Прототип NLP-поиска фильмов
Создали внутренний NLP-прототип, который находит фильмы по свободному описанию. Это не отдельный продукт, а наша тестовая площадка для разработки и применения решений в области обработки естественного языка.Клиент
В 2021 году мы разработали внутренний прототип для поиска фильмов и сериалов. Как и онлайн-сурдопереводчик SignLab, проект Movie Search вырос из нашей практики в Data Science – в частности, работы с NLP и нейронными сетями. Мы использовали его как тестовую среду, чтобы проверить, как модели справляются с поиском по свободному описанию.
Процесс разработки
Простор для экспериментов
Так как проект внутренний, мы сами решали, как будет выглядеть и с помощью каких инструментов будет реализован Movie Search. Это дало нам больше творческой свободы и простора для экспериментов.
Подготовка
Собрали фич-лист и создали на его основе user scenario.
UI/UX
Дизайнер сделал варфреймы и отрисовал макеты. Ориентировались на привычный для пользователей вид известных онлайн-кинотеатров.
Разработка
Фронтендер переносил макеты в верстку. Бэкендеры разбирались с векторизацией, подбирали модели с учетом конкретных задач и делали API.
Спецификация
Задокументировали требования и описали потоки данных. Если решим доработать проект, проще будет разобраться.
Как мы построили и внедрили NLP-модель
в наш сайт для поиска фильмов:
1. Сбор датасета
Для обучения модели мы собрали датасет на основе открытых источников с информацией о фильмах, включая IMDb. Это позволило быстро получить структурированные описания и метаданные без длительной подготовки с нуля.
Основной объем данных был на английском языке, поэтому мы не стали усложнять архитектуру дополнительным этапом перевода и сфокусировались на работе с оригинальными текстами. Интерфейс прототипа также сделали на английском.
Это позволило ускорить подготовку датасета и сосредоточиться на разработке модели.
2. Векторизация
Любой поисковый запрос пользователя для ИИ выглядит как набор символов. Чтобы ИИ «понял» текст, его нужно перевести в числовой формат. Помогает в этом векторизация.
Вариантов поиска у нас два: по описанию и по ключевой фразе. Чтобы получать релевантные результаты, векторизацией запросов занимаются сразу два алгоритма:
– Для поиска по описанию используется языковая модель BERT от Google.
– Для поиска по ключевым словам данные из запросов извлекаются с помощью модели NER Stanza.
Поскольку поиск – главная функция сервиса, такой подход позволяет обрабатывать как свободные описания, так и короткие запросы, повышая релевантность результатов.
3. Формирование и сохранение векторов
Для хранения и поиска векторных представлений мы использовали Milvus – специализированную базу данных для работы с такими данными. Она позволяет эффективно находить похожие объекты по расстоянию между ними.
Для поиска ближайших совпадений мы применили метрику евклидова расстояния (L2), которую использовали для ранжирования результатов по степени сходства с пользовательским запросом.
4. Рекомендательная система
В классических рекомендательных системах часто используются пользовательские данные – история просмотров, оценки или поведенческие сигналы.
В Movie Search мы сознательно отказались от этого подхода: прототип не предусматривал регистрации и сбора пользовательских данных. Вместо этого рекомендации формировались на основе анализа самих фильмов – их описаний, ключевых сущностей и смысловой близости. Для этого мы использовали NLP-модели, включая BERT для работы с текстом и NER Stanza для извлечения сущностей.
Такой подход позволил протестировать сценарий рекомендаций без пользовательских профилей и оценить, насколько хорошо модель справляется с задачей на основе содержимого данных.
Технологии
Бэкенд алгоритма
Python
Бэкенд сервиса
Django
База данных
PostgreSQL
База данных
Milvus
NLP-модель
BERT
NLP-модель
NER Stanza
Библиотека
TensorFlow
Брокер сообщений
NATS
Результат
На разработку прототипа Movie Search ушло шесть недель. Основной фокус был на реализации поиска по свободному описанию и базовой рекомендательной логики.
В результате мы получили рабочий прототип, который позволяет находить фильмы даже по неполному или неточному описанию – например, по идее сюжета, сцене или известному персонажу.
Проект стал для нас практической задачей, на которой мы отработали подходы к NLP-поиску и рекомендациям без использования пользовательских данных.
релевантных совпадений на тестовых сценариях.
мы потратили на разработку и запуск прототипа.

Проект не является готовым продуктом и не распространяется как отдельное решение. Movie Search – это внутренняя разработка, на базе которой мы тестируем NLP-подходы и применяем их в клиентских проектах.
Что происходит дальше:
Мы получаем запрос, обрабатываем его в течение 24 часов и связываемся по указанным вами e‑mail или телефону для уточнения деталей.
Подключаем аналитиков и разработчиков. Совместно они составляют проектное предложение с указанием объемов работ, сроков, стоимости и размера команды.
Договариваемся с вами о следующей встрече, чтобы согласовать предложение.
Когда все детали улажены, мы подписываем договор и сразу же приступаем к работе.