Машинный перевод

Каждый день сайт и приложение Яндекс.Переводчик помогают миллионам людей разобраться с чем-нибудь по учёбе, сделать покупку на иностранном сайте, понять, что написано на табличке в незнакомом городе или о чём поют в их любимых песнях. Полностью устранить языковой барьер Переводчик пока не может (хотя в перспективе мы хотим добиться именно этого), но уже сейчас сильно помогает через него перешагнуть. Он умеет переводить почти с сотни языков, включая те, на которых говорят малые народы и даже эльфы. Как он это делает?
Есть много способов обучить машину переводить с одного языка на другой. Например, можно дать ей словари и грамматики разных языков: с их помощью она освоит правила. Или можно показать ей много параллельных текстов — то есть таких, в которых одно и то же написано на разных языках. Сравнивая их, машина научится находить соответствия — например, поймёт, что слова dog и собака являются вероятными переводами друг друга. В основе такого подхода лежат не правила, а статистика, поэтому он называется статистическим.
Именно такая система работала в Яндекс.Переводчике с момента его запуска в 2011 году. Через шесть лет у неё появился напарник — нейронная сеть. Она тоже обучается на огромном массиве текстов, но перевод в ней устроен немного по-другому. В чём-то нейросетевая модель сильнее статистической, в других аспектах — уступает ей. Работая вместе, они компенсируют недостатки друг друга.

Статистический перевод

Статистическая модель разделяет предложение, которое нужно перевести, на отдельные слова и фразы, перебирает все варианты перевода для каждого фрагмента и взвешивает вероятность каждого из них. Делает он это исходя из того, как часто встречался тот или иной вариант перевода в текстах, на которых она училась. Например, spring — с большей вероятностью весна, чем пружина. Статистическая модель помнит и о том, вместе с какими словами обычно встречается слово: если рядом со spring стоит прилагательное early, то речь, должно быть, о весне; если metal — скорее, о пружине. Руководствуясь этой логикой, модель составляет несколько вариантов переводов всего предложения целиком и выбирает из них тот, в котором содержатся фрагменты с наибольшим вероятностным весом и фрагменты которого сочетаются лучше всего.
У статистического переводчика есть как достоинства, так и недостатки. С одной стороны, он хорошо запоминает редкие и сложные слова и фразы. Если они встречались в параллельных текстах, переводчик запомнит их и впредь будет переводить правильно. С другой стороны, результат перевода бывает похож на собранный пазл: общая картина вроде бы понятна, но если присмотреться, то видно, что она составлена из отдельных кусочков.

Нейросетевой перевод

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

Гибридная система

У нейросетевого перевода тоже есть свои недостатки. Если по каким-то причинам нейронной сети трудно перевести то или иное предложение — а такое время от времени случается, — она поведёт себя примерно как студент на экзамене: начнёт что-то выдумывать от себя в надежде угадать правильный ответ.
Кроме того, нейросеть не всегда хорошо справляется с переводом мало распространённых имён, топонимов и других редких слов. Зато для статистического перевода, как вы помните, это нетрудная задача — если слово было в параллельных текстах, машина его запомнит. Поэтому в Яндекс.Переводчике используется гибридная система, которая объединяет статистический и нейросетевой перевод.
Текст, который вводит человек, обрабатывают обе системы — и нейронная сеть, и статистический переводчик. Затем алгоритм, основанный на методе обучения CatBoost, оценивает, какой перевод лучше. При выставлении оценки учитываются десятки факторов — от длины предложения (короткие фразы лучше переводит статистическая модель) до синтаксиса. Перевод, признанный лучшим, показывается пользователю.
Сейчас гибридная система используется только для самого популярного направления перевода — с английского на русский, на него приходится около 80% запросов пользователей. В дальнейшем она включится и для других направлений — пока на них работает статистическая модель.

Владельцы сайтов и приложений могут добавить в свои продукты статистический перевод Яндекса с помощью API.