В интернете множество документов на иностранных языках. Иногда у пользователей Яндекса возникает необходимость найти и прочитать как раз один из них, например, какую-нибудь техническую документацию или статью в зарубежной газете. Чтобы все пользователи, даже те, кто не знает иностранных языков, могли получить нужный ответ, в 2009 году Яндекс начал переводить тексты с основных европейских языков с помощью технологии компании PROMT (ссылки «Перевод» в результатах поиска).
В начале 2011 года Яндекс внедрил собственную систему машинного перевода. Сейчас она умеет переводить любые тексты с английского, турецкого и украинского на русский и обратно.
Переводчик Яндекса основан на статистике, а не на правилах. Он изучает языки парами — обрабатывает огромное количество текстов и вычисляет, какие пары слов и фраз переводят друг друга.
Машинный перевод Яндекса — статистический. Такой перевод основывается не на правилах языка (системе эти правила даже не известны), а на статистике. Чтобы выучить язык, система сравнивает сотни тысяч параллельных текстов — содержащих одну и ту же информацию, но на разных языках. Это могут быть, например, большие тексты с разноязычных версий сайтов организаций. Изначально система находит параллельные тексты по адресам документов — чаще всего такие адреса различается только пометками, например, «en» или «us» для английской версии и «ru» для русской.
Для каждого изученного текста система строит список уникальных признаков. Это могут быть редко используемые слова, числа, специальные знаки, находящиеся в тексте в определённой последовательности. Когда система набирает достаточное количество текстов с признаками, она начинает искать параллельные тексты ещё и с их помощью — сравнивая признаки новых текстов и уже изученных.
Чтобы переводчик соответствовал современным стандартам качества, система должна изучить сотни миллионов фраз на разных языках. Это требует очень серьёзных ресурсов: много места на жёстких дисках, много оперативной памяти и так далее. Именно поэтому существующие сейчас системы машинных переводов можно пересчитать по пальцам.
Изучение языка
В системе машинного перевода Яндекса три основные части: модель перевода, модель языка и декодер.
Модель перевода — это таблица, в которой для всех известных системе слов и фраз на одном языке перечислены все возможные их переводы на другой язык и указана вероятность этих переводов (для каждой пары языков есть своя таблица). Модель перевода создаётся в три этапа: сначала подбираются параллельные документы, потом в них — пары предложений, а затем уже пары слов или словосочетаний.
Для наглядности представим, как система обрабатывала две самые первые пары предложений на русском и английском. Допустим, они были из текста про столицу Великобритании:
«London stands on the river Thames» — «Лондон стоит на берегу реки Темзы»
«Crossing the river by the Tower Bridge you can see the Tower of London» — «Пересекая реку по Тауэрскому мосту, можно увидеть Тауэр»
Когда системе кроме первой пары предложений ничего не известно, она считает, что «London», «stands» и каждое другое слово этого английского предложения — равновероятный перевод слов «Лондон», «стоит», «на» и так далее. Во второй паре предложений снова встречаются слова «river» и «река». Соответственно, после обработки второй пары предложений и пересчёта вероятности, система начнёт считать эту пару слов более вероятным переводом друг друга. И так далее сравниваются миллионы предложений в сотнях тысяч текстов.
Система сравнивает не только отдельные слова, но и словосочетания из двух, трёх, четырёх или пяти слов, идущих подряд. В переводчике Яндекса модель перевода для каждой пары языков содержит более миллиарда пар слов и словосочетаний.
Другая составляющая системы машинного перевода — модель языка. Для её создания система изучает сотни тысяч различных текстов на нужном языке и составляет список всех употребленных в них слов и словосочетаний с указанием частоты их использования. Это знание системы о языке, на который нужно перевести текст.
Процесс перевода
Непосредственно переводом занимается декодер. Для каждого предложения исходного текста он подбирает все варианты перевода, сочетая между собой фразы из модели перевода, и сортирует их по убыванию вероятности. Например, пользователь захотел перевести фразу «to be or not to be». Допустим, из всех вариантов в модели перевода максимальная вероятность получилась у сочетания «быть или не бывает», сочетание «быть или не быть» оказалось с небольшим отрывом на втором месте и так далее.
Все получившиеся варианты сочетаний декодер оценивает с помощью модели языка. В данном примере модель языка подскажет декодеру, что «быть или не быть» употребляется чаще, чем «быть или не бывает». В итоге декодер выбирает предложение с наилучшим сочетанием вероятности (с точки зрения модели перевода) и частоты употребления (с точки зрения модели языка).
Система машинного перевода Яндекса переводит не только произвольные тексты, но и веб-страницы. Когда пользователь вводит на сервисе translate.yandex.ru нужный адрес, сначала у него открывается страница с оригинальным текстом. Затем браузер пользователя сам разбирает html-код страницы и отправляет текст на сервер перевода по абзацам. То есть текст из, например, английского, на глазах у пользователя превращается в русский. В отличие от систем, которые загружают страницу сразу на сервер перевода, сервер системы Яндекса всегда получает тот же текст, что и пользователь (страница может формироваться по-разному для пользователя и для сервера перевода, например, если это страница социальной сети — сервер перевода в ней не авторизован и ничего не сможет увидеть). К тому же не нужно ждать полного перевода текста — можно начинать читать первые абзацы, пока остальные ещё не готовы.
Развитие статистического перевода
Одно из достоинств статистического машинного перевода в том, что он живёт вместе с языком. То есть, если что-то в языке меняется, например, люди начинают писать какое-нибудь слово по-другому, система видит это, как только к ней попадают новые тексты. И чем быстрее нововведение распространится в языке, тем быстрее оно появится в моделях перевода и языка.
Чтобы улучшать качество перевода, систему регулярно обновляют. Каждое обновление сначала проходит проверку — используется метрика для статистических машинных переводов.1
Перевод специально подобранных текстов, полученный системой, сравнивается с эталонным. Если данные от вновь изученных документов ухудшили качество перевода, то они отбраковываются.