Яндекс.Переводчик начал использовать гибридную систему перевода. К статистическому переводчику, который мы применяем уже давно, добавилась технология перевода на основе нейронной сети. Теперь перевод выполняют обе модели, а затем алгоритм на основе метода машинного обучения CatBoost сравнивает результаты и предлагает лучший.
При переводе нейросеть не разбивает тексты на отдельные слова и фразы — она обрабатывает целые предложения. За счёт этого текст хорошо читается: порой даже можно подумать, что его написал человек. Статистический переводчик так не умеет, зато хорошо запоминает и переводит редкие и сложные выражения. Работая вместе, две системы компенсируют недостатки друг друга.
Статистический перевод
Есть много способов обучить машину переводу с одного языка на другой. Например, можно дать ей словари и грамматики разных языков: с их помощью она освоит правила. Или можно показать ей много параллельных текстов. Сравнивая их, машина научится находить соответствия — например, поймёт, что слова dog и собака являются вероятными переводами друг друга. В основе такого подхода лежат не правила, а статистика, поэтому он называется статистическим.
С момента запуска Яндекс.Переводчик использует статистическую систему. При переводе она разделяет предложения на кусочки (отдельные слова и фразы) и для каждого кусочка подбирает все возможные переводы с указанием их вероятности. Затем система составляет из переведённых фрагментов разные варианты нового предложения. Выбирают тот вариант, который содержит переводы с высокими вероятностями и в котором фрагменты хорошо сочетаются друг с другом.
У статистического переводчика есть как достоинства, так и недостатки. С одной стороны, он хорошо запоминает редкие и сложные слова и фразы. Если они встречались в параллельных текстах, переводчик запомнит их и впредь будет переводить правильно. С другой стороны, результат перевода бывает похож на собранный пазл: общая картина вроде бы понятна, но если присмотреться, то видно, что она составлена из отдельных кусочков.
Нейросетевой перевод
С сегодняшнего дня наряду со статистической системой мы используем в Яндекс.Переводчике нейронную сеть. Модели на нейронных сетях отлично справляются с обработкой естественной информации, например голоса или картинок. Задача перевода — превратить текст на одном языке в текст на другом языке, сохранив содержание и смысл. Текст — это тоже естественная информация, поэтому для нейронной сети такая задача вполне по силам.
Как и статистический переводчик, нейронная сеть анализирует массив параллельных текстов и учится находить в них закономерности. Сам перевод, однако, устроен по-другому. Нейросеть работает не со словами и фразами, а с более крупными единицами — предложениями. Она получает на вход предложение на одном языке, а на выходе выдаёт предложение на другом языке. Дробления на слова и фразы не происходит — в нём нет необходимости.
Такой подход позволяет учесть смысловые связи внутри предложения — иными словами, понять его контекст. Слова и фразы не существуют в вакууме — они сочетаются с другими словами и фразами, образуя новые смыслы. Нейросеть улавливает смыслы даже в случае, если слова, которые их передают, находятся в разных частях предложения. Важность контекста сложно переоценить — именно на него в первую очередь обращают внимание люди-переводчики.
Модель языка
Модель языка содержит список всех употребляемых в языке слов и словосочетаний с указанием частоты их использования. Она обеспечивает связность текста и в статистическом, и в нейронном переводе. Её можно использовать и для задач, не связанных с переводом. Когда вы печатаете сообщение с помощью Яндекс.Клавиатуры, машина пытается предсказать, какое слово вы наберёте следующим. Например, если вы набрали «привет, как», она поймёт, что продолжением могут быть слова «дела» или «ты». Это тоже результат работы модели языка.
Поскольку нейросеть работает не с фрагментами, а с предложениями целиком, перевод получается более связным и «гладким». Чтобы избежать несогласований — например, папа пошла или сильный боль, — Яндекс.Переводчик проводит дополнительную проверку. Предложение, переведённое нейросетью, проходит через модель языка — так называют свод знаний о языке, накопленный системой. Если в перевод вкрались грамматические ошибки, модель их исправит.
Гибридная система
У нейросетевого перевода тоже есть свои недостатки. Если по каким-то причинам нейронной сети трудно перевести то или иное предложение — а такое время от времени случается, — она поведёт себя примерно как студент на экзамене: начнёт что-то выдумывать от себя в надежде угадать правильный ответ.
Кроме того, нейросеть не всегда хорошо справляется с переводом мало распространённых имён, топонимов и других редких слов. Зато для статистического перевода, как вы помните, это нетрудная задача — если слово было в параллельных текстах, машина его запомнит. Мы решили объединить два подхода и создать гибридную систему, которая объединяет статистический и нейросетевой перевод. Работая вместе, две системы компенсируют недостатки друг друга.
Когда Яндекс.Переводчик получает от пользователя текст, он отдаёт его на перевод обеим системам — и нейронной сети, и статистическому переводчику. Затем алгоритм, основанный на методе обучения CatBoost, оценивает, какой перевод лучше. При выставлении оценки учитываются десятки факторов — от длины предложения (короткие фразы лучше переводит статистическая модель) до синтаксиса. Перевод, признанный лучшим, показывается пользователю.
Сейчас гибридная система используется для переводов с английского языка на русский. Это самое популярное направление: на него приходится около 80% всех запросов к Яндекс.Переводчику. В ближайшие месяцы мы включим систему и для других направлений. Чтобы было интереснее, мы добавили в веб-версию Переводчика переключатель — с его помощью можно сравнить гибридный и статистический переводы и понять, чем они различаются.