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

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Математик Варвара Логачева о системах машинного перевода, источниках параллельных текстов и статистических методах в переводе

ПостНаука продолжает рассказывать о современных технологиях в проекте «Банк знаний», подготовленном совместно с Корпоративным университетом Сбербанка.

Машинный перевод — это одна из самых старых задач компьютерной лингвистики. Первые попытки автоматически перевести текст предпринимались еще в 50-х годах XX века. И очень долгое время все системы машинного перевода, которые разрабатывались, были основаны на правилах. Правила эти описывали то, как преобразовывать конструкции одного языка в конструкции другого языка. Правил в системе машинного перевода нужно довольно много — порядка, может быть, нескольких десятков тысяч. И правила пишутся лингвистами. Написать систему правил для перевода с одного языка на другой — дело очень долгое и трудоемкое. Это дело нескольких месяцев или, может быть, даже лет.

Но, к счастью, в 1990-х годах была предложена другая архитектура систем машинного перевода — это статистические системы машинного перевода. Им правила в явном виде не нужны. Они выделяют их самостоятельно из примеров перевода. Если им дать примеры перевода, так называемые параллельные тексты, то есть текст на исходном языке и его перевод на целевой язык — на язык, на который мы хотим переводить, — то эта система может сама автоматически выделить из множества таких примеров правила.

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

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

Откуда такие параллельные данные могут браться? Во-первых, есть довольно много международных организаций с несколькими рабочими языками. У каждой такой организации все ее документы и заседания должны переводиться на все рабочие языки. Например, это Организация Объединенных Наций, у которой шесть рабочих языков. Или европейский парламент, где все заседания переводятся на все официальные языки Евросоюза. Или, например, парламент Канады, который работает на английском и французском. Кроме того, переводятся на несколько языков часто юридические документы, инструкции ко всяким машинам, программам, медицинским препаратам. У многих веб-сайтов есть несколько версий для разных языков.

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

Сейчас я постараюсь немного рассказать о том, как обучается система. Вот у нас есть параллельный корпус. Если мы переводим с английского на русский, то это английский текст с русским переводом. У нас параллельный текст разделен на предложения, каждому английскому предложению соответствует русское предложение. Но более детальных связей не проведено. То есть мы перед началом обучения не знаем, какому английскому слову какое русское слово соответствует. Но это довольно легко выяснить, проанализировав этот большой объем параллельных данных. И компьютер делает это в принципе примерно так же, как делал бы человек.

Если человеку, который знает английский, но не знает русского, дать параллельный текст и попросить найти, как по-русски сказать dog, как перевести с английского на русский слово dog, то как человек будет действовать? Он просто найдет все английские предложения, в которых есть слово dog, и найдет в переводах этих предложений русские слова, которые есть во всех таких предложениях. Компьютер делает примерно так же.

Если, например, у нас есть два предложения — «A dog is chasing a cat» («Собака бежит за кошкой») и «А dog is sleeping», — то компьютер сначала не знает, как переводится слово dog, и он вынужден предположить, что оно может быть переведено с равной вероятностью любым русским словом. То есть dog может значить «собака», может значить «бежит», может значить «спит» и так далее. И если мы выпишем все варианты переводов, то мы заметим, что почти все они встречаются один раз, а слово «собака» как перевод слова dog — два раза.

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

Этот словарь (он в статистических системах называется таблицей переводов) — это и есть основа статистической системы. И когда мы переводим новое предложение, то мы просто ищем переводы отдельных слов в этой таблице, выбираем для них русские переводы с самой высокой вероятностью и объединяем в одно предложение.

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

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

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

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

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

 


Источник: postnauka.ru

Комментарии: