Статистический машинный перевод

Статистический машинный перевод (SMT) основывается на модели, в которой вычисляется вероятность появления в переводе каждого…


Статистический машинный перевод (SMT) основывается на модели, в которой вычисляется вероятность появления в переводе каждого слова из имеющегося набора переведенных предложений, и выбирается вариант с наибольшими вероятностями. Для того, чтобы метод заработал, требуется наличие большой базы существующих правильных переводов, выполненных людьми: моя оценка минимального объема существующих переводов для получения условно-приемлемого качества SMT – три миллиона слов. Я встречал обоснование достаточности меньших объемов (700 тысяч слов), но я ему не очень верю… На текущий момент SMT является наиболее успешной реализацией идеи машинного перевода: она действительно работает. Ее не всякий может себе позволить (крупные базы переводов есть очень не у всех), но…

Статистический машинный перевод

Приведу пример того, как это работает. Предположим, что нужно перевести “Bush is an idiot” на русский язык. Для начала алгоритмом оптимизации поиска отсекаются переводы, в которых не встречаются слова из исходной фразы, чтобы не перебирать слишком большой объем данных. Дальше определяется набор статистических вероятностей; например, выясняется, что для слова “Bush” есть два всплеска: на слове “куст” и на слове “Буш” (оба этих русских слова встречаются в переводах английских фраз, содержащих слово Bush). Аналогично для “idiot” найдется “идиот” и пара нецензурных вариаций. Для “is” и “an” тоже что-нибудь определится, но, с большой степенью вероятности, результат не будет иметь явно выраженных пиков и будет “прибит” шумодавами SMT (может, и зря). Но на втором проходе выясняется, что вероятность встретить сочетание слов “куст” и “идиот” в одном предложении практически равна нулю, а “Буш” и “идиот” – наоборот, встречается повсеместно. Аналогичные действия производятся для последовательности слов в переводе и синтаксиса. Конечный перевод будет выглядеть как “Буш идиот” (что, безусловно, правильно).

На уровне перевода отдельных фраз это работает более-менее сносно. Следующий шаг в развитии SMT – перенести этот прием на уровень текста: должен анализироваться весь текст, потом система спустится на уровень абзацев, а потом – на уровень предложений. Посик и анализ при этом существенно усложняются, но зато MT может начать “улавливать” контекст и выдавать правильный набор слов. Что-то такое в природе есть, но реально работающие системы ограничиваются статистическим анализом уровня предложений, что снижает качество.

Интересно тут следующее: для системы совершенно неважно, как устроен язык, какие у него правила и исключения, как переводится то или иное слово, с какого на какой переводим… На предпоследнем Localization World  на семинаре по SMT раздел “вопросы и ответы” с ведущим Kirti Vasheealt проходил в однообразном режиме “Да какая разница?”:

Вопрос из зала: “А как система статистического машинного перевода обрабатывает ситуацию с переводом концептуальных структур типа (пример из японского)?” 
Kirti: “Да это, в общем-то неважно. Какая вероятность выпадет, так и отработает…” 
Другой вопрос из зала: “А вот есть еще такой лингвистический парадокс (описывается парадокс). Что с ним делать?” 
Kirti: “А нам, в общем, пофиг ваши парадоксы: что нам формула Байеса выдаст, то и будет.” 
итп.

Я млел. Просто млел 🙂

Понятно, что и тут есть куча деталей, которые нужно учитывать.

  1. Наличие необходимого объема исходных переводов (что мало у кого есть). В мире IT каждый выкручивается сам: у Майкрософта есть миллиарды переведенных слов документации, Гугл импортировал 200 миллиардов переведенных слов из базы данных ООН, остальные экспериментируют с меньшими объемами.
  2. Структура. SMT умирает на длинных фразах: если предложение состоит более чем из 10-12 слов, вероятность выдачи полной пурги становится стопроцентной. Для борьбы с этим явлением необходимо, чтобы авторы документации сочиняли свои тексты короткими лаконичными блоками с минимальным количеством экивоков (знакомо? 😉 ). Это называется Controlled English – такой эрзац интерлингвы…
  3. Скорость. Перебор – штука крайне медленная даже на уровне слов в предложении. Алгоритмы оптимизации запросов позволяют получать приемлемые выборки, а предварительная обработка “сырых” данных в разы увеличивает скорость их обработки (Google для этого использует MapReduce на своих кластерах нечеловеческого размера). Но как-то мне кажется, что полноценный статистический анализ на уровне текста целиком или хотя бы абзацев до сих пор не реализован: количество “измерений” (и время работы системы) должны увеличиваться на несколько порядков. Поправьте меня, если я ошибаюсь.
  4. Правила. Лингвисты, проверяющие машинный перевод, довольно быстро просекают, что машины допускает одни и те же регулярные ошибки, и создают макры, которые исправляют их по всему тексту – глобально. По научному это называется “Automated post-editing” и на эту тему можно почитать статью Hugh Lowson-Tancred в последнем выпуске Multilingual. Ничего особенного, впрочем… В свою очередь разработчики систем машинного перевода для улучшения качества SMT вводят правила, избавляющие перевод от этих ошибок: никуда от этого не деться. На каждый язык приходится где-то по 12-16 правил. На русский – больше 🙂
  5. Словари и Translation Memory. Ясно, что, если можно не переводить, а использовать готовое, то это нужно делать: прежде чем использовать SMT, на текст натравливается Translaton Memory в поисках полных совпадений, а словари встраивают в SMT engine.
  6. Качество все равно будет погановатое: теория – теорией, а обольщаться не надо…