diploma-2 (1015782), страница 7
Текст из файла (страница 7)
Для реализации алгоритмической части были крайне необходимы следующие операции:а) для работы с 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 ) ничего не зависит, если они все одинаковы. В таком случае, можно их инициализировать заранеекакой-либо константой, например в данной работе используется константаравная 0.5.ВОЗМОЖНЫЕ ОШИБКИОчень важным моментом реализации алгоритма обучения является то,что оценка вероятности модели и вычисления подсчетов должны происходить сразу по всему корпусу текстов.На начальных этапах реализации системы нами была допущено серьезная ошибка.
Приложения читателя, проходила по корпусу и считывало 1000строк. После этого эта тысяча строк отправлялась на обработки и по ней строилась модель перевода. Затем считывалась следующая порция строк.В результате этих действий подсчеты вычислялись только для локальногонабора строк, и затем по ним вычислялась вероятность переводных соответствий и перезаписывала вероятность вычисленную ранее.После окончания работы алгоритма обучения мы получали вероятностипереводных соответствий обученные только на последней тысяче строк, снекоторым влиянием остального корпуса.Установить ошибку удалось только после запуска алгоритма в предельном случае на корпусе состоящим из двух строк, при проходе полного алгоритма обучения на каждой из них.511.5.6. РЕАЛИЗАЦИЯ ИНТЕРФЕЙСОВ ДЕКОДЕРАРассматриваемая система обладает тремя видами интерфейса:• консольные;• простой веб-интерфейс;• rest-интерфейс.Консольное приложение является стандартным отладочным интерфейсом ОТП приложений.
Для перевода достаточно просто вызывать соответствующую функцию модуля.Веб-интерфейс декодера выполнен в виде отдельного ОТП приложенияи представляет из себя полноценный веб-ресурс, реализованный с помощьюбиблиотеки mochiweb.Мы не будем в работе приводить как внешне выглядит клиентская частьВеб-приложения, которая отображается в браузере, так как она представляет собой всего лишь текстовый элемент ввода, две кнопки («перевести» и«улучшить перевод»), и текстовый элемент вывода.Важнейшей частью Веб-приложения является XSLT-преобразователь.
Вданном случае он был написан на С c использованием libxml2 и libxslt. Изerlang он вызывается как порт-сервер. На вход подается строка XML которая содержит в себе данные (в нашем случае, это перевод исходного текста вслучае ответа на запрос) и шаблон XSL, в котором описано как данные передавать. Для увеличения быстродействия XSLT преобразователь (на сторонекода на C) использует хэш-таблицу, в которой записываются использованные ранее XSL шаблоны. Сделано для того, чтобы не загружать при повтором обращении каждый шаблон снова.
В рамках проекта было реализованодве версии преобразователя c запоминанием шаблонов и без него. Версия безхэш-таблицы работает медленнее, но удобнее при «горячей замене» шаблонауже на работающем коде. Кроме того, преобразователь является не блокирующим и при одновременных обращениях вызывается параллельно.
Последнее дает прирост производительности при наличие нескольких процессоровили ядер.52Rest-интерфейс декодера также выполнен в виде отдельного ОТП приложения и представляет из себя полноценный веб-ресурс реализованный с помощью библиотеки mochiweb.После поступления POST запроса приложению, оно начинает передаватьтекстовый (Content-Type: text/plain) HTTP (chunked) поток с наиболее вероятными вариантами перевода. Этот поток будет передаваться до тех пор, покаклиент не закроет соединение, или не будут перебраны все варианты улучшения перевода.Поток представляет из себя набор чанков в рамках спецификации протокола HTTP 1.1.
Каждый чанк содержит количество передаваемых байт ипоследовательность передаваемых данных.Каждая строка полного перевода исходного текста передается в отдельном чанке и обязательно заканчивается символом перевода строки.В отличие от web-интерфейса в этом случае клиенту не нужно будет самому запрашивать улучшение перевода.
Самый первый «жадный» вариантперевода передается в первом чанке потока.531.6. ТЕСТИРОВАНИЕ РАЗРАБОТАННОЙССМП1.6.1. ОЦЕНКА КАЧЕСТВА ПЕРЕВОДАДля оценки качества перевода достаточно взглянуть на таблицу ниже. Вней приведены переводы одного и того же фрагмента для различных статистических систем машинного перевода.Таблица 1.3.
Различные переводы исходного текстаИсходный текст adopted at the 81st plenary mee ngПроф. переводчик принята на 81-м пленарном заседанииMoses приняли на 81 полный встречиGoogle-переводчик принятой на 81-е пленарное заседаниеДанная система принята без голосования на 81 пленарном заседании в БрюсселеВсе правильно, заседании было в Брюсселе, но в исходном тексте этого не было. Однако не совсем корректно сравнивать системы, обученные наразных корпусах текстов. Потому мы будем использовать систему машинного перевода основанную на пакете Moses (декодировщик Moses и обучающаясистема GIZA++), обученную на том же самом входном корпусе, что и нашасистема.Для оценки качества перевода существует набор формальных метрик.• BLEU (Bilingual Evaluation Understudy);• METEOR (Metric for Evaluation of Translation with Explicit ORdering);• NIST (названа по имени университета National Institute of Standards andTechnology);• WER (Word error rate).Чаще всего системы машинного перевода оценивают по метрике BLEU:54• высокая корреляция с оценкой человека;• для оценки требуется готовый перевод тестовых предложений, выполненный профессиональным переводчиком.(BLEU = Bp · e{Bp =N∑)Wn log(pn )n=1∑ ∑1,l c > lh ;lhe(1− lc ) , lc 6 lh .иpn =числосреза (ηc )∑ ∑число(ηc )C∈Sc ηc ∈CC∈Sc ηc ∈C• Sc — множество кандидатов на перевод;• C — кандидат на перевод;• ηc — n-грамма кандидата на перевод;• lc — длинна кандидата перевода;• lh — длинна экспертного перевода (выполненного человеком);1• Wn =— вес, для метрик основанных на BLEU, но не эквивалентныхNей, может отличаться для каждого n, например NIST назначает большийвес более редким n-граммам;• N = 4, n-грамность оценки.Таким образом, BLEU есть взвешенное среднее числа совпадений nграмм (слов) кандидата и n-грамм в переводе эксперта.















