dsmts-diploma-text (1015784), страница 6
Текст из файла (страница 6)
В противном случае итерации продолжаются.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 — проверить существование поля.Все эти операции имеют константное время доступа.Учитывая характер системы, достаточно узким ее местом является скорость доступа к базе данных, особенно, если база является удаленной.
Наличие асинхронных операций записи при вычисления подсчетов в данномслучае является огромным преимуществом, Мы используем параллельныйдоступ к базе данных. Это особенно оказывается критично на синхронныхоперациях чтения.Для параллельного доступа к базе данных, и исключения блокировок мыиспользуем пул соединений с базой данных. Ниже на рисунке представленодерево контроля потоков пула соединения.Рис.
1.12. Дерево контроля для пула соединения.491.5.4. АРИФМЕТИКА С ФИКСИРОВАННОЙ ЗАПЯТОЙВ результате деления при осуществлении сбора подсчетов используетсявещественное деление. Для инкремента подсчетов удобно использовать атомарную операцию hincrby. Однако, она работает только с целыми числами.В этом случае мы предлагаем следующий подход.В качестве вероятности, мы будем использовать числа с фиксированной запятой по основанию 576460752303423488 (259 ). Такое число выбраноне случайно, это максимальное положительное число используемое в erlang,которое может поместиться в машинное слово 64-битной архитектуре.Base := 576460752303423488;⌊⌋Baseadiv(X, Y ) →·X .Y⌊⌋Xamul(X, Y ) →·Y .BaseПри таком подходе возможно появления ошибок гораздо большего порядка, чем существующее машинное «эпсилон», но они все равно будут пренебрежимо малы.
Для скорости вычислений и экономии памяти, важно соблюсти последовательность вычислений.По проведенном тестам прирост скорости составил примерно 14 разпри применении операции hincrby c числами с фиксированной запятой,по сравнению с последовательными считывании и записью в базу данных.1.5.5. ОБУЧЕНИЕ СИСТЕМЫОсновой системы являются базовые алгоритмы моделей IBM 1 и IBM 2(можно найти в приложении). Причем с точки зрения эффективности авторотдает предпочтении IBM 1.
При использовании IBM 2 при падении производительности улучшения качества работы системы не замечено было.В большинстве случаев для полной сходимости было достаточно около10 итераций. Потому в рабочей системе предлагается условие сходимостизаменить проверкой значения счетчика цикла.50ИНИЦИАЛИЗАЦИЯВ базовом алгоритме указано, что необходимо перед началом его работыинициализировать величины t(ωe |ωr ) для всех ωe и ωr в параллельном корпусе. Логично было бы для этого использовать абсолютную частоту словав каждом подкорпусе. Однако, для этого необходимо прочитать весь корпусцеликом. Если внимательно посмотреть на базовый алгоритм, то становится ясно, что от начального значения величин t(ωe |ωr ) ничего не зависит, если они все одинаковы.














