О проекте
Как работает Cinemoodly
Обычно фильм ищут по названию. Здесь — по описанию: вы говорите, какое кино хочется, своими словами, а поиск находит фильмы с такой же интонацией — даже если ни одно из ваших слов в них не встречается.
«мрачный детектив у моря, дождь и старая тайна»
Чем это отличается от обычного поиска
Поиск по словам проверяет совпадение: есть ли в тексте про фильм те же слова, что и в запросе. Это отлично работает, когда вы уже знаете, что ищете, — название, режиссёра, год.
Но чаще всего человек знает не название, а состояние: «что-нибудь тёплое и тихое», «красивое, но тревожное», «чтобы поплакать». Здесь совпадения слов нет и быть не может — нужное кино описано совсем другими словами. Именно этот разрыв и закрывает поиск по смыслу: он сравнивает не буквы, а значение целой фразы.
Побочный эффект такого подхода — синонимы, перифразы и опечатки перестают быть проблемой, а язык запроса не обязан совпадать с языком описания.
Как это происходит
Внутри нет ни ключевых слов, ни ручных подборок «если спросили X — показать Y». Есть четыре шага, одинаковых для каждого фильма и каждого запроса.
- Про каждый фильм собирается один текстНазвание и год, жанры, темы и теги, франшиза, режиссёр и актёры, описание сюжета — и отдельное описание атмосферы, составленное языковой моделью по этим же данным. Для русского и английского тексты собираются отдельно и никогда не смешиваются.
- Текст превращается в набор чиселНейросетевая модель переводит текст в вектор — список из 3072 чисел, координаты смысла. Главное свойство: тексты, близкие по смыслу, получают близкие векторы, даже если написаны разными словами и на разных языках.
- Ваш запрос проходит тот же путьФраза из строки поиска превращается в такой же вектор той же моделью. С этого момента запрос и фильмы живут в одном пространстве и их можно сравнивать напрямую.
- Находятся ближайшиеБаза отбирает фильмы, чьи векторы ближе всего к вектору запроса, — это и есть «похожее по смыслу». Дальше выдачу можно отсортировать по рейтингу, популярности или году и сузить фильтрами: жанр, тема, актёр, годы, оценка IMDb.
Три режима поиска
Смысловой поиск сильнее всего на описаниях и настроении, но не на всём. Поэтому режимов три, и переключаются они прямо в строке поиска.
- По смыслу
- То, что описано выше. Берите его, когда описываете кино своими словами, а не называете его.
- Гибрид
- Смысл плюс точные слова: полезно, когда в запросе есть имя, название франшизы или редкий термин, который нельзя терять.
- По словам
- Обычный текстовый поиск. Самый короткий путь, если вы знаете точное название.
Чего он не умеет
Это подбор похожего, а не ответ на вопрос. У запроса нет единственно правильной выдачи: две формулировки одной и той же мысли дадут разные списки, и это нормальная работа метода, а не ошибка.
Описание атмосферы у каждого фильма составляет языковая модель по метаданным — она может ошибаться в деталях, поэтому такие тексты помечены прямо на странице фильма.
Поиск умеет ровно то, что есть в каталоге: если фильма в нём нет, никакая формулировка его не найдёт. Каталог постоянно пополняется, но всё кино мира в нём не поместится.
Откуда данные
Описания, постеры, жанры, темы и составы — из TMDB. Рейтинги и число голосов — из некоммерческих датасетов IMDb. Мы ничего не переписываем за авторов: тексты фильмов берутся как есть, а недостающие переводы делает машинный перевод — такие тоже помечены.