Как победить морников: Яндекс запустил гибридную систему перевода

14 сентября, 10:00

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

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


Статистический перевод
Есть много способов обучить машину переводу с одного языка на другой. Например, можно дать ей словари и грамматики разных языков: с их помощью она освоит правила. Или можно показать ей много параллельных текстов. Сравнивая их, машина научится находить соответствия — например, поймёт, что слова dog и собака являются вероятными переводами друг друга. В основе такого подхода лежат не правила, а статистика, поэтому он называется статистическим.

С момента запуска Яндекс.Переводчик использует статистическую систему. При переводе она разделяет предложения на кусочки (отдельные слова и фразы) и для каждого кусочка подбирает все возможные переводы с указанием их вероятности. Затем система составляет из переведённых фрагментов разные варианты нового предложения. Выбирают тот вариант, который содержит переводы с высокими вероятностями и в котором фрагменты хорошо сочетаются друг с другом.

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


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

Как и статистический переводчик, нейронная сеть анализирует массив параллельных текстов и учится находить в них закономерности. Сам перевод, однако, устроен по-другому. Нейросеть работает не со словами и фразами, а с более крупными единицами — предложениями. Она получает на вход предложение на одном языке, а на выходе выдаёт предложение на другом языке. Дробления на слова и фразы не происходит — в нём нет необходимости.

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

Модель языка

Модель языка содержит список всех употребляемых в языке слов и словосочетаний с указанием частоты их использования. Она обеспечивает связность текста и в статистическом, и в нейронном переводе. Её можно использовать и для задач, не связанных с переводом. Когда вы печатаете сообщение с помощью Яндекс.Клавиатуры, машина пытается предсказать, какое слово вы наберёте следующим. Например, если вы набрали «привет, как», она поймёт, что продолжением могут быть слова «дела» или «ты». Это тоже результат работы модели языка.

Поскольку нейросеть работает не с фрагментами, а с предложениями целиком, перевод получается более связным и «гладким». Чтобы избежать несогласований — например, папа пошла или сильный боль, — Яндекс.Переводчик проводит дополнительную проверку. Предложение, переведённое нейросетью, проходит через модель языка — так называют свод знаний о языке, накопленный системой. Если в перевод вкрались грамматические ошибки, модель их исправит.

   
Гибридная система
У нейросетевого перевода тоже есть свои недостатки. Если по каким-то причинам нейронной сети трудно перевести то или иное предложение — а такое время от времени случается, — она поведёт себя примерно как студент на экзамене: начнёт что-то выдумывать от себя в надежде угадать правильный ответ.

Кроме того, нейросеть не всегда хорошо справляется с переводом мало распространённых имён, топонимов и других редких слов. Зато для статистического перевода, как вы помните, это нетрудная задача — если слово было в параллельных текстах, машина его запомнит. Мы решили объединить два подхода и создать гибридную систему, которая объединяет статистический и нейросетевой перевод. Работая вместе, две системы компенсируют недостатки друг друга.

Когда Яндекс.Переводчик получает от пользователя текст, он отдаёт его на перевод обеим системам — и нейронной сети, и статистическому переводчику. Затем алгоритм, основанный на методе обучения CatBoost, оценивает, какой перевод лучше. При выставлении оценки учитываются десятки факторов — от длины предложения (короткие фразы лучше переводит статистическая модель) до синтаксиса. Перевод, признанный лучшим, показывается пользователю.

Сейчас гибридная система используется для переводов с английского языка на русский. Это самое популярное направление: на него приходится около 80% всех запросов к Яндекс.Переводчику. В ближайшие месяцы мы включим систему и для других направлений. Чтобы было интереснее, мы добавили в веб-версию Переводчика переключатель — с его помощью можно сравнить гибридный и статистический переводы и понять, чем они различаются.

58 комментариев
Подписаться на комментарии к посту
Постоянно пользуюсь Я.переводчиком, спасибо за улучшения.
Прочитал новость, решил попробовать.
Вот исходная фраза (взята из твиттер- аккаунта English native speakers):
My first early flight for some time. Looking forward to the sunrise.
Нейросетевой перевод: Мой первый ранний рейс на некоторое время. Жду восхода солнца.
Статистический перевод: Мой первый ранний рейс в течение некоторого времени. С нетерпением жду рассвета.
Наверное, нужно кнопочку сделать "лучше-хуже", чтобы сеть обучалась
Обновлено 14 сентября, 11:03
vladik-hammer,
здравствуйте.
Спасибо, что пользуетесь нашим сервисом! Вы правы, для обучения обратная связь нам очень полезна. Вы можете пожаловаться на тот вариант, который вам нравится меньше, нажав на иконку с большим пальцем, направленным вниз. 
ну не знаю....
с русского на англ так себе результат, похоже тут гибрид пока не работает...


Born in the forest herringbone, in the forest it grew, winter and summer slim green was
ovg2005,
здравствуйте!
В посте указано, что гибридный перевод работает на данный момент только для англо-русского направления. В будущем мы планируем подключить и остальные направления. 
Обновлено 14 сентября, 11:45
Ребята, это замечательно, что вы не забрасываете свой переводчик и продолжаете его улучшать. Но почему вы это делаете только после того, как это сделает Гугл? Почему нельзя было сделать это раньше на полгода? Как можно перегнать конкурента, если вы за ним волочитесь? :)



Без обид, я не спорю, что у вас свой CatBoost и т. д. Но на выходе ведь те же яйца получаются. Это не к команде переводчика посыл, а в целом. В частности, к команде поиска.
ingref,
здравствуйте!
Наша система перевода отличается от конкурентов — мы берём лучшее из двух подходов, что помогает, как выше описано, справиться с типичными проблемами, возникавшими при работе исключительно с нейросетями. Ну и, как вы верно заметили, у нас есть уникальный классификатор на основе CatBoost :)
Татьяна,
да, точно, с "Can I have a banana?" у Гугла проблемы :)
Было бы интересно почитать сравнение вашего алгоритма с обычным статистическим переводом, как тут - https://arxiv.org/pdf/1609.08144.pdf
спасибо, яндекс. английский как раз знаю. однако, временами, переводчик критично нужен при перездах по малым странам. удобная штука 
zoloto-omsk,
спасибо! 
Татьяна,
 про перевод сайта ничего не напишете? очень интересно
zoloto-omsk,
а что бы вы хотели узнать? 
Татьяна,
 есть ли возможность, пользуясь Вашей новой разработкой, поставить переводчик на другие языки так же как стоит на сайте указанном выше 
zoloto-omsk,
на данный момент нет, но в ближайшем будущем новый перевод будет доступен и для других языков. Вы сможете его использовать по API. 
а знаете, у меня вопрос: я напридумывал информации на сайте a2all.ru видел у какого-то фотографа гугловскую машину, позволяющую выбрать один из чуть ли не сотни языков. Вы не можете мне предложить подобное решение? можно как-то платно. я ранее не обращался потому что даже на родном языке многие люди мне говорили что, читая, заблудились в полёте моей фантазии, поэтому я даже не пытался переводить машиной и просил знакомых переводить по дружески, общаясь со мной и воспроизводя мои тексты так, как поняли.
однако воз и ныне там. давайте попробуем машиной перевести? 
сайт, где стоит гугловская машина вот: http://www.yacht-instructor.org/p/reports.html
картинку сделал, но Вы не предлагаете прикрепить 
Морники всем! :3
На волне недавнего поста про гугловский переводчик на пикабу проверил сокральную фразу. Яндекс оказался не патриотичен:)
Российская Федерация присоединила Крым. = Russian Federation annexed Crimea.
mahahuha,
сАкральную) исправляй, умник
zoloto-omsk,
я вам больше скажу, там еще ошибка в написании "непатриотичен". Странно, что вы исправляете других, а сами пишите "по-дружески" без дефиса и совершенно не утруждаете себя правильной пунктуацией и заглавными буквами (хотя почему-то "Вы" вы пишете с ними). :)
mahahuha,
 уф. а я уж подумал Вы ошибку сделали) умница кокойя
Михаил Мамонов
14 сентября, 20:07
Это идеально! Даже сленговые выражения с точностью переводит!
Владимир Миронов
14 сентября, 23:39
А я думал, что Яндекс давно уже использует эту технологию и в последнее время подумывал, что ребята сдулись, смотря, в особенности на переводчик от MS.

Но теперь вижу, что перевод даже качественнее, как не удивительно. Жалко, что браузер и функция перевода web-страниц еще работает по старым алгоритмам. Смысл обновлять только в одном лишь месте? Грусть, мрак, туман :-(
Владимир Миронов,
здравствуйте! В будущем мы планируем подключить новый перевод ко всем продуктам. 
Круто!
Пользуемся.
Ценим.
Спасибо.
rstepand,
спасибо! 
Понимаю, что текст не самый общий, но за что так с птицами? А главное, почему перевод почти не отличается при переключении технологии?


The German capital has the largest urban population of goshawks in the world – and the best place to see this alpha predator is in the Tiergarten, the city’s 250-acre version of Kensington Gardens, where up to five pairs breed. Also look out for flocks of greenfinch, the odd great spotted woodpecker and, in summer, common redstarts and handsome pied flycatchers parading in the woodlands. But the goshawks are the main draw, even if most Berliners are unaware of their presence. Resembling buzzard-sized sparrowhawks, they can be seen swooping through the trees or quietly perched overhead. Despite their apparent confidence, they are inherently wary, melting away after revealing themselves briefly.



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


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



PS: "Ещё обратите внимание на стаи зеленушек, эксцентричных больших пёстрых дятлов и, летом, на обыкновенных горихвосток и красавиц мухоловок-пеструшек, щеголяющих по лесам."
kildor,
здравствуйте! Вероятно, в данном случае алгоритм выбрал вариант, который предоставил статистический машинный перевод, т.к. он был лучше. По этой причине перевод не меняется при смене положения переключателя. Спасибо, что поделились примером, мы собираем жалобы, это позволяет нам улучшать качество работы сервиса. 
Татьяна,
Возможно. Удивительно мне несколько вещей -- то что различия всё-таки есть (хотя и очень маленькие), и то что по отдельности любой переводчик переводит названия птиц на отлично, но стоит построить с ними предложение -- всё стремительно портится.


Пожалуйста!
Коллеги, извините мою тупость,  кто такие морники? Заранее спасибо.
aunt-nessie,
здравствуйте!
В тексте поста рассказывается о типичных ошибках нейронной сети, которые позволяет обойти наш новый гибридный подход. В примере нейронная сеть выдумала слово «морники» , не справившись с переводом «Good morning» :) 
Переводчик в яндекс браузере при нажатии правой кнопкой мыши на выделенном тексте переводит по-старому.  Пожалуйста исправьте.
aoot,
здравствуйте! В Браузере новый перевод появится позже. 
Владислав
19 сентября, 16:54
Татьяна,
будем ждать)
на фразе "замок замок на замок, чтобы замок не замок" оно поломалось(
ovarlah,
вы переводили с русского на английский? Новый перевод пока доступен только для англо-русского направления.
замок на замке замка получилось у меня в итоге
замок замок замок хорошо, вы знаете, что есть фото неудобно.
Хорошие новости! А планируется ли подключать гибридный перевод для других языковых направлений, например, для русско-украинского?
Обновлено 16 сентября, 16:48
Mix-Gerder,
здравствуйте! Да, а ближайшем будущем мы планируем подключить гибридный перевод для самых популярных направлений. 
Что-ж, иметь два способа перевода  - лучше чем один. Особенно, когда перевод будет более "человеческим", что бы это не значило.
gavereal,
спасибо! Более "человеческий" — более согласованный, главным образом :) 
Очень хорошее нововведение! Яндекс.Переводчик поднялся на новую планку качества.
paytin1,
спасибо! 
Это хорошо, что яндекс, как и гугл, перешел на нейронную сеть. Интересно, улучшения сделаны только в англо-русском направлении или во всех направления всех имеющихся в переводчике языков?
cukanovboris,
здравствуйте! Пока только в англо-русском направлении, но мы готовимся к улучшению и остальных пар. 
Костя Косточкиин
17 сентября, 18:34
а для фото это можно сделать ?
Костя Косточкиин,
здравствуйте! В мобильном приложении и на мобильной версии сайта при переводе текста с изображения уже работает новый перевод. 
Я постоянно пользуюсь только вашим яндекс-переводчиком, потому что гугл-переводчик  переводит зачастую непонятно как, он мягко говоря до вас ещё не дорос =)). Огромное вам спасибо за вашу работу. Желаю вам бурного развития и качественных улучшений.
asc-nnm,
спасибо! 
Решил попробовать на основе легендарной речи  "I have a dream", с каждым абзацем все лучше и лучше:)
mediaplaner,
спасибо большое! 
замечательно
Елизавета Вольковская
19 сентября, 15:05
Спасибо огромное за улучшение

Классно
Александр Алимов
вчера, 10:35
Пока так....
нашестаресело
вчера, 20:10
Молодцы! Жду нейрон и для китайского языка
Яндекс, куда с 14 сентября делся сайт и подсайты на домене *.shell.yandex.net?
Новости, погода - ничего больше не работает на мобильном!