diploma-3 (1015783), страница 6
Текст из файла (страница 6)
После того, как эквивалент всего текста был найден, вычисляется величина неопределенности текста:(ВН =S∑ηeS∑ωe)log2 P (ηe i )+ S1log2 P (ωr j |ωe j )− S1ηeωei=1j=12• ηe — n-граммы высокого порядка найденные в созданном тексте;• Sηe — количество таких n-грамм;• P (ηe ) — вероятность n-грамм согласно языковой модели (вычисляетсякак указано раннее);• ωe — n-граммы (слова) как результат перевода согласно модели перевода;• Sωe — количество таких n-грамм (слов);• P (ωrj |ωej ) — вероятность перевода фразы ωej на ωrj .Во втором режиме работы на вход принимается исходный текст (ИТ), переводной текст (ПТ) c предыдущей итерации и величина неопределенности(ВН). Применяются операции описанные выше для алгоритма жадного инкрементного поиска, если полученное новое значение имеет меньшую величину неопределенности чем предыдущее, то оно подается на выход. В противном случае итерации продолжаются.40Интерфейсная часть декодера представляет собой набор отдельных приложений, которые вызывают функции декодера при поступлении запросовна перевод.
Общая схема декодера представлена ниже. Стрелками показаныпотоки данных. Прерывистыми линиями изображены косвенные связи..Веб.приложение..Rest.приложениеИнтерфейсный.модуль...Диспетчер.Модуль.работы с БД..Пул соединений..Вычислительный.модульНачальный.перевод.Улучшение.переводаРис. 1.9. Схема модулей приложения «декодер».Rest-приложение представляет из себя HTTP RESTful веб-службу. К нейпо определенному адресу поступает HTTP запрос POST вида.
В теле запросапередается исходный текст для перевода, который отправляется для декодирования. После первой итерации декодирования Rest-приложение, отвечаетзапросившему клиенту первым «наихудшим» вариантом перевода. Далее неразрывая соединения генерируются другие варианты перевода и сразу передаются клиенту. Это продолжается пока клиент самостоятельно не разорветсоединение.41Веб-приложение представляет из себя обычный веб-ресурс, где пользователю предлагается ввести исходный текст для перевода. После осуществления первой итерации перевода, пользователю будет предложено улучшитьполученный вариант перевода. Количество итераций по улучшению перевода определяет в данном случае сам пользователь.Рис. 1.10.
Диаграммы активности приложения «декодер».421.4.4. СРАВНЕНИЕ С РЕШЕНИЯМИ ДРУГИХПРОИЗВОДИТЕЛЕЙНа данный момент существует несколько открытых платформ для создания систем машинного перевода. Наиболее крупные из них Moses и Chaski.Принципы работы этих систем построенных на основе той и другой платформы во многом сходны, только с тем отличием, что Chaski позволяет строитьраспределенные системы. Для обучения в обоих случаях используется библиотека GIZA++, однако Chaski включает в себя многопроцессорную версиюэтой библиотеки.Для тестирования разрабатываемой системы, были созданы еще двеССМП на основе Moses и Chaski. Ниже приведены сравнения этих системс разработанной.Таблица 1.1. Сравнение модулей обучения для различных систем.Система Распределенная Отказоуст.ТекущаяДаДаMoses (GIZA++)НетНетChaski (MGIZA++)ДаНетТаблица 1.2.
Сравнение модулей декодирования для различных систем.Система Распределенная Отказоуст.ТекущаяWebRestДаДаДаДаMoses (GIZA++)ВозможноНетДаНетChaski (MGIZA++)ВозможноНетВозможноНетСамым большим достоинством разработанной системы является то, чтоона ориентирована на перевод текстов исключительно научно-техническогохарактера, которые имеют явную стилистически подчеркнутую принадлежность к жанру научной прозы.
Такая узкая специализация системы являетсяи основным недостатком.431.5. РЕАЛИЗАЦИЯ ССМП1.5.1. ИСПОЛЬЗОВАНИЕ КОРПУСАВ ходе работы мы попытались построить свой собственный корпус дляобучения системы на основе «Лолиты» Набокова. Но проблема заключается в том, что такой корпус крайне сложно выровнять. Русский и английскийварианты местами сильно отличаются. При попытке разбить на предложения наивным методом (по знакам препинания) расхождение возникло на 11-мпредложении.
При попытке разбить на предложения с помощью подробногосинтаксического анализа, ошибка возникла примерно на 200-м предложении.Возможно, имеет смысл сначала разбивать текст на абзацы, а внутри абзацевразбивать на предложения. Ошибка будет иметь меньшее влияние. Однакосложно утверждать, что такой вариант не обнаружит расхождения в абзацах ив любом случае потребуется ручная правка и много времени. Для маленькихкорпусов существуют более сложные методы, такие как метод ПотемкинаКедровой [52], но чаще всего они предполагают наличие заранее подготовленного словаря.Обычно построение большого корпуса ведется с учетом гипотезы ГайлаЧерча, о том, что существует прямая зависимость между длинами предложений в исходном тексте и в переводе. В рамках данного подхода каждой парепредложений из текстов на разных языках, соответствует некоторая характеристика возможности сопоставления. Эта характеристика вычисляется наоснове разницы длин предложений (в символах, включая пробелы) и дисперсии этой разницы.
Далее, с помощью методов динамического программирования, находится такое соответствие предложений, при котором характеристики возможности сопоставления максимальны [41]. Само по себе построение корпуса является самостоятельной задачей корпусной лингвистики. Потому было принято решение пользоваться уже готовыми корпусами.44Для обучения рассматриваемой ССМП использовалась комбинация изнескольких русско-английских корпусов:а) корпус резолюций ООН;б) русско-чешско-английский корпус UMC (ÚFAL Multilingual Corpora);в) некоторая выборка из Национального корпуса русского языка (была выкачена с веб-сайта корпуса и автоматически сформирована по атрибутам тегов);г) некоторая выборка из работы Д.
Кнута «Искусство программирования»в качестве примера корпуса научных текстов.Общий объем корпуса составил примерно 180‘000 предложений(5‘854‘095 лексических единиц) на каждом из языков.Важно отметить, что сложно назвать полученную комбинацию корпусомнаучных текстов, но за неимением хороших исходных данных пришлось довольствоваться этим.Большие корпуса научного всего скорее у издательств, и если мы захотимразвивать систему дальше, то можно будет по определенной лицензии этикорпуса приобрести.Корпуса не обязательно будут выровнены по предложениям, но опираясь на свойства научного текста выравнивать их самостоятельно достаточнопросто.
Например это можно будет сделать, благодаря наличию формул имеждународных терминов.451.5.2. СРЕДСТВО РАЗРАБОТКИВ качестве основного инструментального средства используется функциональный язык erlang.Основные преимущества:а) нет побочных эффектов присущих императивным языкам;б) модель легковесных процессов;в) удобные средства разработки распределенных приложений;г) высокая производительность (меньше чем для C, но сопоставимас C++, при компиляции erlang в машинный код).Очень часто erlang используют для написания высоконагруженных распределенных приложений. Рассматриваемая система относится именно к таким приложениям.В ходе выполнения работы как альтернативный вариант рассматривалсяязык программирования python, но после анализ данных производительности в рамках данной задачи предпочтение было отдано erlang.Для увеличения надежности приложений было решено организовать взаимодействия процессов c учетом принципов ОТП (открытая телекоммуникационная платформа — OTP, open telecom platform), там где это возможно.Диспетчер каждого приложения и модуль пула соединения с базой данныхимеет структуру дерева контроля («дерева супервизии»), как показано нижена рисунке.
Рабочий процесс может быть обычным вычислительным сервером (в терминах OTP), или супервизором (более низкого уровня). Супервизорв данном случае нужен для контроля за рабочими процессами. Если у какоголибо рабочего процесса произойдет сбой и процесс «упадет», то супервизорперезапустит его.46...Приложение (в терминахОТП)..Супервизор..Рабочий процесс1..Рабочий процессn..Рабочий процесс...Рис. 1.11. Дерево контроля ОТП.Если сбои будут происходит в течение заранее определенного промежутка времени то супервизор передаст сигнал о том, что про процесс пересталработать вверх по дереву контроля.Если приложение (в терминах ОТП) контролируется другим супервизором, то процесс повторится снова.
И так пока не дойдет до самого верхнегоуровня, что приведет к отказу самого приложения.1.5.3. БАЗА ДАННЫХВ качестве базы данных используется Redis Server. Ранее были рассмотрены прочие варианты:1) Хранить все словари в памяти, а по окночании скидывать на диск —очень быстро, но опасно, ибо когда память кончится программа начинает работать не стабильно.2) Использовать локальное отображение в файл — но такой вариант:• очень медленный;• не масштабируемый.3) Попробовали в качестве базы данных использовать Memcache, но онооказалось медленно, и нет поддержки атомарных операций.474) Попробовали в качестве базы данных использовать родные для erlangdts и mnesia, но первая имеет ограничение в размере хранимых данных,вторая в количестве хранимых ключей.В результате долгих поисков и анализа, мы пришли к текущему вариантуКроме того, Redis версии ниже 2.4 оказался чувствителен к длине ключейи значений.Важной особенностью Redis является поддержка атомарных операций обновления, работа с множествами и списками, работа с хранилищами типаключ-значение.
Для реализации алгоритмической части были крайне необходимы следующие операции:а) для работы с n-грамами:• sadd key value — добавить элемент в множество,• srandmember key — получить случайный элемент множества,• smove source destination member — переместить элемент изодного множества в другое;б) для работы со списками n-грам:• lpush key value — добавление элемента в начало списка,• rpush key value — добавление элемента в конец списка,• lpop key — получение первого элемента списка и его удаление,• rpop key — получение последнего элемента и его удаление,• rpoplpush srckey dstkey — получение и удаление последнегоэлемента списка «srckey» с добавлением его в «dstkey»;48в) для работы с подсчетами и оценкой вероятности:• hset key field value — установить значение поля,• hget key field — получить значение поля,• hincrby key field integer — увеличить значение поля «field»на заданную величину «integer»,• hexists key field — проверить существование поля.Все эти операции имеют константное время доступа.Учитывая характер системы, достаточно узким ее местом является скорость доступа к базе данных, особенно, если база является удаленной.















