Школа Skyeng запускает skyeng.tv – совместный образовательный проект с кинокомпанией Disney. В этом проекте «Дисней» предоставляет видео-контент, а мы — технологию умных субтитров, которая также используется нами в некоторых других сервисах. Сегодня мы расскажем, как они устроены, как работают, какие проблемы нам пришлось решать при их разработке.

Что такое «умные субтитры»?


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

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



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

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

Как это работает


Стоит сразу уточнить, что мы используем два разных принципа создания умных субтитров – в зависимости от наших взаимоотношений с контентом. В случае, когда мы имеем некоторый контроль над ним и точно его себе представляем, как проекте с «Диснеем», мы, разумеется, готовим субтитры заранее вручную. Это позволяет давать точные контекстные переводы слов, добавлять полноценные литературные переводы диалогов (их видно в режиме паузы). Другой же случай – это наше браузерное расширение, помогающее учить английский язык, просматривая фильмы и сериалы на сторонних сервисах («Амедиатека», Netflix и Amazon Prime). Здесь у нас нет возможности вручную перелопатить всю базу, поэтому мы или берем английские субтитры, предоставляемые сервисом, или находим их в открытых источниках и дальше делаем их «умными» автоматическими средствами.



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

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

Такие умные субтитры готовятся в живом режиме, процесс занимает 4-6 секунд при запуске проигрывания и практически не заметен пользователю. Готовые субтитры остаются в нашей базе и при дальнейших просмотрах той же единицы контента берутся оттуда (впрочем, эти базы мы регулярно чистим, когда выкатываем новую, «более лучшую» версию парсера). Теоретически мы можем масштабировать сервер с парсером, но пока это не требуется: сейчас мы можем справиться с десятком запросов в минуту, пока на пике их оказывается три (такие результаты были в декабре, когда мы запустили проект с «Амедиатекой»), и нагрузка быстро падает, поскольку новым пользователям выдаются уже готовые титры из базы.

Узкие места


При автоматическом переводе субтитров на лету может возникнуть проблема рассинхрона. Мы с ней столкнулись, готовя сервис субтитров для «Амедиатеки». Вероятно из-за разницы в частоте кадров видео-контент на Амедиатеке слегка сжат по сравнению с таймингом публичных субтитров, которые мы используем. Кроме того, «Амедиатека» вырезает сцены, что, опять же, необходимо учитывать. Наконец, в русских субтитрах часто содержатся дополнительные строки, отсутствующие в английских (например, дублирующие имена актеров на экране). Поскольку контента много, и его добавлением занимаемся не мы, корректировать субтитры вручную невозможно, мы создали специальную библиотеку синхронизации.



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

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

Что дальше?


Темой умных субтитров мы занимаемся давно, поскольку они нужны нашим ученикам. Изначально мы разрабатывали их вообще без привязки к каким-либо сервисам, но старались сделать универсальный продукт, который сможет работать не только на нашей собственной платформе. На самом деле, мы сперва сделали браузерное расширение для учеников школы, и лишь потом предложили «Амедиатеке» совместное продвижение.

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



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

А еще мы будем рады познакомиться с новыми партнерами, которые бы хотели добавить наши умные субтитры в свой видео-сервис. Титры – важная часть нашей экосистемы, и чем шире будет выбор предложений у наших учеников, тем лучше всем.
Поделиться с друзьями
-->

Комментарии (7)


  1. thelongrunsmoke
    22.06.2017 09:13
    +8

    Мы написали отдельный парсер...

    Вот отсюда должны были начинаться технические подробности, а не вот это всё.
    В текущем виде, статье не место даже на Geektimes.


  1. dklein
    22.06.2017 09:42
    +3

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

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


    1. Ontaelio
      22.06.2017 09:48
      -3

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


  1. Hidevs
    22.06.2017 09:42
    +4

    Для большинства проблема с пониманием перевода не отдельные слова а контекст и связь их в предложения.


    1. Ontaelio
      22.06.2017 10:00
      -2

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

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


    1. dklein
      22.06.2017 11:03
      +3

      Совершенно верно. Именно разговорные фразы и обороты часто представляют проблему. Перевод вырванных из смыслаопределяющего контекста даст просто нулевой эффект.


  1. ilyaplot
    22.06.2017 10:13
    +6

    Надо такие посты автоматически переводить в хаб «спам», на который никто не будет подписан. Читать спам будут те, кому вообще нечего делать.