https://wiki.apertium.org/w/api.php?action=feedcontributions&user=Enjo&feedformat=atomApertium - User contributions [en]2024-03-29T11:10:55ZUser contributionsMediaWiki 1.34.1https://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_6&diff=31679Курсы машинного перевода для языков России/Раздел 62012-01-25T08:33:03Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Системы базового структурного переноса, описанного в [[Машинный перевод для языков России/Раздел 5|session 5]] достаточно для работы с большинством расхождений, которые имеются в родственных языках (например, башкирский и татарский, финский и квен), при работе с языками, которые имеют больше морфологических и синтаксических расхождений необходимо использовать более мощную систему структурного переноса. В данном разделе мы познакомим вас с системой уровня Apertium 3+, которая была разработана для работы с более длинными шаблонами и языками, которые сильнее отличаются друг от друга.<br />
<br />
==Теория==<br />
<br />
===Перенос c помощью разбивки на блоки (Chunking-based transfer)===<br />
Обычное применение данного метода состоит из трех модулей: разбивание на блоки (chunker), процессы между блоками (interchunk) и после разбивки на блоки (postchunk). При необходимости данная модель может быть расширена до двух и более модулей intertchunk.<br />
<br />
====Разбивание на блоки (Chunker)====<br />
<br />
Идея ''разбивания на блоки (chunker)'' - расширить существующие правила переноса для группировки ряда лексических единиц. Эти группы называются ''блоки (chunks)'' . Блоки могут объединять именные части речи, делать согласование, вставлять и удалять слова, и выполнять местную перестановку слов, например,<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе !! Пример<br />
|-<br />
| <code>nom</code> || ҫурт || <code>SN{nom}</code> || дом <br />
|-<br />
| <code>adj nom</code> || хитре ҫурт || <code>SN{nom adj}</code> || красивый дом<br />
|-<br />
| <code>nom</code> || ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫурт || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>num nom</code> || икĕ ҫурт || <code>SN{num nom}</code> || два дома<br />
|-<br />
| <code>num nom</code> || пилĕ ҫурт || <code>SN{num nom}</code> || пять домов<br />
|-<br />
| <code>adj nom</code> || хитре ҫуртсем || <code>SN{adj nom}</code> || красивые домы<br />
|-<br />
| <code>adv adj nom</code> || питĕ хитре ҫурт || <code>SN{adv adj nom}</code> || очень красивый дом<br />
|-<br />
| <code>num adv adj nom</code> || пилĕ питĕ хитре ҫурт || <code>SN{num adv adj nom}</code> || пять очень красивых домов <br />
|-<br />
|}<br />
<br />
Где <code>nom</code> = существительное, <code>adj</code> = прилагательное, <code>num</code> = числительное, <code>det</code> = артикль, <code>SN</code> = именная конструкция.<br />
<br />
Такой же процесс и для формирования глагольных блоков:<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе Output chunk !! Пример<br />
|- <br />
| <code>verb</code> || вулать || <code>V{verb}</code> || читает<br />
|-<br />
| <code>verb</code> || вуламасть || <code>V{neg_adv verb}</code> || не читает<br />
|-<br />
| <code>verb</code> || вуларĕ || <code>V{verb}</code> || читал<br />
|-<br />
| <code>verb</code> || вуламĕ || <code>V{aux inf}</code> || будет читать<br />
|-<br />
| <code>verb</code> || вуламарĕ || <code>V{neg_adv aux inf}</code> || не будет читать<br />
|-<br />
| <code>verb</code> || вуласшăн || <code>V{aux part inf}</code> || хотел бы говорить<br />
|-<br />
| <code>verb</code> || вулӑттӑм || <code>V{verb part}</code> || говорил бы<br />
|-<br />
| <code>adv verb</code> || ан вула ! || <code>V{adv verb}</code> || не читай !<br />
|-<br />
| <code>ger verb</code> || вулама пуçлать || <code>V{verb inf}</code> || начинает читать.<br />
|-<br />
|}<br />
<br />
Таким образом, если мы хотим согласовать именное словосочетание с основным глаголом, мы только можем использовать одно правило (для <code>SN V</code>) во втором модуле переноса (процесс между блоками ''interchunk'') вместо отдельных правил для <code>nom verb</code>, <code>adj nom verb</code>, <code>det adj nom verb</code>, и тд. <br />
<br />
Очень важно помнить о том, что блоки (chunks) не могут быть вложенными (т.е. блок не может содержать другой блок). В определенных обстоятельствах, и при определенном усилии они могут быть сведены к интерблоку interchunk &mdash; например, можно присоединить одну или несколько однородных именных словосочетаний, но не вложить их друг в друга.<br />
<br />
Важно отметить, что лексические формы переводятся на язык перевода в первом модуле; последующие модули работают с лексическими формами уже на языке перевода.<br />
<br />
====Процессы между блоками (Interchunk)====<br />
<br />
Как только созданы эти блоки, следующий модуль ''между блоками'' помогает проводить операции между блоками так, как будто они являются лексическими единицами: блоки используются на уровне абстракции, таким образом эквивалентные слова и фразы также могут переводиться с использованием одинаковых для них правил.<br />
<br />
Этот модуль позволяет распознавать лицо, а также согласовывать слов в роде, определять порядок слов &mdash; например, согласовывать глагол прошедшего времени с местоимением в предложении на чувашском языке. В русском предложении ''Я вчера читалa'', разделение на блоки привел бы к следующему результату:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><PD><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Формат блоков во многом похож на формат выделения лексических единиц, <code>^</code> указывает на начало, и <code>$</code> на конец. Разница в том, что блок может содержать внутри себя другие лексические единицы <code>{</code> и <code>}</code>.<br />
<br />
Лексические единицы, которые заключены внутри блока (между обозначениями <code>{</code> и <code>}</code>) не могут быть обработаны и изменены модулем "между блоками"; на данном этапе мы можем только работать и изменять элементы описания блока, которые находятся в области после <code>^</code> и перед первым <code>{</code>. Описание блока содержит лемму блока (как <code>pron</code> в предыдущем примере) и морфологические тэги блока (для <code>pron</code> это {{tag|SN><p1><mf><sg><nom}}). <br />
<br />
Эти тэги могут быть связаны с лексическими формами внутри блока: этим объясняются цифры {{tag|5}} и {{tag|7}} в лексических формах глагольного блока <code>verb</code>: они связаны с пятым и седьмым тэгами блока ({{tag|PD}} и {{tag|sg}}) и будут заменены на них в модуле "после разбивания на блоки".<br />
<br />
Модуль "между блоками" имеет правила для разных видов блоков: 'именные части речи' 'наречие' 'глагол', которые копируют лицо из первого блока "именные части речи" для имени в глагольном блоке, заменяя тэг 'PD'; в данном примере присваивая тэгу {{tag|p1}} (первое лицо) значение:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><p1><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Итоговый модуль работы с блоками припишет этот тэг глаголу внутри блока.<br />
<br />
====Итоговый модуль работы с блоками (Postchunk)====<br />
<br />
Модель "после разбивки на блоки" позволяет нам использовать результаты взаимодействия между блоками и еще раз поработать с контентом. <br />
<br />
Изменения, которые блоки претерпели после прохождения модуля "между блоками" будут применены к контенту блока: тэги, содержащие число, будут заменены на значение, соответствующее тэгу вне блока. Модуль ''после разбивания на блоки'' удаляет блоки ''лемма'' и тэги, и оставляет в качестве итогового продукта ряд лексических единиц.<br />
<br />
Модуль "после разбивания на блоки" может работать одновременно с одним блоком. В добавление к элементам <tt>clip</tt>, которые соотносятся с отдельными словами, содержащимися в блоке, есть также элемент <tt>clip</tt> под номером 0 (ноль), который позволяет получать информацию из леммы, которые может использоваться для получения информации "вне" блока (измененной в модуле "между блоками") для слов внутри. Также, так как число слов в блоке может быть разным, есть элемент, <tt>lu-count</tt>, которые подсчитывает количество слов в блоке, и, соответственно влияет на наши действия.<br />
<br />
==Практика==<br />
<br />
На практической части мы посмотрим, как происходит процесс переноса в три этапа в Apertium в паре татарский &mdash;киргизский, <code>apertium-tt-ky</code>, и затем, опишем правило переноса в рамках трех и более уровней. Поэтому перейдите к папке <code>apertium-tt-ky</code> и убедитесь, что данная языковая пара создана.<br />
<br />
===Знакомство с трех-этапным переносом===<br />
<br />
Мы переведем предложение ''Әхмәт тиз генә иске зур бер агачка йөгерә.'' с татарского на киргизский и проследим за процессом перевода на трех уровнях.<br />
<br />
====Вводные данные====<br />
<br />
Так как полный переводчик с татарского на киргизский еще не закончен, мы будем пользоваться некоторыми подготовленными вводными данными из пары татарский и башкирский.<br />
<br />
<pre><br />
$ cat input <br />
^Әхмәт<np><ant><m><nom>$ ^тиз<adv>$ ^гына<postadv>$ ^иске<adj>$ ^зур<adj>$ ^бер<det><ind>$ <br />
^агач<n><dat>$ ^йөгер<v><iv><pres><p3><sg>$^..<sent>$<br />
</pre><br />
<br />
====Разделение на блоки====<br />
<br />
Итог работы маркировщика части речи передается лексическому переносу, а потом идет первый уровень переноса:<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^a_a_d_n<SN><dat>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
Существует четыре правила, применяемые модулем переноса первого уровня: <br />
<br />
* <code>ПРАВИЛО: NP-ANT</code>: Данное правило соответствует антропониму (имя человека). Оно создает новый блок имен {{tag|SN}}.<br />
* <code>ПРАВИЛО: ADV POSTADV</code>: Это правило соответствует ряду наречий и прилагательных, оно создает блок наречий {{tag|ADV}} который содержит две лексические единицы.<br />
* <code>ПРАВИЛО: ADJ ADJ DET NOM</code>: Данное правило соответствует набору из двух прилагательных, артикля и существительного. Они помещаются внутрь блока имен {{tag|SN}} и падеж блока соответствует падежу существительного. Данное существительное имеет специальный показатель {{tag|2}} на случай, если изменяется падеж блока, он копируется внутри. <br />
* <code>ПРАВИЛО: V-PRES</code>: Это правило стандартного глагола настоящего времени, оно соответствует любому глаголу в настоящем времени. В настоящем примере оно изменяет синтетическое настоящее время в татарском на продолженное настоящее время со вспомогательном глаголом в киргизском. This is because the Kyrgyz cognate to the Tatar present means either "future" or "habitual/general". This Tatar form is "habitual/general" and "present progressive". When translating the "present progressive" reading of the Tatar "present", then we need to translate to a different form in Kyrgyz, namely the participle + ''жат'' auxiliary.<br />
<br />
Обратите внимание, что после первой стадии переноса появляется несколько проблем. Грамматическое время правильное, но падеж существительного неверен, и обстоятельство не на месте. В киргизском языке оно должно стоять перед глаголом.<br />
<br />
====Между блоками====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^a_a_d_n<SN><acc>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^post<POST>{^көздөй<post>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
В модуле "между блоками" применяется одно правило:<br />
<br />
* <code>ПРАВИЛО: ADV SN V</code>: Правило соответствует блоку обстоятельства (<code>ADV</code>), за которым следует блок имен (<code>SN</code>) а потом глагольный блок (<code>V</code>). Оно содержит макроэлемент <code>conv_arg1</code>, который настраивает падеж блока имен и предлагает послеслог в зависимости от леммы глагольного блока. Оно также меняет местоположения субстантивного блока и блока обстоятельств, помещая второй перед глаголом.<br />
<br />
Мы можем видеть, что в результате работы модуля "между блоками", обстоятельство было передвинуто и субстантивный блок стоит в правильном падеже с послеслогом.<br />
<br />
====После разбивания на блоки====<br />
<br />
Последний модуль переноса использует результат работы модуля "между блоками", и заменяет связанный тэг (e.g. {{tag|2}}) на значение из блока.<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin <br />
<br />
^Акмат<np><ant><m><nom>$ ^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><acc>$ ^көздөй<post>$ ^катуу<adv>$ <br />
^гана<postadv>$ ^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$^..<sent>$<br />
<br />
</pre><br />
<br />
Теперь предложение готово к морфологическому построению. Папка <code>tr-ky.autogen.hfst</code> может быть скопирована из пары <code>apertium-tr-ky</code> в <code>trunk/</code>.<br />
<br />
====Итог====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin |\<br />
hfst-proc -g tr-ky.autogen.hfst <br />
<br />
Акмат эски чоң бир даракты көздөй катуу гана чуркап бара жатат.<br />
</pre><br />
<br />
===Описание правила многоступенчатого переноса===<br />
<br />
При создании правила многоступенчатого переноса очень важно понять как разбить правило между разными ступенями переноса. Например, перестановки (на уровне слов 1&mdash;5) наверное следует провести на первой ступени. Блоки должны быть в какой-то степени тематическими, например, спрягаемые глаголы не должны группироваться с прилагательными и существительными.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Документы по общедоступному поверхностному машинному переводу на базе платформы Apertium / Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 6]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_3&diff=31664Курсы машинного перевода для языков России/Раздел 32012-01-23T16:49:57Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
В данном разделе будет рассмотрены вопросы морфологической омонимии и описано, как они рассматриваются Грамматикой ограничений (Constraint Grammar). Буду рассмотрены теоретические аспекты некоторых видов морфологической омонимии и работа с ними при помощи правил. Практическая часть будет затрагивать поиск ошибок при определении части речи и исправление ошибок через создание правил.<br />
<br />
==Теория==<br />
Понятие омонимии, которая будет рассматриваться в этом разделе - это морфологическая омонимия. Это омонимия, которая происходит вследствие того, что, исходя из формы слова можно сделать несколько видов морфологического анализа (также называется как ''омонимичность'' &mdash; samenameness). Например, чувашское слово ''чалка'' может быть,<br />
<br />
* Существительным "чалка" единственного числа в именительном падеже.<br />
* Прилагательным "чалка".<br />
* Глаголом "чалка" в повелительном наклонении, 2 лицо, единственное число.<br />
<br />
Есть также переводная омонимия, например слово ''чалка'' как глагол может быть переведено на русский язык глаголами ''кричать'', ''стрекотать'', ''верещать'', ''галдеть'' и т.д., которая не относится к морфологической омонимии и поэтому в данном разделе не рассматривается.<br />
<br />
===Морфологическая омонимия===<br />
<br />
Существует два основных вида морфологической омонимии. Морфологическая омонимия между частями речи (например, слово может быть как существительным, так и глаголом)и морфологическая омонимия внутри частей речи (например, слово может быть только именем существительным, но одинаковым по форме как для именительного, так и для родительного падежей). Обычно, чем сложнее морфологическая структура языка, тем выше соотношение между омонимией внутри части речи и омонимией между частями речи. <br />
<br />
====Омонимия между частями речи====<br />
<br />
Пример омонимии между частями речи был приведен выше, слово ''чалка'' может быть существительным, глаголом или прилагательным. Нужно принимать во внимание, что омонимия часто встречается между прилагательными, обозначающими народность (например, по-русски ''русский'') или профессии (например, в русском языке ''военный'') и существительными, обозначающими языки или людей (''русский'') или профессии (''военный'').<br />
<br />
В языках тюркской и уральской групп, существительные и глаголы часто имеют одинаковые суффиксы (например, в финском ''-n, -t, -i''). Подобные основы слов (случайные омонимы) встречаются несколько раз в парадигме, например, по-фински ''tule-'' "приходить" и ''tuli'' "пожар": ''tuli'' = "пожар" сущ., ед.ч или "s/он пришел", ''tulet'' = "пожары" или "ты приходишь"; ''tulen" = "пожара" или "я прихожу". <br />
<br />
Деривационные процессы также могут пересекаться с флексией. Таким образом, в финском языке форма множественного числа причастия настоящего времени (и поэтому прилагательного)) и глагола настоящего времени 3 лица множественного числа всегда совпадает: ''laulavat'' = они поют / поющие (кто-то), ''tulevat'' = они приходят / приходящие (кто-то), cf. ''Laulavat baritonit laulavat usein'' (поющие баритоны часто поют).<br />
<br />
В киргизском языке есть несколько примеров ''ак'' "белый" и ''ак'' "течь/бежать (о жидкостях)", которые имеют омонимичную форму, как например ''акты'' "белый + сущ (винит.падеж)" и "акты" "оно текло". Другой пример из казахского языка ''жай'', со следующими значениями: в качестве прилагательного "медленный, простой, тихий, поздний"; в качестве наречия "медленно, просто, тихо"; в качестве существительного "молния", "причина, условие", "проживание", "лук (оружие)"; в качестве глагола "вывешивать для сушки / выкладывать, раскладывать / развешивать, расстилать", "гнать животных на пастбище".<br />
<br />
====Омонимия внутри части речи====<br />
<br />
В качестве примеров омонимии внутри одной части речи давайте рассмотрим славянские языки, где часто встречается падежный синкретизм между именительным, винительным и родительным падежами.<br />
<br />
* ''Примером может быть конденсация '''воды'''.''{{slc|ru}}<br />
* ''Príkladom môže byť kondenzácia '''vody'''.''{{slc|sk}}<br />
* ''Przykładem może być kondensacja '''wody'''.''{{slc|pl}}<br />
* ''Primer je lahko kondenzacija '''vode'''.''{{slc|sl}}<br />
<br />
Однако нельзя сказать что это присуще только славянским языками, тюркские и фино-угорские языки также имеют примеры омонимии, ограниченной частью речи, например, чувашское слово ''итлĕр'' (омонимия между повелительным наклонением и будущем временем), и финское ''voivat'' ("они могут, они могли"; это омонимия между настоящим и прошедшим временем сохраняется для всех глаголов, состоящих из одного слога и заканчивающихся на -i, например ''voida'' "мог" ''soida'' "звонить", ''naida'' "fuck", etc.).<br />
<br />
В языке коми существует системная омонимия у глаголов первого и третьего лица единственного числа прошедшего времени. В нижеприведенном предложении форма ''кывлі''может быть первого и третьего лица.<br />
<br />
:''Ме кывлі, тэ пӧ уджалан вузасянінын.''{{slc|kv}}<br />
:Я слышала, что ты работаешь в магазине.<br />
<br />
В казахском языке системная омонимия наблюдается между всеми глаголами в форме третьего лица единственного и множественного числа. Например, "барады" может означать "она/он/оно идет" или "они идут".<br />
<br />
=== Синтаксическая неоднозначность===<br />
<br />
Еще одна форма омонимии - синтаксическая неоднозначность, при которой одно и тоже предложение или фраза могут пониматься по-разному, но иметь одинаковую морфологическую структуру. Примером может служить фраза с предлогом (предложный оборот), в которой морфологические средства не позволяют показать, к какому компоненту относится фраза с предлогом. Посмотрите на следующие примеры<br />
<br />
* Сегодня я говорил с подругой Анны, с которой я познакомился вчера. (вчера я познакомился с Анной)<br />
* Сегодня я говорил с подругой Анны, с которой я познакомился вчера. (вчера я познакомился с подругой Анны)<br />
<br />
Трудность для машинного перевода возникает тогда, когда уже в языке-источнике предложение содержит неоднозначность, а не в языке перевода. Если омонимия сохранена, это вызывает меньше трудностей. <br />
<br />
Например, для вышеприведенных примеров неоднозначность сохраняется для большинства западно-европейских языков (например, индо-европейских), но для XXX два различных толкования требуют двух разных переводов:<br />
<br />
* xxx<br />
* yyy<br />
<br />
===Разрешение неоднозначности при помощи правил===<br />
<br />
Существует много способов написания правил для разрешения неоднозначности, самое важное - это суметь объяснить правила в рамках того контекста, который создает омонимию. Например, так как отдельные слова очень часто могут быть омонимами, такая омонимия снимается контекстом. Возьмем фразу на русском языке '' « нашим старым преподавателям »'', так как оба слова ''нашим'' и ''старым'' имеют достаточно омонимов (по три варианта на каждое слово), главное слово фразы ''преподавателям'', у которого только один вариант после анализа, помогает снять омонимию с двух других слов.<br />
<br />
* наш{{tag|det}}{{tag|pos}}{{tag|m}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|nt}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|m}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|nt}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* '''наш{{tag|det}}{{tag|pos}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}'''<br />
* ...<br />
<br />
Таким образом мы приходим к выводу, что необходимо написать правило, которое исключало бы варианты анализа, которые не согласовываются с главным словом.<br />
<br />
====Грамматика ограничений====<br />
<br />
Один из способов написания правил - это использование формальной системы, которая называются грамматикой ограничений (constraint grammar). Правила грамматики ограничений состоят из двух частей: действия по шаблону (образцу), и по контексту. Примеры по первой части:<br />
<br />
* {{sc|select}}: Учитывая контекст, удалите все варианты, кроме одного (одних), соответствующего шаблону.<br />
* {{sc|remove}}: Учитывая контекст, удалите вариант (ы), соответствующий шаблону.<br />
<br />
Контекстом может служить любая комбинация слов или тэгов в данном предложении. Чтобы представить что может служить контекстом, давайте посмотрим на несколько существующих правил снятия неоднозначности. Мы будем пользоваться фразами на русском языке: <br />
<br />
<center>« ''Услугами детских садов пользуются 135 тысяч работающих матерей.'' »</center><br />
<!-- ''Z usług żłobków korzysta 135 tysięcy pracujących matek'' --><br />
;Омонимия #1<br />
<br />
Слово ''детских'' имеет омонимию между родительным, предложным и винительным падежами. Нам нужно выбрать родительный падеж.<br />
<br />
* <code>SELECT Gen IF (0C A) (*1C GEN BARRIER NPNHA);</code><br />
** <code>SELECT Gen</code>: Select genitive, <code>IF</code><br />
** <code>(0C A)</code>: Слово ''только'' имеет трактовки прилагательного has adjective readings.<br />
** <code>(*1C GEN BARRIER NPNHA)</code>: После данного слова идет слово, которое может быть только в родительном падеже. Продолжаем искать слова после данного слова, пока не найдем слово, которое может быть любым словом, которое не может изменять существительное и не является наречием.<br />
<br />
;Омонимия #2<br />
<br />
Слово ''работающих'' имеет омонимию во множественном числе родительного падежа, множественном числе предложного падежа и множественном числе винительного падежа. Нам нужно выбрать вариант множественного числа родительного падежа.<br />
<br />
* <code>SELECT Gen IF (0C ACC-GEN-PRP) (*-1C Num LINK 1C Gen BARRIER NOTGEN);</code><br />
** <code>SELECT Gen</code>: Выберите родительный падеж, <code>IF</code><br />
*** <code>(0C ACC-GEN-PRP)</code>: Данное словом может стоять только в винительном, родительном или местном падежах<br />
*** <code>(*-1C Num LINK 1C Gen BARRIER NOTGEN)</code>: Перед текущим словом идет слово, которое может быть только числительным, после которого может быть только слово в родительном падеже, продолжаем искать к началу предложения, пока не найдем слово, которое не содержит тэга родительного падежа.<br />
<br />
;Омонимия #3<br />
<br />
Слово ''матери'' имеет омонимию в форме множественного числа родительного и винительного падежей. Нам нужно выбрать вариант родительного падежа (или лучше, убрать вариант винительного падежа).<br />
<br />
* <code>REMOVE Acc IF (0C ACC-OR-GEN) (*-1C Num LINK 1C Gen BARRIER NOTGEN);</code><br />
** <code>REMOVE Acc</code>: Уберите винительный падеж, <code>IF</code><br />
*** <code>(0C ACC-OR-GEN)</code>: Данное слово может стоять только в винительном или родительном падежах<br />
*** <code>(*-1C Num LINK 1C Gen BARRIER NOTGEN)</code>: У нас есть предыдущее числительное, у которого есть слово, которое после него может стоять только в родительном падеже (например,''''тысяч), и мы останавливаем поиск, когда находим слово, которое не стоит в родительном падеже (<code>BARRIER NOTGEN</code>)<br />
<br />
==Практическое задание==<br />
<br />
В данной практической части мы рассмотрим работу маркировщика (tagger), раскроем несколько ошибок определения части речи, и, наконец, предложим несколько правил снятия омонимии для решения проблемы выбора части речи.<br />
<br />
===Работа с морфологическим анализатором===<br />
<br />
Давайте попытаемся провести морфологический анализ фразы, которая выглядит довольно просто:<br />
<br />
<pre><br />
echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin<br />
^Уран/Уран<np><top><m><sg><acc>/Уран<np><top><m><sg><nom>$ <br />
^—/—<guio>$ ^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ <br />
^удалённости/удалённость<n><f><nn><sg><gen>/удалённость<n><f><nn><sg><dat>/удалённость<n><f><nn><sg><prp>/удалённость<n><f><nn><pl><acc>/удалённость<n><f><nn><pl><nom>$ <br />
^от/от<pr>$ <br />
^Солнца/Солнце<n><nt><nn><sg><gen>/Солнце<n><nt><nn><pl><acc>/Солнце<n><nt><nn><pl><nom>$<br />
^./.<sent>$<br />
</pre><br />
<br />
Фраза, которая выглядела довольно легко и понятно, на самом деле содержит множественную неоднозначность.<br />
<br />
===Поиск ошибок===<br />
<br />
Apertium предлагает статистический маркировщик, который работает следующим образом: <br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | apertium-tagger -p -g kv-ru.prob <br />
^Уран/Уран<np><top><m><sg><acc>$ <br />
^—/—<guio>$ <br />
^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ ^удалённости/удалённость<n><f><nn><sg><gen>$ <br />
^от/от<pr>$ ^Солнца/Солнце<n><nt><nn><sg><gen>$^./.<sent>$<br />
</pre><br />
<br />
В маркировщике довольно легко найти ошибки, их две:<br />
<br />
* "Уран" должно стоять в именительном падеже, а не винительном.<br />
* После предлога "по", падеж слова "удалённость" должен быть дательным, а не родительным.<br />
<br />
С остальных слов омонимия была снята правильно.<br />
<br />
===Разработка правил===<br />
<br />
При разработке правил, важно принимать во внимание следующее:<br />
<br />
* Набор ситуаций, в которых это правило будет применяться. Например, это правило будет применимо только к данному слову, к данному слову и к одному или двум словам, окружающим данное слово, применимо к придаточному предложению или ко всему предложению в целом?<br />
* Данное правило будет применимо только к этой лемме или к любому слову, которое относится к данной части речи?<br />
* Подумать о типе неоднозначности для которой создается правило. Например, правило будет применимо к любой омонимии между винительным и именительным падежами или применимо только в случае падежей существительных?<br />
* Очень часто бывает так, что существует несколько правил, которые одинаково подходят для снятия омонимии в предложении. Важно не загнать себя в ловушку, пытаясь найти "самое совершенное" правило.<br />
<br />
К вышеприведенным примерам, мы можем разработать следующие правила:<br />
<br />
* Если слово может стоять либо в именительном либо в винительном падежах, а после него следуют дефис(&mdash;) и прилагательное, которое может быть только в именительном падеже, тогда выбираем вариант именительного падежа.<br />
* После предлога "по" невозможен вариант родительного падежа.<br />
<br />
Создайте несколько правил, которые снимают проблему языковой омонимии для выбранной вами пары языков.<br />
<br />
===Грамматика ограничений===<br />
<br />
Если вы завершили этап создания (описания) правил, вы можете попробовать преобразовать их в коды в грамматике ограничений, как показано в примере на русском языке. Ниже приведен план создания файла грамматики ограничений для кодирования двух правил из предыдущих примеров и инструкция как с этим работать.<br />
<br />
<br />
<pre><br />
DELIMITERS = "<.>" "<!>" "<?>" ;<br />
SOFT-DELIMITERS = "<,>" ;<br />
<br />
LIST BOS = (>>>) ; # Начало предложения<br />
LIST EOS = (<<<) ; # Конец предложения <br />
<br />
LIST Hyphen = guio ;<br />
LIST Nom = nom ;<br />
LIST Acc = acc ;<br />
LIST Gen = gen ;<br />
<br />
LIST Not-Gen-Prep = "по";<br />
<br />
SET Acc-Or-Nom = Acc | Nom ;<br />
<br />
Раздел<br />
<br />
# Правило 1<br />
REMOVE Acc IF # Удалите вариант винительного падежа если,<br />
(0C Acc-Or-Nom) # данное слово или только в винительном или именительном падежах<br />
(1C Hyphen LINK 1 Nom); # есть дефис сразу справа, после которого именительный падеж<br />
<br />
# Правило 2<br />
REMOVE Gen IF # Удалите родительный падеж если,<br />
(-1C Not-Gen-Prep); # до него идет предлог, который не управляет родительным падежом<br />
<br />
</pre><br />
<br />
Скопируйте данный файл в текстовый редактор и сохраните как <code>rules.rlx</code>. Сначала нам нужно скомпилировать правила:<br />
<br />
<pre><br />
$ cg-comp rules.rlx rules.bin<br />
<br />
Секции: 1, Правила: 2, Наборы: 17, Тэги: 18<br />
<br />
</pre><br />
<br />
Теперь запустите их:<br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | cg-proc rules.bin <br />
^Уран/Уран<np><top><m><sg><nom>$ ^—/—<guio>$ ^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ <br />
^удалённости/удалённость<n><f><nn><pl><nom>/удалённость<n><f><nn><sg><dat>/удалённость<n><f><nn><sg><prp>/удалённость<n><f><nn><pl><acc>$ <br />
^от/от<pr>$ ^Солнца/Солнце<n><nt><nn><sg><gen>/Солнце<n><nt><nn><pl><acc>/Солнце<n><nt><nn><pl><nom>$<br />
^./.<sent>$<br />
<br />
</pre><br />
<br />
И вместе с <code>apertium-tagger</code>:<br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | cg-proc rules.bin |\<br />
apertium-tagger -g ru-kv.prob<br />
^Уран<np><top><m><sg><nom>$ ^—<guio>$ ^седьмой<det><ord><f><sg><nom>$ ^по<pr>$ <br />
^удалённость<n><f><nn><pl><nom>$ ^от<pr>$ ^Солнце<n><nt><nn><sg><gen>$^.<sent>$<br />
</pre><br />
<br />
Мы видим, что, хотя мы удалили неправильный вариант родительного падежа, у нас появился неправильный вариант множественного числа именительного падежа. Так как предлог "по" не может управлять именительным падежом, мы может это тоже удалить, используя похожее правило ко второму варианту.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* van Halteren, H. (1999) ''Syntactic wordclass tagging'' (Dordrecht: Kluwer)<br />
<br />
[[Category:Машинный перевод для языков России|Session 3]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_2&diff=31663Курсы машинного перевода для языков России/Раздел 22012-01-23T16:38:04Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Данный раздел будет посвящен знакомству с более сложными темами в словарях Apertium. В первом разделе мы увидели, как делать простые словарные записи, и рассмотрели парадигмы. В данном разделе мы рассмотрим как вводить словосочетания.<br />
<br />
==Теория==<br />
<br />
Говоря о словосочетаниях, мы должны приниматься во внимание несколько аспектов. <br />
<br />
===Композиционность===<br />
<br />
{{comment|TODO; find examples}}<br />
<br />
Словосочетание является составным, если его значение можно вывести из значений слов, которые его составляют. Однако это не означает, что оно останется составным при переводе. Например:<br />
<br />
* ''Телефонная будка''{{slc|ru}} - составное, значение становится понятным из значений двух компонентов.<br />
* ''Juego de etiquetas''{{slc|es}} - это составное словосочетание, но отдельные его компоненты в данных значениях употребляются редко.<br />
* ''Итальянская забастовка''{{slc|ru}} - это частично не составное словосочетание, значение целого выражения непонятно, если знать отдельные значения двух составляющих слов.<br />
* ''Kafa çekmek''{{slc|tr}} - идиоматическое выражение, значение словосочетания не понятно из отдельных значений его компонентов.<br />
<br />
Учитывать композиционность важно при переводе, потому что составное словосочетние по ошибке может быть рассмотрено как два отдельных простых слова, хотя в системе должен быть список всех идиоматических выражение.<br />
<br />
===Изменяемость===<br />
<br />
{{comment|TODO; find examples}}<br />
<br />
В словосочетаниях могут меняться как окончания, например, во французском языке ''vaut la peine, valait la peine'', так и слова, в киргизском: ''башым айланып жатат, башым '''катуу''' айланып жатат'' "у меня голова кружится", "у меня голова '''очень''' кружится". Некоторые глаголы в словосочетаниях могут принимать пассивную форму.<br />
<br />
Окончания слов могут изменяться или только в одном слове: <br />
<br />
* в конце, ''pazartesi gün, pazartesi gün'''ler'''''{{slc|tr}} or<br />
* в середине ''hôtel de ville, hôtel'''s''' de ville''{{slc|fr}}<br />
<br />
Или в обоих словах:<br />
<br />
* ''телефонная будка, телефонн'''ой''' будк'''и''''' {{slc|ru}} и <br />
* ''баш айлан-, баш'''ым''' айлан'''ып жатат''''' {{slc|ky}}.<br />
* ''курсак ач-, курсаг'''ым''' ач'''ып жатат''''' {{slc|ky}}.<br />
<br />
===Контактность===<br />
<br />
{{comment|TODO; find examples}}<br />
<br />
Наряду с внутренними изменениями, словосочетания делятся на контактны или неконтактные. Контактные означает, что слова следуют друз за другом, разделенные пробелом. Большинство вышеприведенных примеров - это контактные словосочетания. Но бывают и неконтактные, такие как фразовые глаголы в шведском и нидерландском, например: ''lopen uit de hand'', ''äta upp'' и ''tilføje'':<br />
<br />
* ''Twee jaar later '''loopt''' de situatie in het land onder de indruk van massabetogingen '''uit de hand'''.''{{slc|nl}}<br />
* ''Alla stygga barnen '''åt''' tigern '''upp'''.''{{slc|sv}}<br />
* '''''Føje''' et ord eller en sætning '''til''' den brugerdefinerede ordbog.''{{slc|da}}<br />
<br />
==Практическая часть==<br />
<br />
===Простое словосочетание===<br />
<br />
===Клитика===<br />
<br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 2]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_1&diff=31631Курсы машинного перевода для языков России/Раздел 12012-01-22T20:45:25Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
Данный раздел имеет две цели. Первая цель - дать теоретические представления о морфологии, как слова склоняются и как формируются новые слова. И вторая цель - показать, как происходит анализ и морфологический разбор в системе Apertium.<br />
<br />
==Tеория==<br />
<br />
Данный теоретический раздел разбит на три подраздела. В первом подразделе речь пойдет о "морфотактике", т.е.как морфемы (части слова) возникают и затем соединяются. Во втором подразделе более подробно будет говориться о "морфонологии", т.е. о том, какие изменения происходят в морфемах в результате их соединения. И в последнем подразделе мы расскажем о том, как с этими процессами работает компьютер. <br />
<br />
===Морфотактика===<br />
<br />
Морфотактика языка - это способ, которым морфемы в данном языке соединяются для формирования слов. Морфемы - наименьшие смыслообразующие части. Морфемы могут быть свободными или связанными. Свободные морфемы - это морфемы, которые могут встречаться сами по себе (например, '''''как''''', '''''один''''', '''''компьютер'''''), а связанные - которые должны быть связаны с другим словом (например, '''''-ность''''' (→ ''способность'', ''влажность'', ''личность'') '''''мо-''''' (→ ''мой'', ''моя'', ''моей'', и т.д.), '''''-ей''''' (→ ''моей'', ''семьей'', ''словарей'', и т.д.)). Одна морфема может иметь несколько алломорфов, которые обозначают одно и то же, но пишутся или произносятся по-разному. Например, дательные падеж (обозначает направление по отношению к предмету) в Чувашском языке имеет несколько алломорфов, употребление которых зависит от качества гласного в основе слова, после которой он употребляется. <br />
<br />
{|class="wikitable"<br />
|-<br />
|''aчама'' || ача·м·'''а''' || "к моему ребенку"<br />
|-<br />
|''ачамсене'' || ача·м·сен·'''е''' || "к моим детям"<br />
|-<br />
|''ӗҫӗме'' || ӗҫ·ӗм·'''е''' || "к моей работе"<br />
|-<br />
|''каҫмана'' || каҫма·'''на''' || "переходу"<br />
|}<br />
<br />
Дальше морфемы могут быть разделены на два подтипа, флективные и деривационные. В примерах, знак · указывает на деривационный стык, а » - на флективный стык. <br />
<br />
{|class="wikitable"<br />
|-<br />
|''ӗҫ'' || ӗҫ || "работ·а"<br />
|-<br />
|''ӗҫсем'' || ӗҫ·'''сем''' || "работ·ы"<br />
|-<br />
|''ĕçчен'' || ĕç»'''чен''' || "работ»ник"<br />
|-<br />
|''ĕçченсем'' || ĕç»'''чен'''·'''сем''' || "работ»ник·и"<br />
|-<br />
|''ӗҫле'' || ӗҫ»'''ле''' || "работа»ть"<br />
|-<br />
|''ӗҫле'' || ӗҫ»'''ле'''»'''тер''' || "заставить (кого-то) работать"<br />
|}<br />
==== Изменение формы слова ====<br />
<br />
Флективные морфемы являются носителями грамматических категорий, таких как число, падеж, время, и т.д., но не не изменяют категорию слова (часть речи), не изменяют корневого семантического значения. Например в чувашском языке ''ӗҫ'' и ''ӗҫсем'' имеют одно и тоже основное семантическое значение, но если добавить деривационный аффикс ''-лЕ'', ''ӗҫле'', тогда значение изменится и станет "делать ӗҫ".<br />
<br />
Примерами флективных морфем являются аффиксы множественного числа ''-lar'', ''-сем'' и ''-и'' (''kitap·lar'' {{slc|tr}}, ''ача·сем'' {{slc|cv}}, ''книг·и'' {{slc|ru}}), и окончания падежей ''-ран'' (аблятив), ''-ті'' (транслатив), и ''-де'' (местный падеж): уй·ран {{slc|cv}}, кань·ті {{slc|kv}}, үй·де {{slc|kk}}).<br />
<br />
При переводе часто именно форма слова подвергается изменениям, то есть, существуют правила, которые определяют как различные окончания слова изменяются при переводе.<br />
<br />
====Деривация====<br />
<br />
Деривационные морфемы в свою очередь изменяют корневое семантическое значение слова, а также могут изменять часть речи. В зависимости от языковой пары, деривационные морфемы обычно подвергаются меньшим изменениям, чем флективные, так как семантические изменения, вызываемые разными деривационными морфемами, более непредсказуемы.<br />
<br />
Следующие слова могут служить примерами деривации -LIK на кыргызском (ай "месяц" + LIK = айлык "месячная оплата"), -LA на кыргызском (ай "месяц" + LA = айла- "пройти месяц"), и -ja на финском (kirjoitta+ja "писать" + "действующее лицо" = "писатель").<br />
<br />
====Словосложение====<br />
<br />
Словосложение - это процесс, при котором два или более слов соединяются и образуют одно слово. Среди языков Европы, наиболее часто этот процесс заметен в германских языках и никоторых неиндоевропейских языках.<br />
<br />
Примеры словосложений:<br />
<br />
* Tietokoneanimaatioelokuva = Tietokone+animaatio+elo+kuva {{slc|fi}}<br />
* Kontaktlinsenverträglichkeitstest = Kontakt+Linsen+Verträglichkeit(s)+Test {{slc|de}}<br />
* Еlmegyógyintézet = Elme+gyógy+intézet {{slc|hu}}<br />
* Giellamovttidanplána = Giella+movttidan+plána {{slc|se}}<br />
<br />
В языках, где словосложение очень развито, желательно, чтобы составные слова анализировались и автоматически переводились. Это позволяет сократить морфемный словарь, а также работать с ранее не встречающимися формами.<br />
<br />
====Клитика====<br />
<br />
Клитика (а clitic) - это синтаксически независимое слово, которое фонологически ведет себя как аффикс другого слова. Для целей машинного перевода между письменными формами языков, нас особенно интересует аффиксы, которые пишутся орфографически либо вместе с другим словом, либо отдельно, но их форма обусловлена другим словом.<br />
<br />
В тюркских языках (в некоторых угорских языках) есть вопросительное слово (иногда его называют частица), в турецком mA, Kyrgyz ''-BI'', казахском ''MA'', финском ''-kO'', северо-саамском North Sámi ''-go''. Примеры: ''келесің бе?'' {{slc|kk}} ''келесиңби?'' {{slc|ky}} ''tuletko?'' {{slc|fi}} ''boađátgo?'' {{slc|se}} "ты идешь?". Данная фонема является клитикой (a clitic) потому что ее фонологическая форма зависит от предыдущего слова, но синтаксически (а иногда орфографически) она самостоятельна. <br />
<br />
В таджикском языке, есть вариант слова для союза "и" который, синтаксический ведет себя как союз, присоединяется к предыдущему слова, каким бы оно не было. Он может иметь форму ''-у'' (после согласных) и ''-ву'' (после гласных). Альтернативным примером выражения ''чой ва шароб'' "чай и вино ": будет ''чою шароб''.<br />
<br />
===Морфонология===<br />
<br />
Морфонология изучает фонологические изменения, которые происходят с морфемами при присоединении. Морфонология четко прослеживается в любом наборе морфем любого языка, но в данном разделе мы объясним этот процесс на примере суффикса множественного числа в татарском языке, -/LAr/. <br />
<br />
Суффикс имеет четыре формы, выбор которых зависит от существительного, к которому он присоединяется: -лар, -ләр, -нар, -нәр. Например, алма·лар "яблоки", тел·ләр "языки", урам+нар "улицы", көн·нәр "дни". В данных примерах, первый согласный это /л/ или /н/ в зависимости от звука, на который заканчивается слово; /н/ если суффикс следует непосредственно после носового согласного (м, н, ң), a /л/ после других звуков. Гласный /A/ изменяется в зависимости от последней гласной слова: после гласных заднего ряда "back/твёрдые гласные" (а, о, ы, у) это /а/, а после гласных переднего ряда "front/мягкие гласные" (ә, э, ө, и, ү) это /ә/.<br />
<br />
===Компьютерные репрезентации===<br />
<br />
Компьютерные морфологические модели обычно пользуются инструментами под названием "конечные автоматы" (finite-state transducers) для создания морфотактики и морфонологии. Конечный автомат немного похож на схему, в которой, в зависимости от части слова которую вы загружаете, вы уже решаете какая у него будет флексия или деривация. Но в отличии от обыкновенной схемы, решение может вести к множеству заключений! <br />
<br />
[[Image:Bashkir lexc.png|800px|center|thumb|Конечный автомат, моделирующий основные категории морфотактики трех имен существительных на башкирском языке (множественное число, принадлежность, падеж). Заметьте, как используются архифонемы (буквы в <code>{</code> и <code>}</code>) для репрезентации букв, которые могут изменяться согласно правилам фонологии.]]<br />
<br />
Вышеупомянутый автомат, в более расширенном виде сложен для полного ознакомления, но, если мы удалим категорию принадлежности, нам будет проще более детально посмотреть как он работает. <br />
<br />
[[File:Bashkir mektep.png|800px|center|thumb|Конечный автомат, моделирующий падежное окончание и окончание множественного числа башкирского слова ''мәктәп'' "школа".]]<br />
<br />
Из нашего примера башкирское слово ''мәктәп'' "школа" изменяется по числам (единственное, множественное) и падежам (именительный, родительный, дательный, винительный, местный и творительный). Если посмотреть на вышеуказанный автомат, каждая кривая на графике имеет обозначение (пометку). Она состоит из двух частей, левая часть (слева от <code>:</code>) и правая (справа от <code>:</code>). При чтении слева направо мы можем провести анализ слова. <br />
<br />
<div style="float: right"><br />
{|class=wikitable<br />
! !! Ед.число !! Множественное<br />
|-<br />
| '''Именительный''' || мәктәп || мәктәптәр<br />
|-<br />
| '''Винительный''' || мәктәпте || мәктәптәрҙе<br />
|-<br />
| '''Родительный''' || мәктәптең || мәктәптәрҙең<br />
|-<br />
| '''Местный''' || мәктәптә || мәктәптәрҙә<br />
|-<br />
| '''Творительный''' || мәктәптән || мәктәптәрҙән<br />
|-<br />
| '''Дательный''' || мәктәпкә || мәктәптәргә<br />
|-<br />
|}<br />
</div><br />
<br />
Вы можете попробовать проделать такую же работу со словом из таблицы склонений справа. Например, ''мәктәптәрҙән'' "из школ". Нам следует получить следующий анализ <code>мәктәп<n><pl><abl></code>. Процесс выглядит примерно следующим образом: <br />
<br />
* read <code>м</code>, write <code>м</code> (input: <code>м</code>, оutput: <code>м</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мә</code>, оutput: <code>мә</code>)<br />
* read <code>к</code>, write <code>к</code> (input: <code>мәк</code>, оutput: <code>мәк</code>)<br />
* read <code>т</code>, write <code>т</code> (input: <code>мәкт</code>, оutput: <code>мәкт</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мәктә</code>, оutput: <code>мәктә</code>)<br />
* read <code>п</code>, write <code>п</code> (input: <code>мәктәп</code>, оutput: <code>мәктәп</code>)<br />
* read <code>0</code>, write {{tag|n}} (input: <code>мәктәп0</code>, оutput: <code>мәктәп</code>{{tag|n}})<br />
* read <code>т</code>, write {{tag|pl}} (input: <code>мәктәп0т</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}})<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}0)<br />
* read <code>p</code>, write <code>0</code> (input: <code>мәктәп0тәp</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00)<br />
* read <code>0</code>, write {{tag|abl}} (input: <code>мәктәп0тәp0</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}})<br />
* read <code>ҙ</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙ</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>0</code>)<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>00</code>)<br />
* read <code>н</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙән</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>000</code>)<br />
<br />
Заметьте, что загрузка и написание 0 означает ничего не загружать и не записывать.<br />
<br />
==Практическая часть==<br />
<br />
Для практической части есть два раздаточных материала, <br />
<br />
* [[Как использовать HFST, чтобы разработать новый морфологический анализатор]]<br />
* [[Как использовать lttoolbox, чтобы разработать новый морфологический анализатор]]<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Kenneth R. Beesley and Lauri Karttunen (2003) ''Конечная морфология / Finite-State Morphology'' (CSLI Publications)<br />
* Richard Sproat (1992) ''Морфология и компьютерные вычисления / Morphology and Computation'' (MIT Press)<br />
* Francis M. Tyers (2007) "[[Руководство по созданию новой языковой пары]]" (Apertium Wiki)<br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 1]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_0&diff=31630Курсы машинного перевода для языков России/Раздел 02012-01-22T20:44:47Z<p>Enjo: </p>
<hr />
<div><center><big>Раздел 0: Обзор</big></center><br />
{{TOCD}}<br />
В данном разделе будет дан краткий обзор такого метода перевода как машинный перевод, основанного на использовании введенных правил и представлена работа открытой платформы свободного машинного перевода Apertium<br />
<br />
Существуют два принципиально отличающихся друг от друга вида машинного перевода: <br />
<br />
* Машинный перевод, основанный на правилах (Rule Based Machine Translation), его также называют символьным машинным переводом; Apertium как раз относится к данному виду и этот раздел посвящен подвиду машинного перевода, основанного на правилах <br />
* Корпусный машинный перевод; при таком переводе для перевода новых предложений переводчик обращается к пулу из ранее переведенных предложений. <br />
<br />
Если кратко представить корпусный МП, то его можно разделить на две главные подгруппы: подгруппа, в основе которой лежат статистические данные, и подгруппа, основанная на примерах. Теоретически, основной принцип работы статистического машинного перевода заключается в следующем: берется набор ранее переведенных предложений (параллельный корпус) и подсчитывается какие символы совпадают наиболее часто. Всем символам, которые совпадают, присваивается признак вероятности. При переводе нового предложения переводчик рассматривает все слова (символы), которым присвоен признак вероятности, их вероятности комбинируется, делается несколько вариантов возможных переводов и затем выбирается вариант перевода с самой высокой степенью вероятности. Первые системы статистического МП учитывали только совпадение слов, но более новые системы могут учитывать совпадения последовательных рядов слов (фраз) и иерархических деревьев. <br />
<br />
В противовес этому, машинный перевод, основанный на анализе примеров, может быть назван переводом по аналогии. В нем также используется параллельные корпуса, но, вместо того чтобы обращаться к признакам вероятности слов, переводчик учится делать анализ на основе примеров. Например, если будет дана пара предложений (Девочке нравятся кошки. {{slc|ru}} → Кызга мышыктар жагат. {{slc|ky}} и Девочке нравятся слоны. → Кызга пилдер жагат.) переводчик может предложить следующий пример перевода (AДевочке нравятся X → Кызга X жагат). При переводе нового предложения, переводчик обращается и анализирует данные части предложения и заменяет их. <br />
<br />
Автоматическое применение большего пула переводных текстов (переводной памяти) к тексту может быть также названо видом машинного перевода с использованием корпуса. На самом деле, границы между статистическим машинным переводом и переводом, которые использует и анализирует примеры, достаточно размыты. И в том и в другом методе есть свои недостатки и преимущества. При использовании методов машинного перевода с использованием корпуса, переводной текст обычно выглядит более естественным, но может страдать сам смысл перевода, при использовании систем, которые используют метод, основанный на применении правил, перевод выглядит не таким гладким, но более точно передает смысл с языка оригинала.<br />
<br />
Системы, основанные на правилах, и системы, в которых используются корпус, могут быть объединены различными способами и представлять собой смешанную систему. Например, можно создать смешанную систему, где корпусный машинный перевод помогает найти эквиваленты, а затем применяется метод, основанный на правилах, в случае, если не найдено ни одного совпадающего образца.<br />
<br />
==Виды систем машинного перевода==<br />
<br />
===Прямой===<br />
Прямой, или пословный машинный перевод осуществляется следующим образом: из языка источника считывается по одному слову за один раз, затем слово ищется в двуязычном списке слов поверхностной формы (surface forms). Слова могут быть удалены или не учтены, и, могут быть переведены одним или несколькими словами. Грамматический анализ не проводится, так что даже такие простые ошибки, как соглашение в роде и числе между существительным и определением к нему останется в языке перевода на выходе.<br />
<br />
[[File:Session0 primer1.svg|center]]<br />
<br />
===Перенос===<br />
<br />
Машинный перевод, основанный на переносе, работает таким образом, что, сначала язык-источник преобразовывается в зависимую от языка промежуточную репрезентацию, а затем правила применяются уже к этой промежуточной репрезентации с целью преобразования структуры языка-источника в структуру языка перевода. Перевод осуществляется с этой репрезентации с использованием как двуязычных словарей, так и грамматических правил.<br />
<br />
[[File:Session0 primer2.svg|300px|right]]<br />
<br />
Различия могут быть в уровне абстракции этой промежуточной репрезентации. Можно выделить две большие группы: неглубокая передача и глубокая передача. При неглубоком переносе машинного перевода промежуточная репрезентация, как правило, основывается или на морфологии или на поверхностном синтаксисе. При глубокой передачи МП промежуточная репрезентация обычно включает в себя что-то похожее на дерево разбора или графическую структуру (см. изображение справа)<br />
<br />
Машинный перевод, основанный на переносе обычно работает следующим образом: сначала текст перевода анализируется и снимается морфологическая неоднозначность (а в случае глубокой передачи, синтаксическая) с целью получения промежуточной репрезентации исходного языка. Процесс переноса затем преобразует эту финальную репрезентацию (все еще на языке оригинала) в репрезентацию на том же уровне абстракции в языке перевода. Из репрезентации языка перевода, генерируется язык перевода.<br />
<br />
===Язык-посредник===<br />
<br />
В машинном переводе, основанном на переносе, правила написаны по принципу пара-на-пару, что делает их особенными для языковой пары. В подходе "язык-посредник", промежуточная репрезентация полностью независима от языка. Есть ряд преимуществ такого подхода, но также и недостатки. Преимущества в том, что есть возможность добавить новый язык в существующую систему МП, необходимо лишь написать анализатор и генератор для нового языка, а не правила переноса между новым языком и всеми существующими языками. Недостаток в том, что очень трудно определить язык-посредник, который может действительно представлять все нюансы всех естественных языков, и на практике, язык-посредник используются только для ограниченных областей перевода.<br />
<br />
==Проблемы машинного перевода==<br />
<br />
===Анализ===<br />
<br />
<center>'''Форма не полностью определяет содержание.'''</center><br />
<br />
Это также называется проблемой омонимии. Проблема состоит в том, что многие предложения на одном языке могут иметь более чем одну интерпретацию и эти интерпретации могут быть переведены по разному на разные языки. Рассмотрим следующий пример на финнском языке: <br />
<br />
* Tuovatko he uutisia Kreikasta? (Греция как предмет)<br />
** → Они приносили новости о Грецие? {{slc|ru}}<br />
** → Греция жөнүндө жаңылык алып келди. {{slc|ky}} <br />
* Tuovatko he uutisia Kreikasta? (Греция как источник)<br />
** → Они приносили новости из Греции? {{slc|ru}}<br />
** → Грециядан жаңылык алып келди. {{slc|ky}}<br />
<br />
Но иногда эта многозначность может быть сохранена, например, при переводе этой же фразы на другой тюркский язык:<br />
<br />
* Traían noticias de Grecia? (Греция как предмет и источник)<br />
** → Traían notícias de Grecía? {{slc|es}}<br />
<br />
===Синтез===<br />
<center>'''Содержание не полностью определяет форму.''' </center><br />
Проблема в том, что в данном языке не один способ передачи одного и того же значения. На пр. на чувашском языке: "сколько времени?"/"который час?"...<br />
<br />
:Эсир мӗнле пурӑнатӑр? <br />
:Мӗнле пурнӑҫсем?<br />
:Мӗнле халсем?<br />
:Мӗнле еҫсем?<br />
<br />
Все эти вопросы требуют одинакового ответа, но их частотность и место употребления могут различаться. <br />
В Apertium, на каждое введенное предложение, предлагается один вариант. От создателя системы зависит, какой вариант перевода будет предлагать система. Часто мы рекомендуем, чтобы это был наиболее литературный перевод, так как это снижает необходимость в правилах переноса.<br />
<br />
===Перенос===<br />
<center>'''Одно и тоже содержание по разному представлено в разных языках. '''</center><br />
<br />
В языках существуют различные способы передачи одного и того же значения. И эти значения обычно несовместимы между языками. Рассмотрите следующие примеры предложений, которые выражают одно и то же значение: <br />
<br />
* Мен (сууга) сүзгөндү жакшы көрөм.<br />
** Мен = {{sc|subject}}, сүзгөндү = {{sc|dir. object}}, жакшы.көрөм = {{sc|verb}}<br />
* Маған (суда) жүзу ұнайды.<br />
** Маған = {{sc|ind. object}}, жүзу = {{sc|subject}}, ұнайды = {{sc|verb}}.<br />
* Minä pidän uimisesta<br />
** Minä = {{sc|subject}}, pidän = {{sc|verb}}, uimisesta = {{sc|adverbial}}<br />
<br />
В системе Apertium, применяются правила, которые трансформируют структуру языка источника в структуру целевого языка, используя последовательность лексических форм в качестве промежуточной репрезентации. Более подробная информация в разделе 5: Основы структурного переноса.<br />
<br />
===Описание===<br />
<br />
<center>'''Как отразить информация о процессе перевода на языке компьютера.'''</center><br />
<br />
Последней проблемой является проблема описания. Чтобы создать систему машинного перевода, люди со знанием обоих языков должны систематизировать-кодировать свои знания в таком виде, чтобы компьютер смог их обработать.<br />
<br />
Так как перевод часто является бессознательным процессом, мы переводим не задумываясь о правилах, которыми мы пользуемся. Компьютеры не имеют такой способности, им нужны конкретные инструкции что именно нужно делать. Перевод не получится, если в компьютер не будет занесена информация по переводу.<br />
<br />
Но для многих предложений данная информация необязательна:<br />
<br />
Например, на славянских языках:<br />
* Апертиум - система машинного перевода. {{slc|ru}}<br />
* Apertium je sistem za mašinskoga prevođenja. {{slc|sh}}<br />
* Apertium je sistem za računalniško prevajanje. {{slc|sl}}<br />
<br />
И на тюркских языках:<br />
* Apertium bir makine çevirisi sistemidir. {{slc|tr}}<br />
* Апертиум - машиналык котормо системасы. {{slc|ky}}<br />
* Апертиум - машиналық аудару системасы. {{slc|kk}}<br />
* Апертиум - машина тәрҗемәләве системасы. {{slc|tt}}<br />
* Апертиум - машина тәржемәләүе системаһы. {{slc|ba}}<br />
<br />
и на уральских языках:<br />
* Apertium on konekäännösjärjestelmä. {{slc|fi}}<br />
<br />
==Практика==<br />
<br />
===Установка===<br />
<br />
Для руководства по установке Apertium, HFST и грамматике ограничений, смотрите раздаточный материал.<br />
<br />
===Применение===<br />
<br />
Чтобы пользоваться системой Apertium, сначала откройте терминал. Теперь зайдите в раздел языковой пары (через <code>cd</code>), которую хотите протестировать. <br />
<br />
<pre><br />
$ cd apertium-aa-bb<br />
</pre><br />
<br />
Вы можете протестировать ее при помощи следующей команды: <br />
<br />
<pre><br />
$ echo "Текст, который вы хотите перевести." | apertium -d . aa-bb<br />
</pre><br />
<br />
Например, из турецкого в киргизский:<br />
<br />
<pre><br />
$ echo "En güzel kız evime geldi." | apertium -d . tr-ky<br />
Эң жакшынакай кыз үйүмө келди. <br />
</pre><br />
<br />
===Структура раздела===<br />
<br />
Ниже приведена таблица, в которой дано описание основных файлов с данными, которые присутствуют в типичной языковой паре и ссылки на разделы в которых они описаны.<br />
<br />
<center><br />
{|class=wikitable<br />
! Файл !! Вид !! Описание !! Раздел(ы)<br />
|- <br />
| <code>apertium-tt-ba.tt.lexc</code> || Словарь || Словарь морфотактики татарского языка, для анализа и формирования || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|- <br />
| <code>apertium-tt-ba.tt.twol</code> || Фонологические правила || Морфонологические правила татарского языка || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.ba.lexc</code> || Словарь || Словарь морфотактики башкирского языка, для анализа и формирования || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.ba.twol</code> || Фонологические правила || Морфонологические правила башкирского языка || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.tt.rlx</code> || Правила по разрешению неоднозначности || Грамматика ограничений татарского языка для снятия морфологической неоднозначности || [[Машинный перевод для языков России/Раздел 3|3]]<br />
|-<br />
| <code>apertium-tt-ba.ba.rlx</code> || Правила по разрешению неоднозначности || Грамматика ограничений башкирского языка для снятия морфологической неоднозначности || [[Машинный перевод для языков России/Раздел 3|3]]<br />
|-<br />
| <code>apertium-tt-ba.tt-ba.dix</code> || Словарь || Татарско&mdash;башкирский двуязычный словарь для лексического переноса || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.tt.lrx</code> || Правила лексической выборки || Правила лексической выборки для татарского языка || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.ba.lrx</code> || Правила лексической выборки || Правила лексической выборки для башкирского языка || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.tt-ba.t1x</code> || Правила переноса || Татарско-башкирский файл с правилами первого уровня для структурного переноса || [[Машинный перевод для языков России/Раздел 5|5]] [[Машинный перевод для языков России/Раздел 6|6]]<br />
|-<br />
|-<br />
| <code>apertium-tt-ba.ba-tt.t1x</code> || Правила переноса || Башкирско-татарский файл с правилами первого уровня для структурного переноса || [[Машинный перевод для языков России/Раздел 5|5]] [[Машинный перевод для языков России/Раздел 6|6]]<br />
|-<br />
|}<br />
</center><br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 0]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_0&diff=31628Курсы машинного перевода для языков России/Раздел 02012-01-22T20:40:01Z<p>Enjo: </p>
<hr />
<div><center><big>Раздел 0: Обзор</big></center><br />
{{TOCD}}<br />
В данном разделе будет дан краткий обзор такого метода перевода как машинный перевод, основанного на использовании введенных правил и представлена работа открытой платформы свободного машинного перевода Apertium<br />
<br />
Существуют два принципиально отличающихся друг от друга вида машинного перевода: <br />
<br />
* Машинный перевод, основанный на правилах (Rule Based Machine Translation), его также называют символьным машинным переводом; Apertium как раз относится к данному виду и этот раздел посвящен подвиду машинного перевода, основанного на правилах <br />
* Корпусный машинный перевод; при таком переводе для перевода новых предложений переводчик обращается к пулу из ранее переведенных предложений. <br />
<br />
Если кратко представить корпусный МП, то его можно разделить на две главные подгруппы: подгруппа, в основе которой лежат статистические данные, и подгруппа, основанная на примерах. Теоретически, основной принцип работы статистического машинного перевода заключается в следующем: берется набор ранее переведенных предложений (параллельный корпус) и подсчитывается какие символы совпадают наиболее часто. Всем символам, которые совпадают, присваивается признак вероятности. При переводе нового предложения переводчик рассматривает все слова (символы), которым присвоен признак вероятности, их вероятности комбинируется, делается несколько вариантов возможных переводов и затем выбирается вариант перевода с самой высокой степенью вероятности. Первые системы статистического МП учитывали только совпадение слов, но более новые системы могут учитывать совпадения последовательных рядов слов (фраз) и иерархических деревьев. <br />
<br />
В противовес этому, машинный перевод, основанный на анализе примеров, может быть назван переводом по аналогии. В нем также используется параллельные корпуса, но, вместо того чтобы обращаться к признакам вероятности слов, переводчик учится делать анализ на основе примеров. Например, если будет дана пара предложений (Девочке нравятся кошки. {{slc|ru}} → Кызга мышыктар жагат. {{slc|ky}} и Девочке нравятся слоны. → Кызга пилдер жагат.) переводчик может предложить следующий пример перевода (AДевочке нравятся X → Кызга X жагат). При переводе нового предложения, переводчик обращается и анализирует данные части предложения и заменяет их. <br />
<br />
Автоматическое применение большего пула переводных текстов (переводной памяти) к тексту может быть также названо видом машинного перевода с использованием корпуса. На самом деле, границы между статистическим машинным переводом и переводом, которые использует и анализирует примеры, достаточно размыты. И в том и в другом методе есть свои недостатки и преимущества. При использовании методов машинного перевода с использованием корпуса, переводной текст обычно выглядит более естественным, но может страдать сам смысл перевода, при использовании систем, которые используют метод, основанный на применении правил, перевод выглядит не таким гладким, но более точно передает смысл с языка оригинала.<br />
<br />
Системы, основанные на правилах, и системы, в которых используются корпус, могут быть объединены различными способами и представлять собой смешанную систему. Например, можно создать смешанную систему, где корпусный машинный перевод помогает найти эквиваленты, а затем применяется метод, основанный на правилах, в случае, если не найдено ни одного совпадающего образца.<br />
<br />
==Виды систем машинного перевода==<br />
<br />
===Прямой===<br />
Прямой, или пословный машинный перевод осуществляется следующим образом: из языка источника считывается по одному слову за один раз, затем слово ищется в двуязычном списке слов поверхностной формы (surface forms). Слова могут быть удалены или не учтены, и, могут быть переведены одним или несколькими словами. Грамматический анализ не проводится, так что даже такие простые ошибки, как соглашение в роде и числе между существительным и определением к нему останется в языке перевода на выходе.<br />
<br />
[[File:Session0 primer1.svg|center]]<br />
<br />
===Перенос===<br />
<br />
Машинный перевод, основанный на переносе, работает таким образом, что, сначала язык-источник преобразовывается в зависимую от языка промежуточную репрезентацию, а затем правила применяются уже к этой промежуточной репрезентации с целью преобразования структуры языка-источника в структуру языка перевода. Перевод осуществляется с этой репрезентации с использованием как двуязычных словарей, так и грамматических правил.<br />
<br />
[[File:Session0 primer2.svg|300px|right]]<br />
<br />
Различия могут быть в уровне абстракции этой промежуточной репрезентации. Можно выделить две большие группы: неглубокая передача и глубокая передача. При неглубоком переносе машинного перевода промежуточная репрезентация, как правило, основывается или на морфологии или на поверхностном синтаксисе. При глубокой передачи МП промежуточная репрезентация обычно включает в себя что-то похожее на дерево разбора или графическую структуру (см. изображение справа)<br />
<br />
Машинный перевод, основанный на переносе обычно работает следующим образом: сначала текст перевода анализируется и снимается морфологическая неоднозначность (а в случае глубокой передачи, синтаксическая) с целью получения промежуточной репрезентации исходного языка. Процесс переноса затем преобразует эту финальную репрезентацию (все еще на языке оригинала) в репрезентацию на том же уровне абстракции в языке перевода. Из репрезентации языка перевода, генерируется язык перевода.<br />
<br />
===Язык-посредник===<br />
<br />
В машинном переводе, основанном на переносе, правила написаны по принципу пара-на-пару, что делает их особенными для языковой пары. В подходе "язык-посредник", промежуточная репрезентация полностью независима от языка. Есть ряд преимуществ такого подхода, но также и недостатки. Преимущества в том, что есть возможность добавить новый язык в существующую систему МП, необходимо лишь написать анализатор и генератор для нового языка, а не правила переноса между новым языком и всеми существующими языками. Недостаток в том, что очень трудно определить язык-посредник, который может действительно представлять все нюансы всех естественных языков, и на практике, язык-посредник используются только для ограниченных областей перевода.<br />
<br />
==Проблемы машинного перевода==<br />
<br />
===Анализ===<br />
<br />
<center>'''Форма не полностью определяет содержание.'''</center><br />
<br />
Это также называется проблемой омонимии. Проблема состоит в том, что многие предложения на одном языке могут иметь более чем одну интерпретацию и эти интерпретации могут быть переведены по разному на разные языки. Рассмотрим следующий пример на финнском языке: <br />
<br />
* Tuovatko he uutisia Kreikasta? (Греция как предмет)<br />
** → Они приносили новости о Грецие? {{slc|ru}}<br />
** → Греция жөнүндө жаңылык алып келди. {{slc|ky}} <br />
* Tuovatko he uutisia Kreikasta? (Греция как источник)<br />
** → Они приносили новости из Греции? {{slc|ru}}<br />
** → Грециядан жаңылык алып келди. {{slc|ky}}<br />
<br />
Но иногда эта многозначность может быть сохранена, например, при переводе этой же фразы на другой тюркский язык:<br />
<br />
* Traían noticias de Grecia? (Греция как предмет и источник)<br />
** → Traían notícias de Grecía? {{slc|es}}<br />
<br />
===Синтез===<br />
<center>'''Содержание не полностью определяет форму.''' </center><br />
Проблема в том, что в данном языке не один способ передачи одного и того же значения. На пр. на чувашском языке: "сколько времени?"/"который час?"...<br />
<br />
:Эсир мӗнле пурӑнатӑр? <br />
:Мӗнле пурнӑҫсем?<br />
:Мӗнле халсем?<br />
:Мӗнле еҫсем?<br />
<br />
Все эти вопросы требуют одинакового ответа, но их частотность и место употребления могут различаться. <br />
В Apertium, на каждое введенное предложение, предлагается один вариант. От создателя системы зависит, какой вариант перевода будет предлагать система. Часто мы рекомендуем, чтобы это был наиболее литературный перевод, так как это снижает необходимость в правилах переноса.<br />
<br />
===Перенос===<br />
<center>'''Одно и тоже содержание по разному представлено в разных языках. '''</center><br />
<br />
В языках существуют различные способы передачи одного и того же значения. И эти значения обычно несовместимы между языками. Рассмотрите следующие примеры предложений, которые выражают одно и то же значение: <br />
<br />
* Мен (сууга) сүзгөндү жакшы көрөм.<br />
** Мен = {{sc|subject}}, сүзгөндү = {{sc|dir. object}}, жакшы.көрөм = {{sc|verb}}<br />
* Маған (суда) жүзу ұнайды.<br />
** Маған = {{sc|ind. object}}, жүзу = {{sc|subject}}, ұнайды = {{sc|verb}}.<br />
* Minä pidän uimisesta<br />
** Minä = {{sc|subject}}, pidän = {{sc|verb}}, uimisesta = {{sc|adverbial}}<br />
<br />
В системе Apertium, применяются правила, которые трансформируют структуру языка источника в структуру целевого языка, используя последовательность лексических форм в качестве промежуточной репрезентации. Более подробная информация в разделе 5: Основы структурного переноса.<br />
<br />
===Описание===<br />
<br />
<center>'''Как отразить информация о процессе перевода на языке компьютера.'''</center><br />
<br />
Последней проблемой является проблема описания. Чтобы создать систему машинного перевода, люди со знанием обоих языков должны систематизировать-кодировать свои знания в таком виде, чтобы компьютер смог их обработать.<br />
<br />
Так как перевод часто является бессознательным процессом, мы переводим не задумываясь о правилах, которыми мы пользуемся. Компьютеры не имеют такой способности, им нужны конкретные инструкции что именно нужно делать. Перевод не получится, если в компьютер не будет занесена информация по переводу.<br />
<br />
Но для многих предложений данная информация необязательна:<br />
<br />
Например, на славянских языках:<br />
* Апертиум - система машинного перевода. {{slc|ru}}<br />
* Apertium je sistem za mašinskoga prevođenja. {{slc|sh}}<br />
* Apertium je sistem za računalniško prevajanje. {{slc|sl}}<br />
<br />
И на тюркских языках:<br />
* Apertium bir makine çevirisi sistemidir. {{slc|tr}}<br />
* Апертиум - машиналык котормо системасы. {{slc|ky}}<br />
* Апертиум - машиналық аудару системасы. {{slc|kk}}<br />
* Апертиум - машина тәрҗемәләве системасы. {{slc|tt}}<br />
* Апертиум - машина тәржемәләүе системаһы. {{slc|ba}}<br />
<br />
и на уральских языках:<br />
* Apertium on konekäännösjärjestelmä. {{slc|fi}}<br />
<br />
==Практика==<br />
<br />
===Установка===<br />
<br />
Для руководства по установке Apertium, HFST и грамматике ограничений, смотрите раздаточный материал.<br />
<br />
===Применение===<br />
<br />
Чтобы пользоваться системой Apertium, сначала откройте терминал. Теперь зайдите в раздел языковой пары (через <code>cd</code>), которую хотите протестировать. <br />
<br />
<pre><br />
$ cd apertium-aa-bb<br />
</pre><br />
<br />
Вы можете протестировать ее при помощи следующей команды: <br />
<br />
<pre><br />
$ echo "Текст, который вы хотите перевести." | apertium -d . aa-bb<br />
</pre><br />
<br />
Например, из турецкого в киргизский:<br />
<br />
<pre><br />
$ echo "En güzel kız evime geldi." | apertium -d . tr-ky<br />
Эң жакшынакай кыз үйүмө келди. <br />
</pre><br />
<br />
===Структура раздела===<br />
<br />
Ниже приведена таблица, в которой дано описание основных файлов с данными, которые присутствуют в типичной языковой паре и ссылки на разделы в которых они описаны.<br />
<br />
<center><br />
{|class=wikitable<br />
! Файл !! Вид !! Описание !! Раздел(ы)<br />
|- <br />
| <code>apertium-tt-ba.tt.lexc</code> || Словарь || Словарь морфотактики татарского языка, для анализа и формирования || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|- <br />
| <code>apertium-tt-ba.tt.twol</code> || Фонологические правила || Морфонологические правила татарского языка || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.ba.lexc</code> || Словарь || Словарь морфотактики башкирского языка, для анализа и формирования || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.ba.twol</code> || Фонологические правила || Морфонологические правила башкирского языка || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.tt.rlx</code> || Правила расстановки тэгов || Грамматика ограничений татарского языка для снятия морфологической неоднозначности || [[Машинный перевод для языков России/Раздел 3|3]]<br />
|-<br />
| <code>apertium-tt-ba.ba.rlx</code> || Правила расстановки тэгов || Грамматика ограничений башкирского языка для снятия морфологической неоднозначности || [[Машинный перевод для языков России/Раздел 3|3]]<br />
|-<br />
| <code>apertium-tt-ba.tt-ba.dix</code> || Словарь || Татарско&mdash;башкирский двуязычный словарь для лексического переноса || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.tt.lrx</code> || Правила лексической выборки || Правила лексической выборки для татарского языка || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.ba.lrx</code> || Правила лексической выборки || Правила лексической выборки для башкирского языка || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.tt-ba.t1x</code> || Правила переноса || Татарско-башкирский файл с правилами первого уровня для структурного переноса || [[Машинный перевод для языков России/Раздел 5|5]] [[Машинный перевод для языков России/Раздел 6|6]]<br />
|-<br />
|-<br />
| <code>apertium-tt-ba.ba-tt.t1x</code> || Правила переноса || Башкирско-татарский файл с правилами первого уровня для структурного переноса || [[Машинный перевод для языков России/Раздел 5|5]] [[Машинный перевод для языков России/Раздел 6|6]]<br />
|-<br />
|}<br />
</center><br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 0]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_0&diff=31627Курсы машинного перевода для языков России/Раздел 02012-01-22T20:36:48Z<p>Enjo: </p>
<hr />
<div><center><big>Раздел 0: Обзор</big></center><br />
{{TOCD}}<br />
В данном разделе будет дан краткий обзор такого метода перевода как машинный перевод, основанного на использовании введенных правил и представлена работа открытой платформы свободного машинного перевода Apertium<br />
<br />
Существуют два принципиально отличающихся друг от друга вида машинного перевода: <br />
<br />
* Машинный перевод, основанный на правилах (Rule Based Machine Translation), его также называют символьным машинным переводом; Apertium как раз относится к данному виду и этот раздел посвящен подвиду машинного перевода, основанного на правилах <br />
* Корпусный машинный перевод; при таком переводе для перевода новых предложений переводчик обращается к пулу из ранее переведенных предложений. <br />
<br />
Если кратко представить корпусный МП, то его можно разделить на две главные подгруппы: подгруппа, в основе которой лежат статистические данные, и подгруппа, основанная на примерах. Теоретически, основной принцип работы статистического машинного перевода заключается в следующем: берется набор ранее переведенных предложений (параллельный корпус) и подсчитывается какие символы совпадают наиболее часто. Всем символам, которые совпадают, присваивается признак вероятности. При переводе нового предложения переводчик рассматривает все слова (символы), которым присвоен признак вероятности, их вероятности комбинируется, делается несколько вариантов возможных переводов и затем выбирается вариант перевода с самой высокой степенью вероятности. Первые системы статистического МП учитывали только совпадение слов, но более новые системы могут учитывать совпадения последовательных рядов слов (фраз) и иерархических деревьев. <br />
<br />
В противовес этому, машинный перевод, основанный на анализе примеров, может быть назван переводом по аналогии. В нем также используется параллельные корпуса, но, вместо того чтобы обращаться к признакам вероятности слов, переводчик учится делать анализ на основе примеров. Например, если будет дана пара предложений (Девочке нравятся кошки. {{slc|ru}} → Кызга мышыктар жагат. {{slc|ky}} и Девочке нравятся слоны. → Кызга пилдер жагат.) переводчик может предложить следующий пример перевода (AДевочке нравятся X → Кызга X жагат). При переводе нового предложения, переводчик обращается и анализирует данные части предложения и заменяет их. <br />
<br />
Автоматическое применение большего пула переводных текстов (переводной памяти) к тексту может быть также названо видом машинного перевода с использованием корпуса. На самом деле, границы между статистическим машинным переводом и переводом, которые использует и анализирует примеры, достаточно размыты. И в том и в другом методе есть свои недостатки и преимущества. При использовании методов машинного перевода с использованием корпуса, переводной текст обычно выглядит более естественным, но может страдать сам смысл перевода, при использовании систем, которые используют метод, основанный на применении правил, перевод выглядит не таким гладким, но более точно передает смысл с языка оригинала.<br />
<br />
Системы, основанные на правилах, и системы, в которых используются корпус, могут быть объединены различными способами и представлять собой смешанную систему. Например, можно создать смешанную систему, где корпусный машинный перевод помогает найти эквиваленты, а затем применяется метод, основанный на правилах, в случае, если не найдено ни одного совпадающего образца.<br />
<br />
==Виды систем машинного перевода==<br />
<br />
===Прямой===<br />
Прямой, или пословный машинный перевод осуществляется следующим образом: из языка источника считывается по одному слову за один раз, затем слово ищется в двуязычном списке слов поверхностной формы (surface forms). Слова могут быть удалены или не учтены, и, могут быть переведены одним или несколькими словами. Грамматический анализ не проводится, так что даже такие простые ошибки, как соглашение в роде и числе между существительным и определением к нему останется в языке перевода на выходе.<br />
<br />
[[File:Session0 primer1.svg|center]]<br />
<br />
===Перенос===<br />
<br />
Машинный перевод, основанный на переносе, работает таким образом, что, сначала язык-источник преобразовывается в зависимую от языка промежуточную репрезентацию, а затем правила применяются уже к этой промежуточной репрезентации с целью преобразования структуры языка-источника в структуру языка перевода. Перевод осуществляется с этой репрезентации с использованием как двуязычных словарей, так и грамматических правил.<br />
<br />
[[File:Session0 primer2.svg|300px|right]]<br />
<br />
Различия могут быть в уровне абстракции этой промежуточной репрезентации. Можно выделить две большие группы: неглубокая передача и глубокая передача. При неглубоком переносе машинного перевода промежуточная репрезентация, как правило, основывается или на морфологии или на поверхностном синтаксисе. При глубокой передачи МП промежуточная репрезентация обычно включает в себя что-то похожее на дерево разбора или графическую структуру (см. изображение справа)<br />
<br />
Машинный перевод, основанный на переносе обычно работает следующим образом: сначала текст перевода анализируется и снимается морфологическая неоднозначность (а в случае глубокой передачи, синтаксическая) с целью получения промежуточной репрезентации исходного языка. Процесс переноса затем преобразует эту финальную репрезентацию (все еще на языке оригинала) в репрезентацию на том же уровне абстракции в языке перевода. Из репрезентации языка перевода, генерируется язык перевода.<br />
<br />
===Язык-посредник===<br />
<br />
В машинном переводе, основанном на переносе, правила написаны по принципу пара-на-пару, что делает их особенными для языковой пары. В подходе "язык-посредник", промежуточная репрезентация полностью независима от языка. Есть ряд преимуществ такого подхода, но также и недостатки. Преимущества в том, что есть возможность добавить новый язык в существующую систему МП, необходимо лишь написать анализатор и генератор для нового языка, а не правила переноса между новым языком и всеми существующими языками. Недостаток в том, что очень трудно определить язык-посредник, который может действительно представлять все нюансы всех естественных языков, и на практике, язык-посредник используются только для ограниченных областей перевода.<br />
<br />
==Проблемы машинного перевода==<br />
<br />
===Анализ===<br />
<br />
<center>'''Форма не полностью определяет содержание.'''</center><br />
<br />
Это также называется проблемой омонимии. Проблема состоит в том, что многие предложения на одном языке могут иметь более чем одну интерпретацию и эти интерпретации могут быть переведены по разному на разные языки. Рассмотрим следующий пример на финнском языке: <br />
<br />
* Tuovatko he uutisia Kreikasta? (Греция как предмет)<br />
** → Они приносили новости о Грецие? {{slc|ru}}<br />
** → Греция жөнүндө жаңылык алып келди. {{slc|ky}} <br />
* Tuovatko he uutisia Kreikasta? (Греция как источник)<br />
** → Они приносили новости из Греции? {{slc|ru}}<br />
** → Грециядан жаңылык алып келди. {{slc|ky}}<br />
<br />
Но иногда эта многозначность может быть сохранена, например, при переводе этой же фразы на другой тюркский язык:<br />
<br />
* Traían noticias de Grecia? (Греция как предмет и источник)<br />
** → Traían notícias de Grecía? {{slc|es}}<br />
<br />
===Синтез===<br />
<center>'''Содержание не полностью определяет форму.''' </center><br />
Проблема в том, что в данном языке не один способ передачи одного и того же значения. На пр. на чувашском языке: "сколько времени?"/"который час?"...<br />
<br />
:Эсир мӗнле пурӑнатӑр? <br />
:Мӗнле пурнӑҫсем?<br />
:Мӗнле халсем?<br />
:Мӗнле еҫсем?<br />
<br />
Все эти вопросы требуют одинакового ответа, но их частотность и место употребления могут различаться. <br />
В Apertium, на каждое введенное предложение, предлагается один вариант. От создателя системы зависит, какой вариант перевода будет предлагать система. Часто мы рекомендуем, чтобы это был наиболее литературный перевод, так как это снижает необходимость в правилах переноса.<br />
<br />
===Перенос===<br />
<center>'''Одно и тоже содержание по разному представлено в разных языках. '''</center><br />
<br />
В языках существуют различные способы передачи одного и того же значения. И эти значения обычно несовместимы между языками. Рассмотрите следующие примеры предложений, которые выражают одно и то же значение: <br />
<br />
* Мен (сууга) сүзгөндү жакшы көрөм.<br />
** Мен = {{sc|subject}}, сүзгөндү = {{sc|dir. object}}, жакшы.көрөм = {{sc|verb}}<br />
* Маған (суда) жүзу ұнайды.<br />
** Маған = {{sc|ind. object}}, жүзу = {{sc|subject}}, ұнайды = {{sc|verb}}.<br />
* Minä pidän uimisesta<br />
** Minä = {{sc|subject}}, pidän = {{sc|verb}}, uimisesta = {{sc|adverbial}}<br />
<br />
В системе Apertium, применяются правила, которые трансформируют структуру языка источника в структуру целевого языка, используя последовательность лексических форм в качестве промежуточной репрезентации. Более подробная информация в разделе 5: Основы структурного переноса.<br />
<br />
===Описание===<br />
<br />
<center>'''Как отразить информация о процессе перевода на языке компьютера.'''</center><br />
<br />
Последней проблемой является проблема описания. Чтобы создать систему машинного перевода, люди со знанием обоих языков должны систематизировать-кодировать свои знания в таком виде, чтобы компьютер смог их обработать.<br />
<br />
Так как перевод часто является бессознательным процессом, мы переводим не задумываясь о правилах, которыми мы пользуемся. Компьютеры не имеют такой способности, им нужны конкретные инструкции что именно нужно делать. Перевод не получится, если в компьютер не будет занесена информация по переводу.<br />
<br />
Но для многих предложений данная информация необязательна:<br />
<br />
Например, на славянских языках:<br />
* Апертиум - система машинного перевода. {{slc|ru}}<br />
* Apertium je sistem za mašinskoga prevođenja. {{slc|sh}}<br />
* Apertium je sistem za računalniško prevajanje. {{slc|sl}}<br />
<br />
И на тюркских языках:<br />
* Apertium bir makine çevirisi sistemidir. {{slc|tr}}<br />
* Апертиум - машиналык котормо системасы. {{slc|ky}}<br />
* Апертиум - машиналық аудару системасы. {{slc|kk}}<br />
* Апертиум - машина тәрҗемәләве системасы. {{slc|tt}}<br />
* Апертиум - машина тәржемәләүе системаһы. {{slc|ba}}<br />
<br />
и на уральских языках:<br />
* Apertium on konekäännösjärjestelmä. {{slc|fi}}<br />
<br />
==Практика==<br />
<br />
===Установка===<br />
<br />
Для руководства по установке Apertium, HFST и грамматике ограничений, смотрите раздаточный материал.<br />
<br />
===Применение===<br />
<br />
Чтобы пользоваться системой Apertium, сначала откройте терминал. Теперь зайдите в раздел языковой пары (через <code>cd</code>), которую хотите протестировать. <br />
<br />
<pre><br />
$ cd apertium-aa-bb<br />
</pre><br />
<br />
Вы можете протестировать ее при помощи следующей команды: <br />
<br />
<pre><br />
$ echo "Текст, который вы хотите перевести." | apertium -d . aa-bb<br />
</pre><br />
<br />
Например, из турецкого в киргизский:<br />
<br />
<pre><br />
$ echo "En güzel kız evime geldi." | apertium -d . tr-ky<br />
Эң жакшынакай кыз үйүмө келди. <br />
</pre><br />
<br />
===Структура раздела===<br />
<br />
Ниже приведена таблица, в которой дано описание основных файлов с данными, которые присутствуют в типичной языковой паре и ссылки на разделы в которых они описаны.<br />
<br />
<center><br />
{|class=wikitable<br />
! Файл !! Вид !! Описание !! Раздел(ы)<br />
|- <br />
| <code>apertium-tt-ba.tt.lexc</code> || Словарь || Словарь морфотактики татарского языка, для анализа и формирования || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|- <br />
| <code>apertium-tt-ba.tt.twol</code> || Фонологические правила || Морфонологические правила татарского языка || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.ba.lexc</code> || Словарь || Словарь морфотактики башкирского языка, для анализа и формирования || [[Машинный перевод для языков России/Раздел 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.ba.twol</code> || Фонологические правила || Морфонологические правила башкирского языка || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Раздел 2|2]]<br />
|-<br />
| <code>apertium-tt-ba.tt.rlx</code> || Правила расстановки тэгов || Грамматика ограничений татарского языка для снятия морфологической неоднозначности || [[Машинный перевод для языков России/Раздел 3|3]]<br />
|-<br />
| <code>apertium-tt-ba.ba.rlx</code> || Правила расстановки тэгов || Грамматика ограничений башкирского языка для снятия морфологической неоднозначности || [[Машинный перевод для языков России/Раздел 3|3]]<br />
|-<br />
| <code>apertium-tt-ba.tt-ba.dix</code> || Словарь || Татарско&mdash;башкирский двуязычный словарь для лексического переноса || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.tt.lrx</code> || Правила лексической выборки || Tatar lexical selection rules || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.ba.lrx</code> || Правила лексической выборки || Bashkir lexical selection rules || [[Машинный перевод для языков России/Раздел 4|4]]<br />
|-<br />
| <code>apertium-tt-ba.tt-ba.t1x</code> || Правила по переносу || Tatar→Bashkir first-level rule file, for structural transfer || [[Машинный перевод для языков России/Раздел 5|5]] [[Машинный перевод для языков России/Раздел 6|6]]<br />
|-<br />
|-<br />
| <code>apertium-tt-ba.ba-tt.t1x</code> || Правила по переносу || Bashkir→Tatar first-level rule file, for structural transfer || [[Машинный перевод для языков России/Раздел 5|5]] [[Машинный перевод для языков России/Раздел 6|6]]<br />
|-<br />
|}<br />
</center><br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 0]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_1&diff=31621Курсы машинного перевода для языков России/Раздел 12012-01-22T20:05:36Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
Данный раздел имеет две цели. Первая цель - дать теоретические представления о морфологии, как слова склоняются и как формируются новые слова. И вторая цель - показать, как происходит анализ и морфологический разбор в системе Apertium.<br />
<br />
==Tеория==<br />
<br />
Данный теоретический раздел разбит на три подраздела. В первом разделе речь пойдет о "морфотактике", т.е.как морфемы (части слова) возникают и затем соединяются. Во втором разделе более подробно будет говориться о "морфонологии", т.е. о том, какие изменения происходят в морфемах в результате их соединения. И в последнем подразделе мы расскажем о том, как с этими процессами работает компьютер. <br />
<br />
===Морфотактика===<br />
<br />
Морфотактика языка - это способ, которым морфемы в данном языке соединяются для формирования слов. Морфемы - наименьшие смыслообразующие части. Морфемы могут быть свободными или связанными. Свободные морфемы - это морфемы, которые могут встречаться сами по себе (например, '''''как''''', '''''один''''', '''''компьютер'''''), а связанные - которые должны быть связаны с другим словом (например, '''''-ность''''' (→ ''способность'', ''влажность'', ''личность'') '''''мо-''''' (→ ''мой'', ''моя'', ''моей'', и т.д.), '''''-ей''''' (→ ''моей'', ''семьей'', ''словарей'', и т.д.)). Одна морфема может иметь несколько алломорфов, которые обозначают одно и то же, но пишутся или произносятся по-разному. Например, дательные падеж (обозначает направление по отношению к предмету) в Чувашском языке имеет несколько алломорфов, употребление которых зависит от качества гласного в основе слова, после которой он употребляется. <br />
<br />
{|class="wikitable"<br />
|-<br />
|''aчама'' || ача·м·'''а''' || "к моему ребенку"<br />
|-<br />
|''ачамсене'' || ача·м·сен·'''е''' || "к моим детям"<br />
|-<br />
|''ӗҫӗме'' || ӗҫ·ӗм·'''е''' || "к моей работе"<br />
|-<br />
|''каҫмана'' || каҫма·'''на''' || "переходу"<br />
|}<br />
<br />
Дальше морфемы могут быть разделены на два подтипа, флективные и деривационные. В примерах, знак · указывает на деривационный стык, а » - на флективный стык. <br />
<br />
{|class="wikitable"<br />
|-<br />
|''ӗҫ'' || ӗҫ || "работ·а"<br />
|-<br />
|''ӗҫсем'' || ӗҫ·'''сем''' || "работ·ы"<br />
|-<br />
|''ĕçчен'' || ĕç»'''чен''' || "работ»ник"<br />
|-<br />
|''ĕçченсем'' || ĕç»'''чен'''·'''сем''' || "работ»ник·и"<br />
|-<br />
|''ӗҫле'' || ӗҫ»'''ле''' || "работа»ть"<br />
|-<br />
|''ӗҫле'' || ӗҫ»'''ле'''»'''тер''' || "заставить (кого-то) работать"<br />
|}<br />
====Флексия изменение формы слова)====<br />
<br />
Флективные морфемы являются носителями грамматических категорий, таких как число, падеж, время, и тд.,но не не изменяют категорию слова (часть речи), не изменяют основного семантического значения. Например в чувашском языке ''ӗҫ'' и ''ӗҫсем'' имеют одно и тоже основное семантическое значение, но если добавить деривационный аффикс ''-лЕ'', ''ӗҫле'', тогда значение изменится и станет "делать ӗҫ".<br />
<br />
Примерами флективных морфем являются аффиксы множественного числа ''-lar'', ''-сем'' и ''-и'' (''kitap·lar'' {{slc|tr}}, ''ача·сем'' {{slc|cv}}, ''книг·и'' {{slc|ru}}), и окончания падежей ''-ран'' (аблятив), ''-ті'' (транслатив), и ''-де'' (местный падеж): уй·ран {{slc|cv}}, кань·ті {{slc|kv}}, үй·де {{slc|kk}})<br />
<br />
При переводе часто именно форма слова подвергается изменениям, то есть, существуют правила, которые определяют как различные окончания слова изменяются при переводе.<br />
<br />
====Деривация====<br />
<br />
Деривационные морфемы в свою очередь изменяют основное семантическое значение слова, а также могут изменять категорию слова. В зависимости от языковой пары, деривационные морфемы обычно подвергаются меньшим изменениям, чем флективные, так как семантические изменения, вызываемые разными деривационными морфемами, более непредсказуемы.<br />
<br />
Следующие слова могут служить примерами деривации -LIK на кыргызском (ай "месяц" + LIK = айлык "месячная оплата"), -LA на кыргызском (ай "месяц" + LA = айла- "пройти месяц"), и -ja на финском (kirjoitta+ja "писать" + "действующее лицо" = "писатель").<br />
<br />
====Словосложение====<br />
<br />
Словосложение - это процесс, при котором два или более слов соединяются и образуют одно слово. Среди языков Европы, наиболее часто этот процесс заметен в германских языках и не индоевропейских языках.<br />
<br />
Примеры словосложений:<br />
<br />
* Tietokoneanimaatioelokuva = Tietokone+animaatio+elo+kuva {{slc|fi}}<br />
* Kontaktlinsenverträglichkeitstest = Kontakt+Linsen+Verträglichkeit(s)+Test {{slc|de}}<br />
* Еlmegyógyintézet = Elme+gyógy+intézet {{slc|hu}}<br />
* Giellamovttidanplána = Giella+movttidan+plána {{slc|se}}<br />
<br />
В языках, где словосложение очень развито, желательно, чтобы составные слова анализировались и автоматически переводились. Это позволяет сократить морфемный лексикон, а также работать с ранее не встречающимися формами.<br />
<br />
====Клитика====<br />
<br />
Клитика (а clitic) - это синтаксически независимое слово, которое фонологически ведет себя как аффикс другого слова. Для целей машинного перевода между письменными языками, нас особенно интересует аффиксы, которые пишутся орфографически либо вместе с другим словом, либо отдельно, но их форма обусловлена другим словом.<br />
<br />
В тюркских языках (в некоторых угорских языках) есть вопросительное слово (иногда его называют частица), в турецком mA, Kyrgyz ''-BI'', казахском ''MA'', финском ''-kO'', северо-саамском North Sámi ''-go''. Примеры: ''келесің бе?'' {{slc|kk}} ''келесиңби?'' {{slc|ky}} ''tuletko?'' {{slc|fi}} ''boađátgo?'' {{slc|se}} "ты идешь?". Данная фонема является клитикой (a clitic) потому что ее фонологическая форма зависит от предыдущего слова, но синтаксически (а иногда орфографически) она самостоятельна. <br />
<br />
В таджикском языке, есть вариант слова для союза "и" который, синтаксический ведет себя как союз, присоединяется к предыдущему слова, каким бы оно не было. Он может иметь форму ''-у'' (после согласных) и ''-ву'' (после гласных). Альтернативным примером выражения ''чой ва шароб'' "чай и вино ": будет ''чою шароб''.<br />
<br />
===Морфонология===<br />
<br />
Морфонология изучает фонологические изменения, которые происходят с морфемами при присоединении. Морфонология четко прослеживается в любом наборе морфем любого языка, но в данном разделе мы объясним этот процесс на примере суффикса множественного числа в татарском языке, -/LAr/. <br />
<br />
Суффикс имеет четыре формы, выбор которых зависит от существительного, к которому он присоединяется: -лар, -ләр, -нар, -нәр. Например, алма·лар "яблоки", тел·ләр "языки", урам+нар "улицы", көн·нәр "дни". В данных примерах, первый согласный это /л/ или /н/ в зависимости от звука, на который заканчивается слово; /н/ если суффикс следует непосредственно после носового согласного (м, н, ң), a /л/ после других звуков. Гласный /A/ изменяется в зависимости от последней гласной слова: после гласных заднего ряда "back/твёрдые гласные" (а, о, ы, у) это /а/, а после гласных переднего ряда "front/мягкие гласные" (ә, э, ө, и, ү) это /ә/.<br />
<br />
===Компьютерные репрезентации===<br />
<br />
Компьютерные морфологические модели обычно пользуются инструментами под названием "конечные автоматы" (finite-state transducers) для создания морфотактики и морфонологии. Конечный автомат немного похож на схему, в которой в зависимости от части слова которую вы загружаете, вы уже решаете какая у него флексия или деривация. Но в отличии от обыкновенной схемы, решение может вести к множеству заключений! <br />
<br />
[[Image:Bashkir lexc.png|800px|center|thumb|Конечный автомат, моделирующий основные категории морфотактики трех имен существительных на башкирском языке (множественное число, принадлежность, падеж). Заметьте, как используются архифонемы (буквы в <code>{</code> и <code>}</code>) для репрезентации букв, которые могут изменяться согласно правилам фонологии.]]<br />
<br />
Вышеупомянутый автомат, в более расширенном виде сложен для полного ознакомления, но, если мы удалим категорию принадлежности, нам будет проще более детально посмотреть как он работает. <br />
<br />
[[File:Bashkir mektep.png|800px|center|thumb|Конечный автомат, моделирующий падежное окончание и окончание множественного числа башкирского слова ''мәктәп'' "школа".]]<br />
<br />
Из нашего примера башкирское слово ''мәктәп'' "школа" изменяется по числам (единственное, множественное) и падежам (именительный, родительный, дательный, винительный, местный и творительный). Если посмотреть на вышеуказанный автомат, каждая кривая на графике имеет обозначение (пометку). Она состоит из двух частей, левая часть (слева от <code>:</code>) и правая (справа от <code>:</code>). При чтении слева направо мы можем провести анализ слова. <br />
<br />
<div style="float: right"><br />
{|class=wikitable<br />
! !! Ед.число !! Множественное<br />
|-<br />
| '''Именительный''' || мәктәп || мәктәптәр<br />
|-<br />
| '''Винительный''' || мәктәпте || мәктәптәрҙе<br />
|-<br />
| '''Родительный''' || мәктәптең || мәктәптәрҙең<br />
|-<br />
| '''Местный''' || мәктәптә || мәктәптәрҙә<br />
|-<br />
| '''Творительный''' || мәктәптән || мәктәптәрҙән<br />
|-<br />
| '''Дательный''' || мәктәпкә || мәктәптәргә<br />
|-<br />
|}<br />
</div><br />
<br />
Вы можете попробовать проделать такую же работу со словом из таблицы склонений справа. Например, ''мәктәптәрҙән'' "из школ". Нам следует получить следующий анализ <code>мәктәп<n><pl><abl></code>. Процесс выглядит примерно следующим образом: <br />
<br />
* read <code>м</code>, write <code>м</code> (input: <code>м</code>, оutput: <code>м</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мә</code>, оutput: <code>мә</code>)<br />
* read <code>к</code>, write <code>к</code> (input: <code>мәк</code>, оutput: <code>мәк</code>)<br />
* read <code>т</code>, write <code>т</code> (input: <code>мәкт</code>, оutput: <code>мәкт</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мәктә</code>, оutput: <code>мәктә</code>)<br />
* read <code>п</code>, write <code>п</code> (input: <code>мәктәп</code>, оutput: <code>мәктәп</code>)<br />
* read <code>0</code>, write {{tag|n}} (input: <code>мәктәп0</code>, оutput: <code>мәктәп</code>{{tag|n}})<br />
* read <code>т</code>, write {{tag|pl}} (input: <code>мәктәп0т</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}})<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}0)<br />
* read <code>p</code>, write <code>0</code> (input: <code>мәктәп0тәp</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00)<br />
* read <code>0</code>, write {{tag|abl}} (input: <code>мәктәп0тәp0</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}})<br />
* read <code>ҙ</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙ</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>0</code>)<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>00</code>)<br />
* read <code>н</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙән</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>000</code>)<br />
<br />
Заметьте, что загрузка и написание 0 означает ничего не загружать и не записывать.<br />
<br />
==Практическая часть==<br />
<br />
Для практической части есть два раздаточных материала, <br />
<br />
* [[Как использовать HFST, чтобы разработать новый морфологический анализатор]]<br />
* [[Как использовать lttoolbox, чтобы разработать новый морфологический анализатор]]<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Kenneth R. Beesley and Lauri Karttunen (2003) ''Конечная морфология / Finite-State Morphology'' (CSLI Publications)<br />
* Richard Sproat (1992) ''Морфология и компьютерные вычисления / Morphology and Computation'' (MIT Press)<br />
* Francis M. Tyers (2007) "[[Руководство по созданию новой языковой пары]]" (Apertium Wiki)<br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 1]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%BD%D0%B0%D1%87%D0%B0%D1%82%D1%8C_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83_%D1%81_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%D0%BC%D0%B8_%D0%BF%D0%BE_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D1%83_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B8&diff=31541Как начать работу с правилами по выбору лексики2012-01-21T18:09:58Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
В данном разделе мы хотим рассказать о том, как начать создавать правила для [[лексической выборки]]. В нем будут даны несколько подходов, с примерами правил в формате [[выбор лексики на основе ограничения]].<br />
<br />
== Первый подход ==<br />
<br />
=== Выберите свои слова ===<br />
<br />
Прежде чем начать создавать правила лексической выборки, вам сначала нужно выбрать слово в языке-источнике (например, английский), которое на языке перевода (например, русский) будет иметь сразу несколько вариантов перевода. Например<br />
<br />
* argument → спор<br />
* argument → довод<br />
* argument → аргумент<br />
<br />
=== Подумайте о контексте ===<br />
<br />
Очень часто слова, которые окружают искомое слово помогают выбрать вариант перевода, например, глагол может подсказать как лучше перевести существительное, или существительное помогает понять как перевести прилагательное.<br />
<br />
Например, если это выражение "to have an argument", то здесь вероятно слово argument будет переводиться как "спор" ("иметь спор"), тогда как если мы возьмем выражение "to accept the argument" , то здесь больше подойдет вариант "довод" ("принять довод"). <br />
<br />
=== Подумайте о синонимах и антонимах ===<br />
<br />
Если у вас есть правило, вам нужно сделать его более общим, для этого нужно придумать синонимы и антонимы для слов которые его могут встречаться в контексте с ним. Например, у вас такое правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="positive" tags="*"/><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="заряд" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
Легко подумать что антоним для "положительный" это "отрицательный", и тоже добавить это слово:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="positive" tags="*"/><br />
<match lemma="negative" tags="*"/><br />
</or><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="заряд" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
=== Подумайте о семантический связанных словах ===<br />
<br />
Если у вас есть правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="wind"/><br />
<match lemma="power" tags="n.*"><br />
<select lemma="энергия" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
Возможно вы считаете что перевод слова "power" как "энергия" (вместо шаблонного заданного перевода ''власть'') может встречаться чаще, чем только после слов "ветер", например, "solar power" ''солнечная энергия'', "wave power" ''энергия морских волн''. Тогда нужно, например:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="wind"/><br />
<match lemma="solar"/><br />
<match lemma="hydro"/><br />
<match lemma="geothermal"/><br />
<match lemma="tidal"/><br />
</or><br />
<match lemma="power" tags="n.*"><br />
<select lemma="энергия" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
И размышления об этом возможно приведут вас к созданию следующих правил , например "electrical power" вариант перевода не ''электрическая мощность'', а ''электрическая энергия'' (или еще лучше ''электроэнергия'').<br />
<br />
=== Посмотрите на согласование concordance ===<br />
<br />
Согласование concordance (или "ключевое слово в контексте") это набор предложений, которые сцентрированы на одном слове is a set of sentences where they are centred on a single word (иногда это слово называют "ключевым словом"). Для соглсования мы можете воспользоваться To make a concordance you can use a concordancer (e.g. [http://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium-tools/apertium-concord apertium-concord]).<br />
<br />
Посмотрите на пример из [[европарламента]]:<br />
<br />
<pre><br />
represent, to the President and to the Governor of Texas, Mr Bush, who has the power to order a stay<br />
We should do everything within our We should do everything within our power to force the<br />
On the market, the balance of On the market, the balance of power between supply and<br />
The scandalous concentration of The scandalous concentration of power in sectors of strategic <br />
fact, retaining not only the The Commission is, in fact, retaining not only the power<br />
to your questions about the nuclear Turning to your questions about the nuclear power stations in<br />
financing required for improving the degree of efficiency and safety of nuclear power stations in certain <br />
have the Mr President, it is clear that the European Union does not have the power to intervene in the<br />
the balance of I therefore feel we must carefully consider the balance of power that we are in<br />
the sea's Having spent a lot of time at sea myself I am well aware of the sea's power and destructive force, <br />
The Commission is following with interest the planned construction of a nuclear power plant in Akkuyu, Turkey<br />
siting, construction, commissioning, operation and decommissioning of nuclear power plants in Turkey rests<br />
a serious risk that some idiot will decide that the new geopolitical balance of power in the Caucasus calls<br />
in the development of that nuclear If we see in the development of that nuclear power<br />
build a nuclear If the conclusion is that Turkey is planning to build a nuclear power plant that does not<br />
none of the upheaval would have been caused had we not acted with parliamentary power to press for changes<br />
yet the police are being forced into a position where they will not have the power to resist the terrorist<br />
right to interfere in the formation of a government even though it has assumed power on the basis of<br />
unusual about what is happening in Austria: there has been a changeover of power following democratic <br />
for this Intergovernmental Conference to score a hat trick; that of the power to act, democratic <br />
course, we need to create the At the same time of course, we need to create the power to act in order<br />
The European Union must also have the The European Union must also have the power to act<br />
<br />
...<br />
</pre><br />
<br />
Если вы сами делаете согласование concordance, особенно интересны следующие выражения: "nuclear power", "nuclear power station", "nuclear power plant", "parliamentary power", "sea's power", "balance of power", "concentration of power", "power to act", "motive power", "abuse of power", "decision-making power", "power supply", "come into power", "economic power", "power structures", "combined power and heat", "political power".<br />
<br />
=== Используйте параллельный корпус ===<br />
<br />
Вы можете увидеть какой контекст используется в одном переводе, а в другом нет, если использовать [[параллельный корпус]]. (Вот пример с английским и испанским из корпуса Европарламента, но вы можете использовать, например [http://www.ruscorpora.ru/ Национальный корпус русского языка])<br />
<br />
<pre><br />
$ paste europarl-v6.es-en.en europarl-v6.es-en.es | grep ' power .* potencia '<br />
Since the Union as a whole is a world-class fishing '''power''' and one of the largest markets for fish produce, ...<br />
Por ser la Unión en conjunto una '''potencia''' pesquera en el nivel mundial y uno de los mayores mercados de productos pesqueros, ...<br />
</pre><br />
<br />
== Второй подход ==<br />
<br />
Второй подход - это создать правила, которые исправляют ошибки перевода, с которыми вы встречаетесь. Чтобы это попробовать, возьмите большой текст (например, статью), и прогоните ее через переводчик.<br />
<br />
Например, мы берем [http://www.guardian.co.uk/politics/2011/dec/07/coalition-government-first-commons-defeat this article], перевод достаточно плохой, но есть пару мест, где лексическая выборка могла бы улучшить картину.<br />
<br />
:MPs who had '''spent''' almost six hours debating the state of the UK economy voted by 213 to 79, a majority of 134.<br />
:Депутаты, которые израсходовали почти шесть часов обсуждали состояние экономики Великобритании проголосовали 213 до 79, большинство из 134.<br />
<br />
В английском языке, "spend" имеет несколько значений, среди которых "to pass time" ''проводить'' and "to pay money" ''расходовать''. В данном случае, мы видим что контекст требует вариант перевода ''проводить'' потому что речи идет о проведении времени. Итак, мы можем создать следующее правило:<br />
<br />
<pre><br />
<rule> <!-- MPs spent almost six hours debating... --><br />
<match lemma="spend" tags="vblex.*"><br />
<select lemma="проводить" tags="vblex.*"/><br />
</match><br />
<match/><br />
<match/><br />
<or><br />
<match lemma="minute"/><br />
<match lemma="hour"/><br />
<match lemma="year"/><br />
</or><br />
</rule><br />
</pre><br />
<br />
== Смотрите также ==<br />
* [[Constraint-based lexical selection module]]<br />
<br />
[[Category:Документация на русском языке]]<br />
[[Category:Lexical selection]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=How_to_get_started_with_lexical_selection_rules&diff=31540How to get started with lexical selection rules2012-01-21T18:03:16Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
This page is about how to start writing rules for [[lexical selection]]. It documents a few approaches, with example rules in the [[constraint-based lexical selection]] format.<br />
<br />
== First approach ==<br />
<br />
=== Choose your words ===<br />
<br />
Before you start making lexical selection rules, you first want to choose a word in your source language (e.g. English) which has more than one translation in your target language (e.g. Spanish). For example<br />
<br />
* argument → discusión<br />
* argument → polémica<br />
* argument → argumento<br />
<br />
=== Think about context ===<br />
<br />
The words around our word often help us decide how to translate it, for example, a verb might inform us of how to translate a noun, or a noun might inform us of how to translate an adjective.<br />
<br />
If we say "to have an argument", then it probably means "discusión", whereas if we say "to accept the argument", then you probably want to translate it as "argumento". <br />
<br />
=== Think about synonyms and antonyms ===<br />
<br />
Once you have a rule, one way of making it more general is to think of synonyms and antonyms for the context words. For example, if you have the rule:<br />
<br />
<pre><br />
<rule><br />
<match lemma="positive" tags="*"/><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="carga" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
You could quite easily think that the antonym of "positive" is "negative", and add that too:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="positive" tags="*"/><br />
<match lemma="negative" tags="*"/><br />
</or><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="carga" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
=== Think about semantically related words ===<br />
<br />
If you have the rule:<br />
<br />
<pre><br />
<rule><br />
<match lemma="wind"/><br />
<match lemma="power" tags="n.*"><br />
<select lemma="energía" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
You might think that the translation of "power" as "energía" (instead of the default translation ''poder'') can happen more times than only after "wind", for example, "solar power" ''energía solar'', "wave power" ''energía olamotriz''. This might give, for example:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="wind"/><br />
<match lemma="solar"/><br />
<match lemma="hydro"/><br />
<match lemma="geothermal"/><br />
<match lemma="tidal"/><br />
</or><br />
<match lemma="power" tags="n.*"><br />
<select lemma="energía" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
And even thinking about these can bring you to other rules, for example "electrical power" is not ''energía eléctrica'', it's ''potencia eléctrica''.<br />
<br />
=== Look at a concordance ===<br />
<br />
A concordance (or "key word in context") is a set of sentences where they are centred on a single word (sometimes called the "key word"). To make a concordance you can use a concordancer (e.g. [http://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium-tools/apertium-concord apertium-concord]).<br />
<br />
Here is an example from [[EuroParl]]:<br />
<br />
<pre><br />
represent, to the President and to the Governor of Texas, Mr Bush, who has the power to order a stay<br />
We should do everything within our We should do everything within our power to force the<br />
On the market, the balance of On the market, the balance of power between supply and<br />
The scandalous concentration of The scandalous concentration of power in sectors of strategic <br />
fact, retaining not only the The Commission is, in fact, retaining not only the power<br />
to your questions about the nuclear Turning to your questions about the nuclear power stations in<br />
financing required for improving the degree of efficiency and safety of nuclear power stations in certain <br />
have the Mr President, it is clear that the European Union does not have the power to intervene in the<br />
the balance of I therefore feel we must carefully consider the balance of power that we are in<br />
the sea's Having spent a lot of time at sea myself I am well aware of the sea's power and destructive force, <br />
The Commission is following with interest the planned construction of a nuclear power plant in Akkuyu, Turkey<br />
siting, construction, commissioning, operation and decommissioning of nuclear power plants in Turkey rests<br />
a serious risk that some idiot will decide that the new geopolitical balance of power in the Caucasus calls<br />
in the development of that nuclear If we see in the development of that nuclear power<br />
build a nuclear If the conclusion is that Turkey is planning to build a nuclear power plant that does not<br />
none of the upheaval would have been caused had we not acted with parliamentary power to press for changes<br />
yet the police are being forced into a position where they will not have the power to resist the terrorist<br />
right to interfere in the formation of a government even though it has assumed power on the basis of<br />
unusual about what is happening in Austria: there has been a changeover of power following democratic <br />
for this Intergovernmental Conference to score a hat trick; that of the power to act, democratic <br />
course, we need to create the At the same time of course, we need to create the power to act in order<br />
The European Union must also have the The European Union must also have the power to act<br />
<br />
...<br />
</pre><br />
<br />
If you do the concordance yourself, particularly interesting are the sequences: "nuclear power", "nuclear power station", "nuclear power plant", "parliamentary power", "sea's power", "balance of power", "concentration of power", "power to act", "motive power", "abuse of power", "decision-making power", "power supply", "come into power", "economic power", "power structures", "combined power and heat", "political power".<br />
<br />
=== Try a parallel corpus ===<br />
<br />
You can look at which contexts are used in one translation, but not another by looking at a [[parallel corpus]].<br />
<br />
<pre><br />
$ paste europarl-v6.es-en.en europarl-v6.es-en.es | grep ' power .* potencia '<br />
Since the Union as a whole is a world-class fishing '''power''' and one of the largest markets for fish produce, ...<br />
Por ser la Unión en conjunto una '''potencia''' pesquera en el nivel mundial y uno de los mayores mercados de productos pesqueros, ...<br />
</pre><br />
<br />
== Secon approach ==<br />
<br />
Another approach is to write rules to fix translation errors that you come across. In order to try this out, take a big text (for example a newspaper article), and run it through the translator.<br />
<br />
For example, if we take [http://www.guardian.co.uk/politics/2011/dec/07/coalition-government-first-commons-defeat this article], the translation is pretty bad, but there are some places where lexical selection could improve the picture.<br />
<br />
<blockquote><br />
MPs who had '''spent''' almost six hours debating the state of the UK economy voted by 213 to 79, a majority of 134.<br />
<br />
MPs Quién había '''gastado''' casi seis horas debatiendo el estado de la economía de UK votada por 213 a 79, una mayoría de 134.<br />
</blockquote><br />
<br />
In English, "spend" can have a number of meanings, among them "to pass time" ''pasar'' and "to pay money" ''gastar''. In this case, we see that the context demands the translation of ''pasar'' because it is talking about time spent. So, we might make a rule like the following:<br />
<br />
<pre><br />
<rule> <!-- MPs spent almost six hours debating... --><br />
<match lemma="spend" tags="vblex.*"><br />
<select lemma="pasar" tags="vblex.*"/><br />
</match><br />
<match/><br />
<match/><br />
<or><br />
<match lemma="minute"/><br />
<match lemma="hour"/><br />
<match lemma="year"/><br />
</or><br />
</rule><br />
</pre><br />
<br />
== See also ==<br />
* [[Constraint-based lexical selection module]]<br />
<br />
[[Category:Documentation]]<br />
[[Category:Lexical selection]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%BD%D0%B0%D1%87%D0%B0%D1%82%D1%8C_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83_%D1%81_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%D0%BC%D0%B8_%D0%BF%D0%BE_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D1%83_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B8&diff=31536Как начать работу с правилами по выбору лексики2012-01-21T10:16:04Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
В данном разделе мы хотим рассказать о том, как начать создавать правила для [[лексической выборки]]. В нем будут даны несколько подходов, с примерами правил в формате [[выбор лексики на основе ограничения]].<br />
<br />
== Первый подход ==<br />
<br />
=== Выберите свои слова ===<br />
<br />
Прежде чем начать создавать правила лексической выборки, вам сначала нужно выбрать слово в языке-источнике (например, английский), которое на языке перевода (например, русский) будет иметь сразу несколько вариантов перевода. Например<br />
<br />
* argument → спор<br />
* argument → довод<br />
* argument → аргумент<br />
<br />
=== Подумайте о контексте ===<br />
<br />
Очень часто слова, которые окружают искомое слово помогают выбрать вариант перевода, например, глагол может подсказать как лучше перевести существительное, или существительное помогает понять как перевести прилагательное.<br />
<br />
Например, если это выражение "to have an argument", то здесь вероятно слово argument будет переводиться как "спор" ("иметь спор"), тогда как если мы возьмем выражение "to accept the argument" , то здесь больше подойдет вариант "довод" ("принять довод"). <br />
<br />
=== Подумайте о синонимах и антонимах ===<br />
<br />
Если у вас есть правило, вам нужно сделать его более общим, для этого нужно придумать синонимы и антонимы для слов которые его могут встречаться в контексте с ним. Например, у вас такое правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="positive" tags="*"/><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="заряд" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
Легко подумать что антоним для "положительный" это "отрицательный", и тоже добавить это слово:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="positive" tags="*"/><br />
<match lemma="negative" tags="*"/><br />
</or><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="заряд" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
=== Подумайте о семантический связанных словах ===<br />
<br />
Если у вас есть правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="wind"/><br />
<match lemma="power" tags="n.*"><br />
<select lemma="энергия" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
Возможно вы считаете что перевод слова "power" как "энергия" (вместо шаблонного заданного перевода ''власть'') может встречаться чаще, чем только после слов "ветер", например, "solar power" ''солнечная энергия'', "wave power" ''энергия морских волн''. Тогда нужно, например:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="wind"/><br />
<match lemma="solar"/><br />
<match lemma="hydro"/><br />
<match lemma="geothermal"/><br />
<match lemma="tidal"/><br />
</or><br />
<match lemma="power" tags="n.*"><br />
<select lemma="энергия" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
И размышления об этом возможно приведут вас к созданию следующих правил , например "electrical power" вариант перевода не ''электрическая мощность'', а ''электрическая энергия'' (или еще лучше ''электроэнергия'').<br />
<br />
=== Посмотрите на согласование concordance ===<br />
<br />
Согласование concordance (или "ключевое слово в контексте") это набор предложений, которые сцентрированы на одном слове is a set of sentences where they are centred on a single word (иногда это слово называют "ключевым словом"). Для соглсования мы можете воспользоваться To make a concordance you can use a concordancer (e.g. [http://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium-tools/apertium-concord apertium-concord]).<br />
<br />
Посмотрите на пример из [[европарламента]]:<br />
<br />
<pre><br />
represent, to the President and to the Governor of Texas, Mr Bush, who has the power to order a stay<br />
We should do everything within our We should do everything within our power to force the<br />
On the market, the balance of On the market, the balance of power between supply and<br />
The scandalous concentration of The scandalous concentration of power in sectors of strategic <br />
fact, retaining not only the The Commission is, in fact, retaining not only the power<br />
to your questions about the nuclear Turning to your questions about the nuclear power stations in<br />
financing required for improving the degree of efficiency and safety of nuclear power stations in certain <br />
have the Mr President, it is clear that the European Union does not have the power to intervene in the<br />
the balance of I therefore feel we must carefully consider the balance of power that we are in<br />
the sea's Having spent a lot of time at sea myself I am well aware of the sea's power and destructive force, <br />
The Commission is following with interest the planned construction of a nuclear power plant in Akkuyu, Turkey<br />
siting, construction, commissioning, operation and decommissioning of nuclear power plants in Turkey rests<br />
a serious risk that some idiot will decide that the new geopolitical balance of power in the Caucasus calls<br />
in the development of that nuclear If we see in the development of that nuclear power<br />
build a nuclear If the conclusion is that Turkey is planning to build a nuclear power plant that does not<br />
none of the upheaval would have been caused had we not acted with parliamentary power to press for changes<br />
yet the police are being forced into a position where they will not have the power to resist the terrorist<br />
right to interfere in the formation of a government even though it has assumed power on the basis of<br />
unusual about what is happening in Austria: there has been a changeover of power following democratic <br />
for this Intergovernmental Conference to score a hat trick; that of the power to act, democratic <br />
course, we need to create the At the same time of course, we need to create the power to act in order<br />
The European Union must also have the The European Union must also have the power to act<br />
<br />
...<br />
</pre><br />
<br />
Если вы сами делаете согласование concordance, особенно интересны следующие выражения: "nuclear power", "nuclear power station", "nuclear power plant", "parliamentary power", "sea's power", "balance of power", "concentration of power", "power to act", "motive power", "abuse of power", "decision-making power", "power supply", "come into power", "economic power", "power structures", "combined power and heat", "political power".<br />
<br />
=== Try a parallel corpus ===<br />
<br />
You can look at which contexts are used in one translation, but not another by looking at a [[parallel corpus]]. (Here the example uses English and Spanish from the Europarliament corpus, but you may use e.g. the [http://www.ruscorpora.ru/ Национальный корпус русского языка])<br />
<br />
<pre><br />
$ paste europarl-v6.es-en.en europarl-v6.es-en.es | grep ' power .* potencia '<br />
Since the Union as a whole is a world-class fishing '''power''' and one of the largest markets for fish produce, ...<br />
Por ser la Unión en conjunto una '''potencia''' pesquera en el nivel mundial y uno de los mayores mercados de productos pesqueros, ...<br />
</pre><br />
<br />
== Second approach ==<br />
<br />
Another approach is to write rules to fix translation errors that you come across. In order to try this out, take a big text (for example a newspaper article), and run it through the translator.<br />
<br />
For example, if we take [http://www.guardian.co.uk/politics/2011/dec/07/coalition-government-first-commons-defeat this article], the translation is pretty bad, but there are some places where lexical selection could improve the picture.<br />
<br />
:MPs who had '''spent''' almost six hours debating the state of the UK economy voted by 213 to 79, a majority of 134.<br />
:Депутаты, которые израсходовали почти шесть часов обсуждали состояние экономики Великобритании проголосовали 213 до 79, большинство из 134.<br />
<br />
In English, "spend" can have a number of meanings, among them "to pass time" ''проводить'' and "to pay money" ''расходовать''. In this case, we see that the context demands the translation of ''проводить'' because it is talking about time spent. So, we might make a rule like the following:<br />
<br />
<pre><br />
<rule> <!-- MPs spent almost six hours debating... --><br />
<match lemma="spend" tags="vblex.*"><br />
<select lemma="проводить" tags="vblex.*"/><br />
</match><br />
<match/><br />
<match/><br />
<or><br />
<match lemma="minute"/><br />
<match lemma="hour"/><br />
<match lemma="year"/><br />
</or><br />
</rule><br />
</pre><br />
<br />
== See also ==<br />
* [[Constraint-based lexical selection module]]<br />
<br />
[[Category:Документация на русском языке]]<br />
[[Category:Lexical selection]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%BD%D0%B0%D1%87%D0%B0%D1%82%D1%8C_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83_%D1%81_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0%D0%BC%D0%B8_%D0%BF%D0%BE_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D1%83_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B8&diff=31535Как начать работу с правилами по выбору лексики2012-01-21T09:51:34Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
В данном разделе мы хотим рассказать о том, как начать создавать правила для [[лексической выборки]]. В нем будут даны несколько подходов, с примерами правил в формате [[выбор лексики на основе ограничения]].<br />
<br />
== Первый подход ==<br />
<br />
=== Выберите свои слова ===<br />
<br />
Прежде чем начать создавать правила лексической выборки, вам сначала нужно выбрать слово в языке-источнике (например, английский), которое на языке перевода (например, русский) будет иметь сразу несколько вариантов перевода. Например<br />
<br />
* argument → спор<br />
* argument → довод<br />
* argument → аргумент<br />
<br />
=== Подумайте о контексте ===<br />
<br />
Очень часто слова, которые окружают искомое слово помогают выбрать вариант перевода, например, глагол может подсказать как лучше перевести существительное, или существительное помогает понять как перевести прилагательное.<br />
<br />
If we say "to have an argument", then it probably means "спор", whereas if we say "to accept the argument", then you probably want to translate it as "довод". <br />
<br />
=== Think about synonyms and antonyms ===<br />
<br />
Once you have a rule, one way of making it more general is to think of synonyms and antonyms for the context words. For example, if you have the rule:<br />
<br />
<pre><br />
<rule><br />
<match lemma="positive" tags="*"/><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="заряд" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
You could quite easily think that the antonym of "positive" is "negative", and add that too:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="positive" tags="*"/><br />
<match lemma="negative" tags="*"/><br />
</or><br />
<match lemma="charge" tags="n.*"><br />
<select lemma="заряд" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
=== Think about semantically related words ===<br />
<br />
If you have the rule:<br />
<br />
<pre><br />
<rule><br />
<match lemma="wind"/><br />
<match lemma="power" tags="n.*"><br />
<select lemma="энергия" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
You might think that the translation of "power" as "энергия" (instead of the default translation ''власть'') can happen more times than only after "wind", for example, "solar power" ''??? энергия'', "wave power" ''??? энергия''. This might give, for example:<br />
<br />
<pre><br />
<rule><br />
<or><br />
<match lemma="wind"/><br />
<match lemma="solar"/><br />
<match lemma="hydro"/><br />
<match lemma="geothermal"/><br />
<match lemma="tidal"/><br />
</or><br />
<match lemma="power" tags="n.*"><br />
<select lemma="энергия" tags="n.*"/><br />
</match><br />
</rule><br />
</pre><br />
<br />
And even thinking about these can bring you to other rules, for example "electrical power" is not ''электрическая энергия'', it's ''электирическая мощность'' (or better ''электроенергия'').<br />
<br />
=== Look at a concordance ===<br />
<br />
A concordance (or "key word in context") is a set of sentences where they are centred on a single word (sometimes called the "key word"). To make a concordance you can use a concordancer (e.g. [http://apertium.svn.sourceforge.net/svnroot/apertium/trunk/apertium-tools/apertium-concord apertium-concord]).<br />
<br />
Here is an example from [[EuroParl]]:<br />
<br />
<pre><br />
represent, to the President and to the Governor of Texas, Mr Bush, who has the power to order a stay<br />
We should do everything within our We should do everything within our power to force the<br />
On the market, the balance of On the market, the balance of power between supply and<br />
The scandalous concentration of The scandalous concentration of power in sectors of strategic <br />
fact, retaining not only the The Commission is, in fact, retaining not only the power<br />
to your questions about the nuclear Turning to your questions about the nuclear power stations in<br />
financing required for improving the degree of efficiency and safety of nuclear power stations in certain <br />
have the Mr President, it is clear that the European Union does not have the power to intervene in the<br />
the balance of I therefore feel we must carefully consider the balance of power that we are in<br />
the sea's Having spent a lot of time at sea myself I am well aware of the sea's power and destructive force, <br />
The Commission is following with interest the planned construction of a nuclear power plant in Akkuyu, Turkey<br />
siting, construction, commissioning, operation and decommissioning of nuclear power plants in Turkey rests<br />
a serious risk that some idiot will decide that the new geopolitical balance of power in the Caucasus calls<br />
in the development of that nuclear If we see in the development of that nuclear power<br />
build a nuclear If the conclusion is that Turkey is planning to build a nuclear power plant that does not<br />
none of the upheaval would have been caused had we not acted with parliamentary power to press for changes<br />
yet the police are being forced into a position where they will not have the power to resist the terrorist<br />
right to interfere in the formation of a government even though it has assumed power on the basis of<br />
unusual about what is happening in Austria: there has been a changeover of power following democratic <br />
for this Intergovernmental Conference to score a hat trick; that of the power to act, democratic <br />
course, we need to create the At the same time of course, we need to create the power to act in order<br />
The European Union must also have the The European Union must also have the power to act<br />
<br />
...<br />
</pre><br />
<br />
If you do the concordance yourself, particularly interesting are the sequences: "nuclear power", "nuclear power station", "nuclear power plant", "parliamentary power", "sea's power", "balance of power", "concentration of power", "power to act", "motive power", "abuse of power", "decision-making power", "power supply", "come into power", "economic power", "power structures", "combined power and heat", "political power".<br />
<br />
=== Try a parallel corpus ===<br />
<br />
You can look at which contexts are used in one translation, but not another by looking at a [[parallel corpus]]. (Here the example uses English and Spanish from the Europarliament corpus, but you may use e.g. the [http://www.ruscorpora.ru/ Национальный корпус русского языка])<br />
<br />
<pre><br />
$ paste europarl-v6.es-en.en europarl-v6.es-en.es | grep ' power .* potencia '<br />
Since the Union as a whole is a world-class fishing '''power''' and one of the largest markets for fish produce, ...<br />
Por ser la Unión en conjunto una '''potencia''' pesquera en el nivel mundial y uno de los mayores mercados de productos pesqueros, ...<br />
</pre><br />
<br />
== Second approach ==<br />
<br />
Another approach is to write rules to fix translation errors that you come across. In order to try this out, take a big text (for example a newspaper article), and run it through the translator.<br />
<br />
For example, if we take [http://www.guardian.co.uk/politics/2011/dec/07/coalition-government-first-commons-defeat this article], the translation is pretty bad, but there are some places where lexical selection could improve the picture.<br />
<br />
:MPs who had '''spent''' almost six hours debating the state of the UK economy voted by 213 to 79, a majority of 134.<br />
:Депутаты, которые израсходовали почти шесть часов обсуждали состояние экономики Великобритании проголосовали 213 до 79, большинство из 134.<br />
<br />
In English, "spend" can have a number of meanings, among them "to pass time" ''проводить'' and "to pay money" ''расходовать''. In this case, we see that the context demands the translation of ''проводить'' because it is talking about time spent. So, we might make a rule like the following:<br />
<br />
<pre><br />
<rule> <!-- MPs spent almost six hours debating... --><br />
<match lemma="spend" tags="vblex.*"><br />
<select lemma="проводить" tags="vblex.*"/><br />
</match><br />
<match/><br />
<match/><br />
<or><br />
<match lemma="minute"/><br />
<match lemma="hour"/><br />
<match lemma="year"/><br />
</or><br />
</rule><br />
</pre><br />
<br />
== See also ==<br />
* [[Constraint-based lexical selection module]]<br />
<br />
[[Category:Документация на русском языке]]<br />
[[Category:Lexical selection]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31510Курсы машинного перевода для языков России/Раздел 82012-01-19T08:25:18Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительное количество систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, детальное планирование и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из практики ==<br />
<br />
Следующие примеры показывают 4 успешных, но отличных путей создания систем машинного перевода<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Машинный переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code>, разработанного в Университете д'Алакант. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев), которые создали движок и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск, Nynorsk) и норвежский бокмал (Bokmål) ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для 580,000 норвежцев.''<br />
<br />
Переводчик с языка Нюнорск на Бокмал - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трун Тростерюд, используя имеющиеся данные, такие как Norsk Ordbank (большой список полных слов на языках нюнорск и бокмал) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершена, но проект был подхвачен в 2009 году Кевином Унхаммером, студентом компьютерной лингвистики Университета Бергена во время летней программы компании Google по отбору проектов с открытым кодом. В течение трех месяцев Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Затем две недели были потрачены на тестирование работы задач, например, на тестирование чтобы только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, т.е. на основе корпуса около 10 неизвестных слов из 100 слов в среднем. Ошибочные слова - около 17%, что означает, что из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системами для перевода пары нюнорск-бокмал (Nynorsk-Bokmål). Сегодня на систему приходится более трети всех переводов на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Работа над бретон-французским переводчиком была начата в 2008 году Фрэнсисом Таерзом в его свободное время. После трех месяцев, систем подтверждения концепции, используя правила переноса из пары французский - испанский была представлена в Офис бретонского языка в декабре. Было решено найти финансирование, чтобы в течение месяца доработать прототип системы, которая была бы полезна для определенных целей.<br />
<br />
В конце концов, финансирование поездки носителя бретонского языка в Алакант была организована Офисом бретонского языка, а университет Далакант оплатил месячную зарплату бретонского носителя и компания инженерной лингвистики Промпзит оплатила работу Фрэнсиса Таерза. Еще на два месяца. В общей сложности стоимость проекта составила около € 3000. Первая версия переводчика был выпущена в мае 2009 года.<br />
<br />
Первая версия имела охват около 85%, высокий процент ошибочных слов, что все же позволяло переводчику быть полезным для определенных целейи. Сегодня система [http://www.ofis-zh.org/fr/ressources_linguistiques/index-troerofis.php Доступна] на главной странице Офис ар Brezhoneg, и обновляется сотрудниками Офис, в том числе его директором, Фулупом Якезом.<br />
<br />
=== Испанский и арагонский ===<br />
:''Среднесрочный волонтерский проект без государственного финансирования, два разработчика. На арагонском говорит около 10,000 человек.''<br />
<br />
Работа над испанско-арагонским переводчиком была начата разработчиком Apertium Джимом O'Реганом, по просьбе носителя арагонского языка Хуан Пабло Мартинеса. Три недели усилий, растянутых в течение года, и последняя интенсивная неделя работы привели к выпуску первой версии прототипа, переводчика только с арагонского на испанский язык.<br />
<br />
Первая двунаправленная версия переводчика была завершена Хуаном Пабло после еще 6 недель работы, растянутых на год. Единственными доступными ресурсами в начале этой работы на арагонском языке были арагонская версия Википедии и несколько шаблонов глаголов в английском издании Викисловаря. Арагонско-испанский словарь был создан с нуля, но морфологический анализатор испанского языка и маркировщик частей речи были взяты из испанско-каталонской пары. Создание системы никак не финансировалось.<br />
<br />
== Вспомогательные факторы ==<br />
<br />
=== Существующие ресурсы ===<br />
<br />
Когда языковые ресурсы, такие как корпуса, словари, грамматики, морфологические анализаторы, списки лемм и т.д. находятся в свободном доступе / с лицензией на возможность свободного использования, они могут быть использованы повторно и сократить время разработки. Тем не менее, количество времени, необходимого для переформатирования не следует недооценивать.<br />
<br />
Морфологический преобразователь, предназначенный для проверки орфографии, может быть очень хорошим для проверки орфографии, но его может быть не так-то легко адаптировать для анализа / генерации в системе машинного перевода. Для разных целей разные требования и это должно быть учтено при принятии решения повторного использования существующих ресурсов: стоит ли адаптировать имеющийся ресурс или создать его с нуля.<br />
<br />
=== Цели ===<br />
<br />
При запуске проекта, важно ответить для себя на следующие вопросы и обозначить цели, например,<br />
<br />
* Кто является целевой аудиторией? <br />
** Система будет предназначена для пользования профессиональными переводчиками, переводчиками-любителями или просто обывателями ?<br />
* Для чего будет использоваться система? <br />
** Цель: получить общее представление о чем текст <br />
** Применение: получить примерный перевод<br />
** Область: будет ли система использоваться для перевода новостей, энциклопедической информации, юридических текстов, погоды и т.д.?<br />
* Какие существующие языковые ресурсы могут быть повторно использованы?<br />
** Существуют ли хорошие бесплатные словари? <br />
* Сколько у нас есть времени для построения системы?<br />
** возможно 6 месяцев недостаточно чтобы создать идеальную многоцелевую систему машинного перевода дл всех языковых пар средней Волги....,<br />
*** ... но этого будет достаточно чтобы разработать прототип системы для перевода прогноза погоды.<br />
<br />
Если система будет предназначаться для перевода текстов с государственной информацией для ознакомления, она обязательно будет иметь характеристики, отличные от системы для перевода статей в Википедии.<br />
<br />
Например, создание системы с высоким объем словаря, открытой системой для усвоения и распространения данных может быть хорошей идеей, но практически это невозможно при ограниченных ресурсах.<br />
<br />
=== Время ===<br />
Количество времени, необходимого для создания новой языковой пары на платформе Apertium<br />
во многом зависит от целей проекта, существующих ресурсов и опыта разработчиков. Прототип или образец системы могут быть созданы в период от 10 дней до 3 месяцев. В то время как полноценная работающая система может занять от 3 месяцев (как в случае пары нюнорск-бокмал) до нескольких лет.<br />
<br />
В следующей таблице приведены данные развития языковых пар в Apertium за последние шесть лет.<br />
<br />
<br />
{|class="wikitable"<br />
! Год !! Всего пар !! Новые пары !! Языковые пары<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Финансирование ===<br />
<br />
Как мы увидели из конкретных примеров, языковые пары в Apertium создавались и финансировались разными способами. В таблице приведены способы финансирования "стабильных" систем машинного перевода в Apertium. Самые популярные выделены жирным.<br />
<br />
{|class="wikitable"<br />
! Спонсор !! Вид !! Языковая пара(ы)<br />
|-<br />
| Google Лето кода || Конкурс || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Волонтеры || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Местное правительство || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Диссертация || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Образовательное учреждение || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Министерство промышленности, торговли и туризма || Правительство страны || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Организация || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Организация || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Образовательное учреждение || es-ast<br />
|-<br />
| Prompsit || Организация || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Организация || fr-es<br />
|-<br />
| Исследовательский совет Исландии || Правительство страны || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi общественная организация || '''br-fr'''<br />
|-<br />
| Европейская ассоциация машинного перевода || Некоммерческая организация || eu-en<br />
|-<br />
|}<br />
<br />
==Практика==<br />
<br />
* Найдите существующие языковые ресурсы для вашей языковой пары и отметьте, какими документами они регламентируются.<br />
* Разработайте реалистичный рабочий план для разработки нового переводчика для данной языковой пары в системе Apertium, принимая во внимание:<br />
** Существующие ресурсы<br />
** Цель перевода<br />
** Человеческие ресурсы<br />
** Политическую финансовую и общественную поддержку<br />
<br />
[[Category:Машинный перевод для языков России|Раздел 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31509Курсы машинного перевода для языков России/Раздел 82012-01-19T08:09:58Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительное количество систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, детальное планирование и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из практики ==<br />
<br />
Следующие примеры показывают 4 успешных, но отличных путей создания систем машинного перевода<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Машинный переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code>, разработанного в Университете д'Алакант. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев), которые создали движок и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск, Nynorsk) и норвежский бокмал (Bokmål) ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для 580,000 норвежцев.''<br />
<br />
Переводчик с языка Нюнорск на Бокмал - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трун Тростерюд, используя имеющиеся данные, такие как Norsk Ordbank (большой список полных слов на языках нюнорск и бокмал) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершена, но проект был подхвачен в 2009 году во время летних соревнований по коду Google Кевином Унхаммером, студентом компьютерной лингвистики Университета Бергена. В течение трех месяцев Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Затем две недели были потрачены на тестирование работы задач, например, на тестирование чтобы только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, т.е. на основе корпуса около 10 неизвестных слов из 100 слов в среднем. Ошибочные слова - около 17%, что означает, что из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системами для перевода пары нюнорск-бокмал (Nynorsk-Bokmål). Сегодня на систему приходится более трети всех переводов на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Работа над бретон-французским переводчиком была начата в 2008 году Фрэнсисом Таерзом в его свободное время. После трех месяцев, систем подтверждения концепции, используя правила переноса из пары французский - испанский была представлена в Офис бретонского языка в декабре. Было решено найти финансирование, чтобы в течение месяца доработать прототип системы, которая была бы полезна для определенных целей.<br />
<br />
В конце концов, финансирование поездки носителя бретонского языка в Алакант была организована Офисом бретонского языка, а университет Далакант оплатил месячную зарплату бретонского носителя и компания инженерной лингвистики Промпзит оплатила работу Фрэнсиса Таерза. Еще на два месяца. В общей сложности стоимость проекта составила около € 3000. Первая версия переводчика был выпущена в мае 2009 года.<br />
<br />
Первая версия имела охват около 85%, высокий процент ошибочных слов, что все же позволяло переводчику быть полезным для определенных целейи. Сегодня система [http://www.ofis-zh.org/fr/ressources_linguistiques/index-troerofis.php Доступна] на главной странице Офис ар Brezhoneg, и обновляется сотрудниками Офис, в том числе его директором, Фулупом Якезом.<br />
<br />
=== Испанский и арагонский ===<br />
:''Среднесрочный волонтерский проект без государственного финансирования, два разработчика. На арагонском говорит около 10,000 человек.''<br />
<br />
Работа над испанско-арагонским переводчиком была начата разработчиком Apertium Джимом O'Реганом, по просьбе носителя арагонского языка Хуан Пабло Мартинеса. Три недели усилий, растянутых в течение года, и последняя интенсивная неделя работы привели к выпуску первой версии прототипа, переводчика только с арагонского на испанский язык.<br />
<br />
Первая двунаправленная версия переводчика была завершена Хуаном Пабло после еще 6 недель работы, растянутых на год. Единственными доступными ресурсами в начале этой работы на арагонском языке были арагонская версия Википедии и несколько шаблонов глаголов в английском издании Викисловаря. Арагонско-испанский словарь был создан с нуля, но морфологический анализатор испанского языка и маркировщик частей речи были взяты из испанско-каталонской пары. Создание системы никак не финансировалось.<br />
<br />
== Вспомогательные факторы ==<br />
<br />
=== Существующие ресурсы ===<br />
<br />
Когда языковые ресурсы, такие как корпуса, словари, грамматики, морфологические анализаторы, списки лемм и т.д. находятся в свободном доступе / с лицензией на возможность свободного использования, они могут быть использованы повторно и сократить время разработки. Тем не менее, количество времени, необходимого для переформатирования не следует недооценивать.<br />
<br />
Морфологический преобразователь, предназначенный для проверки орфографии, может быть очень хорошим для проверки орфографии, но его может быть не так-то легко адаптировать для анализа / генерации в системе машинного перевода. Для разных целей разные требования и это должно быть учтено при принятии решения повторного использования существующих ресурсов: стоит ли адаптировать имеющийся ресурс или создать его с нуля.<br />
<br />
=== Цели ===<br />
<br />
При запуске проекта, важно ответить для себя на следующие вопросы и обозначить цели, например,<br />
<br />
* Кто является целевой аудиторией? <br />
** Система будет предназначена для пользования профессиональными переводчиками, переводчиками-любителями или просто обывателями ?<br />
* Для чего будет использоваться система? <br />
** Цель: получить общее представление о чем текст <br />
** Применение: получить примерный перевод<br />
** Область: будет ли система использоваться для перевода новостей, энциклопедической информации, юридических текстов, погоды и т.д.?<br />
* Какие существующие языковые ресурсы могут быть повторно использованы?<br />
** Существуют ли хорошие бесплатные словари? <br />
* Сколько у нас есть времени для построения системы?<br />
** возможно 6 месяцев недостаточно чтобы создать идеальную многоцелевую систему машинного перевода дл всех языковых пар средней Волги....,<br />
*** ... но этого будет достаточно чтобы разработать прототип системы для перевода прогноза погоды.<br />
<br />
Если система будет предназначаться для перевода текстов с государственной информацией для ознакомления, она обязательно будет иметь характеристики, отличные от системы для перевода статей в Википедии.<br />
<br />
Например, создание системы с высоким объем словаря, открытой системой для усвоения и распространения данных может быть хорошей идеей, но практически это невозможно при ограниченных ресурсах.<br />
<br />
=== Время ===<br />
Количество времени, необходимого для создания новой языковой пары на платформе Apertium<br />
во многом зависит от целей проекта, существующих ресурсов и опыта разработчиков. Прототип или образец системы могут быть созданы в период от 10 дней до 3 месяцев. В то время как полноценная работающая система может занять от 3 месяцев (как в случае пары нюнорск-бокмал) до нескольких лет.<br />
<br />
В следующей таблице приведены данные развития языковых пар в Apertium за последние шесть лет.<br />
<br />
<br />
{|class="wikitable"<br />
! Год !! Всего пар !! Новые пары !! Языковые пары<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Финансирование ===<br />
<br />
Как мы увидели из конкретных примеров, языковые пары в Apertium создавались и финансировались разными способами. В таблице приведены способы финансирования "стабильных" систем машинного перевода в Apertium. Самые популярные выделены жирным.<br />
<br />
{|class="wikitable"<br />
! Спонсор !! Вид !! Языковая пара(ы)<br />
|-<br />
| Google Лето кода || Конкурс || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Волонтеры || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Местное правительство || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Диссертация || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Образовательное учреждение || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Министерство промышленности, торговли и туризма || Правительство страны || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Организация || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Организация || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Образовательное учреждение || es-ast<br />
|-<br />
| Prompsit || Организация || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Организация || fr-es<br />
|-<br />
| Исследовательский совет Исландии || Правительство страны || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi общественная организация || '''br-fr'''<br />
|-<br />
| Европейская ассоциация машинного перевода || Некоммерческая организация || eu-en<br />
|-<br />
|}<br />
<br />
==Практика==<br />
<br />
* Найдите существующие языковые ресурсы для вашей языковой пары и отметьте, какими документами они регламентируются.<br />
* Разработайте реалистичный рабочий план для разработки нового переводчика для данной языковой пары в системе Apertium, принимая во внимание:<br />
** Существующие ресурсы<br />
** Цель перевода<br />
** Человеческие ресурсы<br />
** Политическую финансовую и общественную поддержку<br />
<br />
[[Category:Машинный перевод для языков России|Раздел 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31508Курсы машинного перевода для языков России/Раздел 82012-01-19T08:06:05Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительное количество систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, детальное планирование и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из практики ==<br />
<br />
Следующие примеры показывают 4 успешных, но отличных путей создания систем машинного перевода<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Машинный переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code>, разработанного в Университете д'Алакант. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев), которые создали движок и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск, Nynorsk) и норвежский бокмал (Bokmål) ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для 580,000 норвежцев.''<br />
<br />
Переводчик с языка Нюнорск на Бокмал - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трун Тростерюд, используя имеющиеся данные, такие как Norsk Ordbank (большой список полных слов на языках нюнорск и бокмал) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершена, но проект был подхвачен в 2009 году во время летних соревнований по коду Google Кевином Унхаммером, студентом компьютерной лингвистики Университета Бергена. В течение трех месяцев Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Затем две недели были потрачены на тестирование работы задач, например, на тестирование чтобы только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, т.е. на основе корпуса около 10 неизвестных слов из 100 слов в среднем. Ошибочные слова - около 17%, что означает, что из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системами для перевода пары нюнорск-бокмал (Nynorsk-Bokmål). Сегодня на систему приходится более трети всех переводов на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
Работа над бретон-французским переводчиком была начата в 2008 году Фрэнсисом Таерзом в его свободное время. После трех месяцев, систем подтверждения концепции, используя правила переноса из пары французский - испанский была представлена Офис ар Брежонег в декабре. Было решено, что будет найдено финансирование чтобы в течение месяца доработать прототип системы, которая была бы полезна для определенных целей.<br />
<br />
В конце концов, финансирование поездки носителя бретонского языка в Алакант была организована Офис ар Брежонег, университет Далакант оплатил месячную зарплату бретонского носителя и компания инженерной лингвистики Промпзит оплатила работу Фрэнсиса Таерза. Еще на два месяца. В общей сложности стоимость проекта составила около € 3000. Первая версия переводчика был выпущена в мае 2009 года.<br />
<br />
Первая версия имела охват около 85%, высокий процент ошибочных слов, что все же позволяло переводчику быть полезным для определенных целейи. Сегодня система [http://www.ofis-zh.org/fr/ressources_linguistiques/index-troerofis.php Доступна] на главной странице Офис ар Brezhoneg, и обновляется сотрудниками Офис, в том числе его директором, Фулупом Якезом.<br />
<br />
=== Испанский и арагонский ===<br />
:''Среднесрочный волонтерский проект без государственного финансирования, два разработчика. На арагонском говорит около 10,000 человек.''<br />
<br />
Работа над испанско-арагонским переводчиком была начата разработчиком Apertium Джимом O'Реганом, по просьбе носителя арагонского языка Хуан Пабло Мартинеса. Три недели усилий, растянутых в течение года, и последняя интенсивная неделя работы привели к выпуску первой версии прототипа, переводчика только с арагонского на испанский язык.<br />
<br />
Первая двунаправленная версия переводчика была завершена Хуаном Пабло после еще 6 недель работы, растянутых на год. Единственными доступными ресурсами в начале этой работы на арагонском языке были арагонская версия Википедии и несколько шаблонов глаголов в английском издании Викисловаря. Арагонско-испанский словарь был создан с нуля, но морфологический анализатор испанского языка и маркировщик частей речи были взяты из испанско-каталонской пары. Создание системы никак не финансировалось.<br />
<br />
== Вспомогательные факторы ==<br />
<br />
=== Существующие ресурсы ===<br />
<br />
Когда языковые ресурсы, такие как корпуса, словари, грамматики, морфологические анализаторы, списки лемм и т.д. находятся в свободном доступе / с лицензией на возможность свободного использования, они могут быть использованы повторно и сократить время разработки. Тем не менее, количество времени, необходимого для переформатирования не следует недооценивать.<br />
<br />
Морфологический преобразователь, предназначенный для проверки орфографии, может быть очень хорошим для проверки орфографии, но его может быть не так-то легко адаптировать для анализа / генерации в системе машинного перевода. Для разных целей разные требования и это должно быть учтено при принятии решения повторного использования существующих ресурсов: стоит ли адаптировать имеющийся ресурс или создать его с нуля.<br />
<br />
=== Цели ===<br />
<br />
При запуске проекта, важно ответить для себя на следующие вопросы и обозначить цели, например,<br />
<br />
* Кто является целевой аудиторией? <br />
** Система будет предназначена для пользования профессиональными переводчиками, переводчиками-любителями или просто обывателями ?<br />
* Для чего будет использоваться система? <br />
** Цель: получить общее представление о чем текст <br />
** Применение: получить примерный перевод<br />
** Область: будет ли система использоваться для перевода новостей, энциклопедической информации, юридических текстов, погоды и т.д.?<br />
* Какие существующие языковые ресурсы могут быть повторно использованы?<br />
** Существуют ли хорошие бесплатные словари? <br />
* Сколько у нас есть времени для построения системы?<br />
** возможно 6 месяцев недостаточно чтобы создать идеальную многоцелевую систему машинного перевода дл всех языковых пар средней Волги....,<br />
*** ... но этого будет достаточно чтобы разработать прототип системы для перевода прогноза погоды.<br />
<br />
Если система будет предназначаться для перевода текстов с государственной информацией для ознакомления, она обязательно будет иметь характеристики, отличные от системы для перевода статей в Википедии.<br />
<br />
Например, создание системы с высоким объем словаря, открытой системой для усвоения и распространения данных может быть хорошей идеей, но практически это невозможно при ограниченных ресурсах.<br />
<br />
=== Время ===<br />
Количество времени, необходимого для создания новой языковой пары на платформе Apertium<br />
во многом зависит от целей проекта, существующих ресурсов и опыта разработчиков. Прототип или образец системы могут быть созданы в период от 10 дней до 3 месяцев. В то время как полноценная работающая система может занять от 3 месяцев (как в случае пары нюнорск-бокмал) до нескольких лет.<br />
<br />
В следующей таблице приведены данные развития языковых пар в Apertium за последние шесть лет.<br />
<br />
<br />
{|class="wikitable"<br />
! Год !! Всего пар !! Новые пары !! Языковые пары<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Финансирование ===<br />
<br />
Как мы увидели из конкретных примеров, языковые пары в Apertium создавались и финансировались разными способами. В таблице приведены способы финансирования "стабильных" систем машинного перевода в Apertium. Самые популярные выделены жирным.<br />
<br />
{|class="wikitable"<br />
! Спонсор !! Вид !! Языковая пара(ы)<br />
|-<br />
| Google Лето кода || Конкурс || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Волонтеры || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Местное правительство || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Диссертация || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Образовательное учреждение || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Министерство промышленности, торговли и туризма || Правительство страны || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Организация || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Организация || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Образовательное учреждение || es-ast<br />
|-<br />
| Prompsit || Организация || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Организация || fr-es<br />
|-<br />
| Исследовательский совет Исландии || Правительство страны || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi общественная организация || '''br-fr'''<br />
|-<br />
| Европейская ассоциация машинного перевода || Некоммерческая организация || eu-en<br />
|-<br />
|}<br />
<br />
==Практика==<br />
<br />
* Найдите существующие языковые ресурсы для вашей языковой пары и отметьте, какими документами они регламентируются.<br />
* Разработайте реалистичный рабочий план для разработки нового переводчика для данной языковой пары в системе Apertium, принимая во внимание:<br />
** Существующие ресурсы<br />
** Цель перевода<br />
** Человеческие ресурсы<br />
** Политическую финансовую и общественную поддержку<br />
<br />
[[Category:Машинный перевод для языков России|Раздел 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31503Курсы машинного перевода для языков России/Раздел 72012-01-18T18:01:58Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные вопросы создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы обсудим важность согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является автономной, самодостаточной системой. При введении разных вводных данных, итоговый результат должен быть одним, предсказуемым и определенным.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в морфемном переносном лексиконе и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне лемм, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом разница в статусе разных языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (это обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических предупреждающих знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это видно на примере перевода нижеприведенного предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: <br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и форматировании. <br />
<br />
* Если это отсутствующая лемма в двуязычном словаре, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' отсутствует в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но нет леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Если есть и лемма и тэг части речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет появляться надпись <code>@</code>.<br />
* Если в словаре языка перевода отсутствует данная лемма, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но есть несоответствие в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется <code>#</code>. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запустить в работу какой-либо переводчик, должны быть проведено полное тестирование словарей (в обиходе это называют "testvoc" &mdash; from ''<u>test voc</u>abulary''), и не должно быть никаких предупреждающих символов в результатах перевода. На практике, ошибки иногда остаются.<br />
<br />
Одна из причин почему Apertium избегает моделирования вольных деривационных процессов состоит в том, что они могут не быть эквивалентными для обоих языков. Если процессы не эквивалентны, правила переноса оказываются не на своем месте, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают вольное словообразование) невозможно выполнять тестирование слов.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от самих вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше других, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые извилины и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как качество трудно определить и измерить, мы можем попробовать ответить на этот интересный философский вопрос через ответы на конкретные вопросы. Например:<br />
<br />
* Насколько полно два языка представлена в словарях системы нужной области?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно хорошо чтобы гарантировать правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словарях, ведущие к диагностическим предупреждающим знакам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Качество перевода====<br />
<br />
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть разными:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
* Получить примерный перевод:<br />
** Согласно переводчику, быстрее и эффективнее изменять примерные варианты переводов, предложенных системой или переводить с нуля?<br />
* Получить перевод для ознакомления с содержанием текста:<br />
** Может ли система в определенных случаях делать переводы, достаточно понятные и быстрые, которые бы не нуждались в редактировании человеком?<br />
<br />
===Оценка===<br />
<br />
====Объем словаря====<br />
<br />
Объем системы показывает какая часть словаря данного языкового корпуса или области представлена в системе. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные объемы словаря:<br />
{|class=wikitable<br />
! Предложение !! Размер <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Как правило, объем словаря можно оценить, принимая во внимание пул предложений или корпус, а не одно предложение. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, за исключением пары родственных языков. Однако, как правило, достаточно, чтобы сделать понятнее переводы.<br />
<br />
====Количество и частота ошибок====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем варианте перевода, при том, что остальная часть перевода является правильной. Но более точный показатель того, сколько слов вам придется заменить после использования переводчика можно получить при помощи подсчета ошибок по итогам перевода (сокращенно {{SC | WER}}). Этот показатель отражает все изменения (вставки, удаления, замены) и выражается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.<br />
<br />
Снова возьмем вышеприведенный пример:<br />
<br />
<br />
{|class=wikitable<br />
! !! !! Изменения !! {{sc|wer}}<br />
|-<br />
| '''Оригинал''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Машинный перевод''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Отредактированный''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
Как и в случае оценки объема словаря, подсчет количества ошибок, как правило, проводится на пуле предложений. Он показывает сколько слов вам, вероятно, придется изменить в данном предложении.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
После подсчета количества ошибок и объема словаря на примере корпуса определенной области перевода, можно получить представление о пользе системы машинного перевода для решения конкретной задачи. Конечно, чтобы определить, насколько система полезна для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.<br />
<br />
==Практика==<br />
<br />
===Системность Consistency===<br />
<br />
====Testvoc Тестирование словаря====<br />
<br />
Чтобы увидеть как управлять сценарием testvoc и как выглядит результат, перейдите к папке <code>apertium-tt-ba</code>. Убедитесь, что переводчик сформирован (например, наберите <code>make</code>), а затем введите подпапку <code>dev/</code>.<br />
<br />
Чтобы выполнить testvoc вам необходимо ввести команду <code>testvoc.sh</code>:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
Весь тест займет около 20&mdash;25 минут, и сформирует результат 3-400M.<br />
<br />
===Оценка===<br />
<br />
====Охват====<br />
<br />
Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Охват 93.4% морфологическим анализатором татарского языка для данного примера.<br />
<br />
====Количество ошибочных слов====<br />
<br />
В системе Apertium есть инструмент для подсчета соотношения ошибочных слов между reference translation и машинным переводом. Инструмент называется <code>apertium-eval-translator</code> и его можно найти в базе хранения [[Apertium SVN]]. Цель данной практической сессии - испытать его на системе, которую вы создали.<br />
<br />
<br />
Вам понадобится два образца перевода. Первым будет "оригинальный" текст на языке перевода, который был создан без дальнейшего редактирования. Вторым будет отредактированный вариант текста машинного перевода. При редактировании текста, постарайтесь внести только минимальные изменения, необходимые для получения адекватного перевода.<br />
<br />
<br />
Вот пример с башкирского на татарский. Образец текста находится в файле <code>ba.txt</code>, введите команду:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Проверьте что файл был создан правильно затем введите:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Статистика о введенных файлах<br />
-------------------------------------------------------<br />
Количество слов in reference: 311<br />
Количество слов в тесте: 313<br />
Количество неизвестных слов (отмечены звездочкой) в тесте: <br />
Процент неизвестных слов: 0.00 %<br />
<br />
Результаты после удаления пометок о неизвестных словах (звездочек)Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Процент ошибочных слов (WER): 13.42 %<br />
Количество ошибочных слов Number of position-independent word errors: 42<br />
Процент ошибочных слов Position-independent word error rate (PER): 13.42 %<br />
<br />
Результаты когда указатели на незнакомые слова не удалены Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Статистика по переводу незнакомых слов<br />
-------------------------------------------------------<br />
Количество незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0<br />
Процент незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0%<br />
</pre><br />
<br />
Дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .<code>-r</code> предлагает образец перевода, в данном случае <code> tt.txt </ код> это файл, содержащий пример текста на татарском языке. <code>-t</code> выдает текст, например, результат работы системы машинного перевода.<br />
<br />
Теперь скопируйте файл <code>ba-tt.txt</code> назовите <code>tt2.txt</code> и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив <code>tt.txt</code> на <code>tt2.txt</code> и сравните результаты.<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31500Курсы машинного перевода для языков России/Раздел 72012-01-18T13:29:55Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные вопросы создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы обсудим важность согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является автономной, самодостаточной системой. При введении разных вводных данных, итоговый результат должен быть одним, предсказуемым и определенным.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в морфемном переносном лексиконе и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне лемм, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом разница в статусе разных языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (это обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических предупреждающих знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это видно на примере перевода нижеприведенного предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: <br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и форматировании. <br />
<br />
* Если это отсутствующая лемма в двуязычном словаре, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' отсутствует в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но нет леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Если есть и лемма и тэг части речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет появляться надпись <code>@</code>.<br />
* Если в словаре языка перевода отсутствует данная лемма, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но есть несоответствие в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется <code>#</code>. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запустить в работу какой-либо переводчик, должны быть проведено полное тестирование словарей (в обиходе это называют "testvoc" &mdash; from ''<u>test voc</u>abulary''), и не должно быть никаких предупреждающих символов в результатах перевода. На практике, ошибки иногда остаются.<br />
<br />
Одна из причин почему Apertium избегает моделирования вольных деривационных процессов состоит в том, что они могут не быть эквивалентными для обоих языков. Если процессы не эквивалентны, правила переноса оказываются не на своем месте, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают вольное словообразование) невозможно выполнять тестирование слов.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от самих вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше других, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые извилины и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как качество трудно определить и измерить, мы можем попробовать ответить на этот интересный философский вопрос через ответы на конкретные вопросы. Например:<br />
<br />
* Насколько полно два языка представлена в словарях системы нужной области?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно хорошо чтобы гарантировать правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словарях, ведущие к диагностическим предупреждающим знакам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Качество перевода====<br />
<br />
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть разными:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
* Получить примерный перевод:<br />
** Согласно переводчику, быстрее и эффективнее изменять примерные варианты переводов, предложенных системой или переводить с нуля?<br />
* Получить перевод для ознакомления с содержанием текста:<br />
** Может ли система в определенных случаях делать переводы, достаточно понятные и быстрые, которые бы не нуждались в редактировании человеком?<br />
<br />
===Оценка===<br />
<br />
====Объем словаря====<br />
<br />
Объем системы показывает какая часть словаря данного языкового корпуса или области представлена в системе. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные объемы словаря:<br />
{|class=wikitable<br />
! Предложение !! Размер <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Как правило, объем словаря можно оценить, принимая во внимание пул предложений или корпус, а не одно предложение. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, за исключением пары родственных языков. Однако, как правило, достаточно, чтобы сделать понятнее переводы.<br />
<br />
====Количество и частота ошибок====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем варианте перевода, при том, что остальная часть перевода является правильной. Но более точный показатель того, сколько слов вам придется заменить после использования переводчика можно получить при помощи подсчета ошибок по итогам перевода (сокращенно {{SC | WER}}). Этот показатель отражает все изменения (вставки, удаления, замены) и выражается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.<br />
<br />
Снова возьмем вышеприведенный пример:<br />
<br />
<br />
{|class=wikitable<br />
! !! !! Изменения !! {{sc|wer}}<br />
|-<br />
| '''Оригинал''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Машинный перевод''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Отредактированный''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
Как и в случае оценки объема словаря, подсчет количества ошибок, как правило, проводится на пуле предложений. Он показывает сколько слов вам, вероятно, придется изменить в данном предложении.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
После подсчета количества ошибок и объема словаря на примере корпуса определенной области перевода, можно получить представление о пользе системы машинного перевода для решения конкретной задачи. Конечно, чтобы определить, насколько система полезна для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.<br />
<br />
==Практика==<br />
<br />
===Системность Consistency===<br />
<br />
====Testvoc Тестирование словаря====<br />
<br />
Чтобы увидеть как управлять сценарием testvoc и как выглядит результат, перейдите к папке <code>apertium-tt-ba</code>. Убедитесь, что переводчик сформирован (например, наберите <code>make</code>), а затем введите подпапку <code>dev/</code>.<br />
<br />
Чтобы выполнить testvoc вам необходимо ввести команду <code>testvoc.sh</code>:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
Весь тест займет около 20&mdash;25 минут, и сформирует результат 3-400M.<br />
<br />
===Оценка===<br />
<br />
====Охват====<br />
<br />
Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Охват 93.4% морфологическим анализатором татарского языка для данного примера.<br />
<br />
====Количество ошибочных слов====<br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
В системе Apertium есть инструмент для подсчета соотношения ошибочных слов между reference translation и машинным переводом. Инструмент называется <code>apertium-eval-translator</code> и его можно найти в базе хранения [[Apertium SVN]]. Цель данной практической сессии - испытать его на системе, которую вы создали.<br />
<br />
Вам понадобится два reference translations. Первым будет "оригинальный" текст на языке перевода, которые был создан без дальнейшего редактирования пост-editting. Вторым будет отредактированный вариант текста машинного перевода. При редактировании текста, постарайтесь внести только минимальные изменения, необходимые для получения адекватного перевода.<br />
<br />
Вот пример с башкирского на татарский. Образец текста находится в файле <code>ba.txt</code>, введите команду:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Проверьте что файл был создан правильно затем введите:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Статистика о введенных файлах<br />
-------------------------------------------------------<br />
Количество слов in reference: 311<br />
Количество слов в тесте: 313<br />
Количество неизвестных слов (отмечены звездочкой) в тесте: <br />
Процент неизвестных слов: 0.00 %<br />
<br />
Результаты после удаления пометок о неизвестных словах (звездочек)Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Процент ошибочных слов (WER): 13.42 %<br />
Количество ошибочных слов Number of position-independent word errors: 42<br />
Процент ошибочных слов Position-independent word error rate (PER): 13.42 %<br />
<br />
Результаты когда указатели на незнакомые слова не удалены Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Статистика по переводу незнакомых слов<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
Это дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .<code>-r</code> дает reference translation, в данном случае <code> tt.txt </ код> это файл, содержащий пример текста на татарском языке. <code>-t</code> выдает текст, например, результат работы системы машинного перевода.<br />
<br />
Теперь скопируйте файл <code>ba-tt.txt</code> назовите <code>tt2.txt</code> и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив <code>tt.txt</code> на <code>tt2.txt</code> и сравните результаты.<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31499Курсы машинного перевода для языков России/Раздел 72012-01-18T13:08:10Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные вопросы создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы обсудим важность согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является автономной, самодостаточной системой. При введении разных вводных данных, итоговый результат должен быть одним, предсказуемым и определенным.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в морфемном переносном лексиконе и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне лемм, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом разница в статусе разных языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (это обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических предупреждающих знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это видно на примере перевода нижеприведенного предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: <br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и форматировании. <br />
<br />
* Если это отсутствующая лемма в двуязычном словаре, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' отсутствует в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но нет леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Если есть и лемма и тэг части речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет появляться надпись <code>@</code>.<br />
* Если в словаре языка перевода отсутствует данная лемма, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но есть несоответствие в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется <code>#</code>. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запустить в работу какой-либо переводчик, должны быть проведено полное тестирование словарей (в обиходе это называют "testvoc" &mdash; from ''<u>test voc</u>abulary''), и не должно быть никаких предупреждающих символов в результатах перевода. На практике, ошибки иногда остаются.<br />
<br />
Одна из причин почему Apertium избегает моделирования вольных деривационных процессов состоит в том, что они могут не быть эквивалентными для обоих языков. Если процессы не эквивалентны, правила переноса оказываются не на своем месте, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают вольное словообразование) невозможно выполнять тестирование слов.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от самих вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше других, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые извилины и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как качество трудно определить и измерить, мы можем попробовать ответить на этот интересный философский вопрос через ответы на конкретные вопросы. Например:<br />
<br />
* Насколько полно два языка представлена в словарях системы нужной области?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно хорошо чтобы гарантировать правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словарях, ведущие к диагностическим предупреждающим знакам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Качество перевода====<br />
<br />
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть разными:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
* Получить примерный перевод:<br />
** Согласно переводчику, быстрее и эффективнее изменять примерные варианты переводов, предложенных системой или переводить с нуля?<br />
* Получить перевод для ознакомления с содержанием текста:<br />
** Может ли система в определенных случаях делать переводы, достаточно понятные и быстрые, которые бы не нуждались в редактировании человеком?<br />
<br />
===Оценка===<br />
<br />
====Объем словаря Vocabulary coverage====<br />
<br />
Объем системы показывает какая часть словаря данного языкового корпуса или области представлена в системе. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные объемы словаря:<br />
{|class=wikitable<br />
! Предложение !! Размер <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Как правило, объем словаря можно оценить принимая во внимание пул предложений или корпус, а не одно предложение. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, за исключением пары родственных языков. Однако, как правило, достаточно, чтобы сделать понятнее переводы.<br />
<br />
====Уровень ошибок Error rate====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем случае, при том, что остальная часть перевода является правильным. Но более точный показатель того, сколько слов вам придется заменить при использовании переводчика можно получить при помощи подсчета ошибок по итогам перевода (часто сокращенно {{SC | WER}}). Этот показатель отражает все изменения (вставки, удаления, замены)и дается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.<br />
<br />
Снова возьмем вышеприведенный пример:<br />
<br />
<br />
{|class=wikitable<br />
! !! !! Изменения !! {{sc|wer}}<br />
|-<br />
| '''Оригинал''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Машинный перевод''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Отредактированный''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
Как и в случае изучения объема словаря, оценка ошибок, как правило, проводится на наборе предложений. Она показывает сколько слов вам, вероятно, придется изменить в данном предложении.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
После подсчета уровня ошибок и объема словаря на примере соответствующего корпуса целевого перевода можно получить представление о полезности системы машинного перевода для конкретной задачи. Конечно, чтобы определить, насколько полезной является система для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.<br />
<br />
==Практика==<br />
<br />
===Системность Consistency===<br />
<br />
====Testvoc Тестирование словаря====<br />
<br />
Чтобы увидеть как управлять сценарием testvoc и как выглядит результат, перейдите к папке <code>apertium-tt-ba</code>. Убедитесь, что переводчик скомпилирован (например, наберите <code>make</code>), а затем введите подпапку <code>dev/</code>.<br />
<br />
Чтобы выполнить testvoc вам необходимо ввести команду <code>testvoc.sh</code>:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
Весь тест займет около 20&mdash;25 минут, и сгенерирует 3-400M of output.<br />
<br />
===Оценка===<br />
<br />
====Охват====<br />
<br />
Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Охват 93.4% для морфологического анализатора татарского языка для данного примере for the Tatar morphological analyser for the example text.<br />
<br />
====Уровень ошибок Word error rate====<br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
В системе Apertium есть инструмент для подсчета соотношения ошибочных слов между reference translation и машинным переводом. Инструмент называется <code>apertium-eval-translator</code> и его можно найти в базе хранения [[Apertium SVN]]. Цель данной практической сессии - испытать его на системе, которую вы создали.<br />
<br />
Вам понадобится два reference translations. Первым будет "оригинальный" текст на языке перевода, которые был создан без дальнейшего редактирования пост-editting. Вторым будет отредактированный вариант текста машинного перевода. При редактировании текста, постарайтесь внести только минимальные изменения, необходимые для получения адекватного перевода.<br />
<br />
Вот пример с башкирского на татарский. Образец текста находится в файле <code>ba.txt</code>, введите команду:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Проверьте что файл был создан правильно затем введите:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Статистика о введенных файлах<br />
-------------------------------------------------------<br />
Количество слов in reference: 311<br />
Количество слов в тесте: 313<br />
Количество неизвестных слов (отмечены звездочкой) в тесте: <br />
Процент неизвестных слов: 0.00 %<br />
<br />
Результаты после удаления пометок о неизвестных словах (звездочек)Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Процент ошибочных слов (WER): 13.42 %<br />
Количество ошибочных слов Number of position-independent word errors: 42<br />
Процент ошибочных слов Position-independent word error rate (PER): 13.42 %<br />
<br />
Результаты когда указатели на незнакомые слова не удалены Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Статистика по переводу незнакомых слов<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
Это дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .<code>-r</code> дает reference translation, в данном случае <code> tt.txt </ код> это файл, содержащий пример текста на татарском языке. <code>-t</code> выдает текст, например, результат работы системы машинного перевода.<br />
<br />
Теперь скопируйте файл <code>ba-tt.txt</code> назовите <code>tt2.txt</code> и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив <code>tt.txt</code> на <code>tt2.txt</code> и сравните результаты.<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_6&diff=31484Курсы машинного перевода для языков России/Раздел 62012-01-18T11:47:16Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Системы базового структурного переноса, описанного в [[Машинный перевод для языков России/Раздел 5|session 5]] достаточно для работы с большинством расхождений, которые имеются в родственных языках (например, башкирский и татарский, финский и квен), при работе с языками, которые имеют больше морфологических и синтаксических расхождений необходимо использовать более мощную систему структурного переноса. В данном разделе мы познакомим вас с системой уровня Apertium 3+, которая была разработана для работы с более длинными шаблонами и языками, которые сильнее отличаются друг от друга.<br />
<br />
==Теория==<br />
<br />
===Перенос c помощью разбивки на блоки (Chunking-based transfer)===<br />
Обычное применение данного метода состоит из трех модулей: разбивание на блоки (chunker), процессы между блоками (interchunk) и после разбивки на блоки (postchunk). При необходимости данная модель может быть расширена до двух и более модулей intertchunk.<br />
<br />
====Разбивание на блоки (Chunker)====<br />
<br />
Идея ''разбивания на блоки (chunker)'' - расширить существующие правила переноса для группировки ряда лексических единиц. Эти группы называются ''блоки (chunks)'' . Блоки могут объединять именные части речи, делать согласование, вставлять и удалять слова, и выполнять местную перестановку слов, например,<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе !! Пример<br />
|-<br />
| <code>nom</code> || ҫурт || <code>SN{nom}</code> || дом <br />
|-<br />
| <code>adj nom</code> || хитре ҫурт || <code>SN{nom adj}</code> || красивый дом<br />
|-<br />
| <code>nom</code> || ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫурт || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>num nom</code> || икĕ ҫурт || <code>SN{num nom}</code> || два дома<br />
|-<br />
| <code>num nom</code> || пилĕ ҫурт || <code>SN{num nom}</code> || пять домов<br />
|-<br />
| <code>adj nom</code> || хитре ҫуртсем || <code>SN{adj nom}</code> || красивые домы<br />
|-<br />
| <code>adv adj nom</code> || питĕ хитре ҫурт || <code>SN{adv adj nom}</code> || очень красивый дом<br />
|-<br />
| <code>num adv adj nom</code> || пилĕ питĕ хитре ҫурт || <code>SN{num adv adj nom}</code> || пять очень красивых домов <br />
|-<br />
|}<br />
<br />
Где <code>nom</code> = существительное, <code>adj</code> = прилагательное, <code>num</code> = числительное, <code>det</code> = артикль, <code>SN</code> = именная конструкция.<br />
<br />
Такой же процесс и для формирования глагольных блоков chunks:<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе Output chunk !! Пример<br />
|- <br />
| <code>verb</code> || вулать || <code>V{verb}</code> || читает<br />
|-<br />
| <code>verb</code> || вуламасть || <code>V{neg_adv verb}</code> || не читает<br />
|-<br />
| <code>verb</code> || вуларĕ || <code>V{verb}</code> || читал<br />
|-<br />
| <code>verb</code> || вуламĕ || <code>V{aux inf}</code> || будет читать<br />
|-<br />
| <code>verb</code> || вуламарĕ || <code>V{neg_adv aux inf}</code> || не будет читать<br />
|-<br />
| <code>verb</code> || вуласшăн || <code>V{aux part inf}</code> || хотел бы говорить<br />
|-<br />
| <code>verb</code> || вулӑттӑм || <code>V{verb part}</code> || говорил бы<br />
|-<br />
| <code>adv verb</code> || ан вула ! || <code>V{adv verb}</code> || не читай !<br />
|-<br />
| <code>ger verb</code> || вулама пуçлать || <code>V{verb inf}</code> || начинает читать.<br />
|-<br />
|}<br />
<br />
Таким образом, если мы хотим согласовать именное словосочетание с основным глаголом, мы только можем использовать одно правило (для <code>SN V</code>) во втором модуле переноса (процесс между блоками ''interchunk'') вместо отдельных правил для <code>nom verb</code>, <code>adj nom verb</code>, <code>det adj nom verb</code>, и тд. <br />
<br />
Очень важно помнить о том, что блоки (chunks) не могут быть вложенными (т.е. блок не может содержать другой блок). В определенных обстоятельствах, и при определенном усилии они могут быть сведены к интерблоку interchunk &mdash; например, можно присоединить одну или несколько однородных именных словосочетаний, но не вложить их друг в друга.<br />
<br />
Важно отметить, что лексические формы переводятся на язык перевода в первом модуле; последующие модули работают с лексическими формами уже на языке перевода.<br />
<br />
====Процессы между блоками (Interchunk)====<br />
<br />
Как только созданы эти блоки, следующий модуль ''между блоками'' помогает проводить операции между блоками так, как будто они являются лексическими единицами: блоки используются на уровне абстракции, таким образом эквивалентные слова и фразы также могут переводиться с использованием одинаковых для них правил.<br />
<br />
Этот модуль позволяет распознавать лицо, а также согласовывать слов в роде, определять порядок слов &mdash; например, согласовывать глагол прошедшего времени с местоимением в предложении на чувашском языке. В русском предложении ''Я вчера читалa'', разделение на блоки привел бы к следующему результату:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><PD><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Формат блоков во многом похож на формат выделения лексических единиц, <code>^</code> указывает на начало, и <code>$</code> на конец. Разница в том, что блок может содержать внутри себя другие лексические единицы <code>{</code> и <code>}</code>.<br />
<br />
Лексические единицы, которые заключены внутри блока (между обозначениями <code>{</code> и <code>}</code>) не могут быть обработаны и изменены модулем "между блоками"; на данном этапе мы можем только работать и изменять элементы описания блока, которые находятся в области после <code>^</code> и перед первым <code>{</code>. Описание блока содержит лемму блока (как <code>pron</code> в предыдущем примере) и морфологические тэги блока (для <code>pron</code> это {{tag|SN><p1><mf><sg><nom}}). <br />
<br />
Эти тэги могут быть связаны с лексическими формами внутри блока: этим объясняются цифры {{tag|5}} и {{tag|7}} в лексических формах глагольного блока <code>verb</code>: они связаны с пятым и седьмым тэгами блока ({{tag|PD}} и {{tag|sg}}) и будут заменены на них в модуле "после разбивания на блоки".<br />
<br />
Модуль "между блоками" имеет правила для разных видов блоков: 'именные части речи' 'наречие' 'глагол', которые копируют лицо из первого блока "именные части речи" для имени в глагольном блоке, заменяя тэг 'PD'; в данном примере присваивая тэгу {{tag|p1}} (первое лицо) значение:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><p1><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Модуль "после разбивания на блоки" припишет этот тэг глаголу внутри блока.<br />
<br />
====После разбивания на блоки (Postchunk)====<br />
<br />
Модель "после разбивки на блоки" позволяет нам использовать результаты взаимодействия между блоками и еще раз поработать с контентом. <br />
<br />
Изменения, которые блоки претерпели после прохождения модуля "между блоками" будут применены к контенту блока: тэги, содержащие число, будут заменены на значение, соответствующее тэгу вне блока. Модуль ''после разбивания на блоки'' удаляет блоки ''лемма'' и тэги, и оставляет в качестве итогового продукта ряд лексических единиц.<br />
<br />
Модуль "после разбивания на блоки" может работать одновременно с одним блоком. В добавление к элементам <tt>clip</tt>, которые соотносятся с отдельными словами, содержащимися в блоке, есть также элемент <tt>clip</tt> под номером 0 (ноль), который позволяет получать информацию из леммы, которые может использоваться для получения информации "вне" блока (измененной в модуле "между блоками") для слов внутри. Также, так как число слов в блоке может быть разным, есть элемент, <tt>lu-count</tt>, которые подсчитывает количество слов в блоке, и, соответственно влияет на наши действия.<br />
<br />
==Практика==<br />
<br />
На практической части мы посмотрим, как происходит процесс переноса в три этапа в Apertium в паре татарский &mdash;киргизский, <code>apertium-tt-ky</code>, и затем, опишем правило переноса в рамках трех и более уровней. Поэтому перейдите к папке <code>apertium-tt-ky</code> и убедитесь, что данная языковая пара создана.<br />
<br />
===Знакомство с трех-этапным переносом===<br />
<br />
Мы переведем предложение ''Әхмәт тиз генә иске зур бер агачка йөгерә.'' с татарского на киргизский и проследим за процессом перевода на трех уровнях.<br />
<br />
====Вводные данные====<br />
<br />
Так как полный переводчик с татарского на киргизский еще не закончен, мы будем пользоваться некоторыми подготовленными вводными данными из пары татарский и башкирский.<br />
<br />
<pre><br />
$ cat input <br />
^Әхмәт<np><ant><m><nom>$ ^тиз<adv>$ ^гына<postadv>$ ^иске<adj>$ ^зур<adj>$ ^бер<det><ind>$ <br />
^агач<n><dat>$ ^йөгер<v><iv><pres><p3><sg>$^..<sent>$<br />
</pre><br />
<br />
====Разделение на блоки====<br />
<br />
Итог работы маркировщика части речи передается лексическому переносу, а потом идет первый уровень переноса:<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^a_a_d_n<SN><dat>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
Существует четыре правила, применяемые модулем переноса первого уровня: <br />
<br />
* <code>ПРАВИЛО: NP-ANT</code>: Данное правило соответствует антропониму (имя человека). Оно создает новый блок имен {{tag|SN}}.<br />
* <code>ПРАВИЛО: ADV POSTADV</code>: Это правило соответствует ряду наречий и прилагательных, оно создает блок наречий {{tag|ADV}} который содержит две лексические единицы.<br />
* <code>ПРАВИЛО: ADJ ADJ DET NOM</code>: Данное правило соответствует набору из двух прилагательных, артикля и существительного. Они помещаются внутрь блока имен {{tag|SN}} и падеж блока соответствует падежу существительного. Данное существительное имеет специальный показатель {{tag|2}} на случай, если изменяется падеж блока, он копируется внутри. <br />
* <code>ПРАВИЛО: V-PRES</code>: Это правило стандартного глагола настоящего времени, оно соответствует любому глаголу в настоящем времени. В настоящем примере оно изменяет синтетическое настоящее время в татарском на продолженное настоящее время со вспомогательном глаголом в киргизском '''ПОЧЕМУ??'''<br />
<br />
Обратите внимание, что после первой стадии переноса появляется несколько проблем. Грамматическое время правильное, но падеж существительного неверен, и обстоятельство не на месте. В киргизском языке оно должно стоять перед глаголом.<br />
<br />
====Между блоками====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^a_a_d_n<SN><acc>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^post<POST>{^көздөй<post>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
В модуле "между блоками" применяется одно правило:<br />
<br />
* <code>ПРАВИЛО: ADV SN V</code>: Правило соответствует блоку обстоятельства (<code>ADV</code>), за которым следует блок имен (<code>SN</code>) а потом глагольный блок (<code>V</code>). Оно содержит макроэлемент <code>conv_arg1</code>, который настраивает падеж блока имен и предлагает послеслог в зависимости от леммы глагольного блока. Оно также меняет местоположения субстантивного блока и блока обстоятельств, помещая второй перед глаголом.<br />
<br />
Мы можем видеть, что в результате работы модуля "между блоками", обстоятельство было передвинуто и субстантивный блок стоит в правильном падеже с послеслогом.<br />
<br />
====После разбивания на блоки====<br />
<br />
Последний модуль переноса использует результат работы модуля "между блоками", и заменяет связанный тэг (e.g. {{tag|2}}) на значение из блока.<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin <br />
<br />
^Акмат<np><ant><m><nom>$ ^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><acc>$ ^көздөй<post>$ ^катуу<adv>$ <br />
^гана<postadv>$ ^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$^..<sent>$<br />
<br />
</pre><br />
<br />
Теперь предложение готово к морфологическому построению. Папка <code>tr-ky.autogen.hfst</code> может быть скопирована из пары <code>apertium-tr-ky</code> в <code>trunk/</code>.<br />
<br />
====Итог====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin |\<br />
hfst-proc -g tr-ky.autogen.hfst <br />
<br />
Акмат эски чоң бир даракты көздөй катуу гана чуркап бара жатат.<br />
</pre><br />
<br />
===Описание правила многоступенчатого переноса===<br />
<br />
При создании правила многоступенчатого переноса очень важно понять как разбить правило между разными ступенями переноса. Например, перестановки (на уровне слов 1&mdash;5) наверное следует провести на первой ступени. Блоки должны быть в какой-то степени тематическими, например, спрягаемые глаголы не должны группироваться с прилагательными и существительными.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Документы по общедоступному поверхностному машинному переводу на базе платформы Apertium / Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 6]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_6&diff=31474Курсы машинного перевода для языков России/Раздел 62012-01-17T20:02:34Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Системы базового структурного переноса, описанного в [[Машинный перевод для языков России/Раздел 5|session 5]] достаточно для работы с большинством расхождений, которые имеются в родственных языках (например, башкирский и татарский, финский и квен), при работе с языками, которые имеют больше морфологических и синтаксических расхождений необходимо использовать более мощную систему структурного переноса. В данном разделе мы познакомим вас с системой уровня Apertium 3+, которая была разработана для работы с более длинными шаблонами и языками, которые сильнее отличаются друг от друга.<br />
<br />
==Теория==<br />
<br />
===Перенос c помощью разбивки на блоки (Chunking-based transfer)===<br />
Обычное применение данного метода состоит из трех модулей: разбивание на блоки (chunker), процессы между блоками (interchunk) и после разбивки на блоки (postchunk). При необходимости данная модель может быть расширена до двух и более модулей intertchunk.<br />
<br />
====Разбивание на блоки (Chunker)====<br />
<br />
Идея ''разбивания на блоки (chunker)'' - расширить существующие правила переноса для группировки ряда лексических единиц. Эти группы называются ''блоки (chunks)'' . Блоки могут объединять именные части речи, делать согласование, вставлять и удалять слова, и выполнять местную перестановку слов, например,<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе !! Пример<br />
|-<br />
| <code>nom</code> || ҫурт || <code>SN{nom}</code> || дом <br />
|-<br />
| <code>adj nom</code> || хитре ҫурт || <code>SN{nom adj}</code> || красивый дом<br />
|-<br />
| <code>nom</code> || ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫурт || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>num nom</code> || икĕ ҫурт || <code>SN{num nom}</code> || два дома<br />
|-<br />
| <code>num nom</code> || пилĕ ҫурт || <code>SN{num nom}</code> || пять домов<br />
|-<br />
| <code>adj nom</code> || хитре ҫуртсем || <code>SN{adj nom}</code> || красивые домы<br />
|-<br />
| <code>adv adj nom</code> || питĕ хитре ҫурт || <code>SN{adv adj nom}</code> || очень красивый дом<br />
|-<br />
| <code>num adv adj nom</code> || пилĕ питĕ хитре ҫурт || <code>SN{num adv adj nom}</code> || пять очень красивых домов <br />
|-<br />
|}<br />
<br />
Где <code>nom</code> = существительное, <code>adj</code> = прилагательное, <code>num</code> = числительное, <code>det</code> = артикль, <code>SN</code> = именная конструкция.<br />
<br />
Такой же процесс и для формирования глагольных блоков chunks:<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе Output chunk !! Пример<br />
|- <br />
| <code>verb</code> || вулать || <code>V{verb}</code> || читает<br />
|-<br />
| <code>verb</code> || вуламасть || <code>V{neg_adv verb}</code> || не читает<br />
|-<br />
| <code>verb</code> || вуларĕ || <code>V{verb}</code> || читал<br />
|-<br />
| <code>verb</code> || вуламĕ || <code>V{aux inf}</code> || будет читать<br />
|-<br />
| <code>verb</code> || вуламарĕ || <code>V{neg_adv aux inf}</code> || не будет читать<br />
|-<br />
| <code>verb</code> || вуласшăн || <code>V{aux part inf}</code> || хотел бы говорить<br />
|-<br />
| <code>verb</code> || вулӑттӑм || <code>V{verb part}</code> || говорил бы<br />
|-<br />
| <code>adv verb</code> || ан вула ! || <code>V{adv verb}</code> || не читай !<br />
|-<br />
| <code>ger verb</code> || вулама пуçлать || <code>V{verb inf}</code> || начинает читать.<br />
|-<br />
|}<br />
<br />
Таким образом, если мы хотим согласовать именное словосочетание с основным глаголом, мы только можем использовать одно правило (для <code>SN V</code>) во втором модуле переноса (процесс между блоками ''interchunk'') вместо отдельных правил для <code>nom verb</code>, <code>adj nom verb</code>, <code>det adj nom verb</code>, и тд. <br />
<br />
Очень важно помнить о том, что блоки (chunks) не могут быть вложенными (т.е. блок не может содержать другой блок). В определенных обстоятельствах, и при определенном усилии они могут быть сведены к интерблоку interchunk &mdash; например, можно присоединить одну или несколько однородных именных словосочетаний, но не вложить их друг в друга.<br />
<br />
Важно отметить, что лексические формы переводятся на язык перевода в первом модуле; последующие модули работают с лексическими формами уже на языке перевода.<br />
<br />
====Процессы между блоками (Interchunk)====<br />
<br />
Как только созданы эти блоки, следующий модуль ''между блоками'' помогает проводить операции между блоками так, как будто они являются лексическими единицами: блоки используются на уровне абстракции, таким образом эквивалентные слова и фразы также могут переводиться с использованием одинаковых для них правил.<br />
<br />
Этот модуль позволяет распознавать лицо, а также согласовывать слов в роде, определять порядок слов &mdash; например, согласовывать глагол прошедшего времени с местоимением в предложении на чувашском языке. В русском предложении ''Я вчера читалa'', разделение на блоки привел бы к следующему результату:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><PD><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Формат блоков во многом похож на формат выделения лексических единиц, <code>^</code> указывает на начало, и <code>$</code> на конец. Разница в том, что блок может содержать внутри себя другие лексические единицы <code>{</code> и <code>}</code>.<br />
<br />
Лексические единицы, которые заключены внутри блока (между обозначениями <code>{</code> и <code>}</code>) не могут быть обработаны и изменены модулем "между блоками"; на данном этапе мы можем только работать и изменять элементы описания блока, которые находятся в области после <code>^</code> и перед первым <code>{</code>. Описание блока содержит лемму блока (как <code>pron</code> в предыдущем примере) и морфологические тэги блока (для <code>pron</code> это {{tag|SN><p1><mf><sg><nom}}). <br />
<br />
Эти тэги могут быть связаны с лексическими формами внутри блока: этим объясняются цифры {{tag|5}} и {{tag|7}} в лексических формах глагольного блока <code>verb</code>: они связаны с пятым и седьмым тэгами блока ({{tag|PD}} и {{tag|sg}}) и будут заменены на них в модуле "после разбивания на блоки".<br />
<br />
Модуль "между блоками" имеет правила для разных видов блоков: 'именные части речи' 'наречие' 'глагол', которые копируют лицо из первого блока "именные части речи" для имени в глагольном блоке, заменяя тэг 'PD'; в данном примере присваивая тэгу {{tag|p1}} (первое лицо) значение:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><p1><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Модуль "после разбивания на блоки" припишет этот тэг глаголу внутри блока.<br />
<br />
====После разбивания на блоки (Postchunk)====<br />
<br />
Модель "после разбивки на блоки" позволяет нам использовать результаты взаимодействия между блоками и еще раз поработать с контентом. <br />
<br />
Изменения, которые блоки претерпели после прохождения модуля "между блоками" будут применены к контенту блока: тэги, содержащие число, будут заменены на значение, соответствующее тэгу вне блока. Модуль ''после разбивания на блоки'' удаляет блоки ''лемма'' и тэги, и оставляет в качестве итогового продукта ряд лексических единиц.<br />
<br />
Модуль "после разбивания на блоки" может работать одновременно с одним блоком. В добавление к элементам <tt>clip</tt>, которые соотносятся с отдельными словами, содержащимися в блоке, есть также элемент <tt>clip</tt> под номером 0 (ноль), который позволяет получать информацию из леммы, которые может использоваться для получения информации "вне" блока (измененной в модуле "между блоками") для слов внутри. Также, так как число слов в блоке может быть разным, есть элемент, <tt>lu-count</tt>, которые подсчитывает количество слов в блоке, и, соответственно влияет на наши действия.<br />
<br />
==Практика==<br />
<br />
На практической части мы посмотрим, как происходит процесс переноса в три этапа в Apertium в паре татарский &mdash;киргизский, <code>apertium-tt-ky</code>, и затем, опишем правило переноса в рамках трех и более уровней. Поэтому перейдите к папке <code>apertium-tt-ky</code> и убедитесь, что данная языковая пара создана.<br />
<br />
===Знакомство с трех-этапным переносом===<br />
<br />
Мы переведем предложение ''Әхмәт тиз генә иске зур бер агачка йөгерә.'' с татарского на киргизский и проследим за процессом перевода на трех уровнях.<br />
<br />
====Вводные данные====<br />
<br />
Так как полный переводчик с татарского на киргизский еще не закончен, мы будем пользоваться некоторыми подготовленными вводными данными из пары татарский и башкирский.<br />
<br />
<pre><br />
$ cat input <br />
^Әхмәт<np><ant><m><nom>$ ^тиз<adv>$ ^гына<postadv>$ ^иске<adj>$ ^зур<adj>$ ^бер<det><ind>$ <br />
^агач<n><dat>$ ^йөгер<v><iv><pres><p3><sg>$^..<sent>$<br />
</pre><br />
<br />
====Разделение на блоки====<br />
<br />
Итог работы маркировщика части речи передается лексическому переносу, а потом идет первый уровень переноса:<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^a_a_d_n<SN><dat>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
Существует четыре правила, применяемые модулем переноса первого уровня: <br />
<br />
* <code>ПРАВИЛО: NP-ANT</code>: Данное правило соответствует антропониму (имя человека). Оно создает новый блок имен {{tag|SN}}.<br />
* <code>ПРАВИЛО: ADV POSTADV</code>: Это правило соответствует ряду наречий и прилагательных, оно создает блок наречий {{tag|ADV}} который содержит две лексические единицы.<br />
* <code>ПРАВИЛО: ADJ ADJ DET NOM</code>: Данное правило соответствует набору из двух прилагательных, артикля и существительного. Они помещаются внутрь блока имен {{tag|SN}} и падеж блока соответствует падежу существительного. Данное существительное имеет специальный показатель {{tag|2}} на случай, если изменяется падеж блока, он копируется внутри. <br />
* <code>ПРАВИЛО: V-PRES</code>: Это правило стандартного глагола настоящего времени, оно соответствует любому глаголу в настоящем времени. В настоящем примере оно изменяет синтетическое настоящее время в татарском на продолженное настоящее время со вспомогательном глаголом в киргизском '''ПОЧЕМУ??'''<br />
<br />
Обратите внимание, что после первой стадии переноса появляется несколько проблем. Грамматическое время правильное, но падеж существительного неверен, и обстоятельство не на месте. В киргизском языке оно должно стоять перед глаголом.<br />
<br />
====Между блоками====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^a_a_d_n<SN><acc>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^post<POST>{^көздөй<post>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
В модуле "между блоками" применяется одно правило:<br />
<br />
* <code>ПРАВИЛО: ADV SN V</code>: Правило соответствует блоку обстоятельства (<code>ADV</code>), за которым следует блок имен (<code>SN</code>) а потом глагольный блок (<code>V</code>). Оно содержит макроэлемент <code>conv_arg1</code>, который настраивает падеж блока имен и предлагает послеслог в зависимости от леммы глагольного блока. Оно также меняет местоположения субстантивного блока и блока обстоятельств, помещая второй перед глаголом.<br />
<br />
Мы можем видеть, что в результате работы модуля "между блоками", обстоятельство было передвинуто и субстантивный блок стоит в правильном падеже с послеслогом.<br />
<br />
====После разбивания на блоки====<br />
<br />
Последний модуль переноса использует результат работы модуля "между блоками", и заменяет связанный тэг (e.g. {{tag|2}}) на значение из блока.<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin <br />
<br />
^Акмат<np><ant><m><nom>$ ^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><acc>$ ^көздөй<post>$ ^катуу<adv>$ <br />
^гана<postadv>$ ^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$^..<sent>$<br />
<br />
</pre><br />
<br />
Теперь предложение готово к морфологическому построению. Папка <code>tr-ky.autogen.hfst</code> может быть скопирована из пары <code>apertium-tr-ky</code> в <code>trunk/</code>.<br />
<br />
====Итог====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin |\<br />
hfst-proc -g tr-ky.autogen.hfst <br />
<br />
Акмат эски чоң бир даракты көздөй катуу гана чуркап бара жатат.<br />
</pre><br />
<br />
===Описание правила многоступенчатого переноса===<br />
<br />
При создании правила многоступенчатого переноса очень важно понять как разбить правило между разными ступенями переноса. Например, перестановки (на уровне слов 1&mdash;5) наверное следует провести на первой ступени. Блоки должны быть в какой-то степени тематическими, например, спрягаемые глаголы не должны группироваться с прилагательными и существительными.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 6]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_6&diff=31473Курсы машинного перевода для языков России/Раздел 62012-01-17T18:52:13Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Системы базового структурного переноса, описанного в [[Машинный перевод для языков России/Раздел 5|session 5]] достаточно для работы с большинством расхождений, которые имеются в родственных языках (например, башкирский и татарский, финский и квен), при работе с языками, которые имеют больше морфологических и синтаксических расхождений необходимо использовать более мощную систему структурного переноса. В данном разделе мы познакомим вас с системой уровня Apertium 3+, которая была разработана для работы с более длинными шаблонами и языками, которые сильнее отличаются друг от друга.<br />
<br />
==Теория==<br />
<br />
===Перенос c помощью разбивки на блоки (Chunking-based transfer)===<br />
Обычное применение данного метода состоит из трех модулей: разбивание на блоки (chunker), процессы между блоками (interchunk) и после разбивки на блоки (postchunk). При необходимости данная модель может быть расширена до двух и более модулей intertchunk.<br />
<br />
====Разбивание на блоки (Chunker)====<br />
<br />
Идея ''разбивания на блоки (chunker)'' - расширить существующие правила переноса для группировки ряда лексических единиц. Эти группы называются ''блоки (chunks)'' . Блоки могут объединять именные части речи, делать согласование, вставлять и удалять слова, и выполнять местную перестановку слов, например,<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе !! Пример<br />
|-<br />
| <code>nom</code> || ҫурт || <code>SN{nom}</code> || дом <br />
|-<br />
| <code>adj nom</code> || хитре ҫурт || <code>SN{nom adj}</code> || красивый дом<br />
|-<br />
| <code>nom</code> || ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫурт || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>det nom</code> || манăн ҫуртӑм || <code>SN{det nom}</code> || мой дом<br />
|-<br />
| <code>num nom</code> || икĕ ҫурт || <code>SN{num nom}</code> || два дома<br />
|-<br />
| <code>num nom</code> || пилĕ ҫурт || <code>SN{num nom}</code> || пять домов<br />
|-<br />
| <code>adj nom</code> || хитре ҫуртсем || <code>SN{adj nom}</code> || красивые домы<br />
|-<br />
| <code>adv adj nom</code> || питĕ хитре ҫурт || <code>SN{adv adj nom}</code> || очень красивый дом<br />
|-<br />
| <code>num adv adj nom</code> || пилĕ питĕ хитре ҫурт || <code>SN{num adv adj nom}</code> || пять очень красивых домов <br />
|-<br />
|}<br />
<br />
Где <code>nom</code> = существительное, <code>adj</code> = прилагательное, <code>num</code> = числительное, <code>det</code> = артикль, <code>SN</code> = именная конструкция.<br />
<br />
Такой же процесс и для формирования глагольных блоков chunks:<br />
<br />
{|class=wikitable<br />
|-<br />
! Входной шаблон !! Пример !! Блок на выходе Output chunk !! Пример<br />
|- <br />
| <code>verb</code> || вулать || <code>V{verb}</code> || читает<br />
|-<br />
| <code>verb</code> || вуламасть || <code>V{neg_adv verb}</code> || не читает<br />
|-<br />
| <code>verb</code> || вуларĕ || <code>V{verb}</code> || читал<br />
|-<br />
| <code>verb</code> || вуламĕ || <code>V{aux inf}</code> || будет читать<br />
|-<br />
| <code>verb</code> || вуламарĕ || <code>V{neg_adv aux inf}</code> || не будет читать<br />
|-<br />
| <code>verb</code> || вуласшăн || <code>V{aux part inf}</code> || хотел бы говорить<br />
|-<br />
| <code>verb</code> || вулӑттӑм || <code>V{verb part}</code> || говорил бы<br />
|-<br />
| <code>adv verb</code> || ан вула ! || <code>V{adv verb}</code> || не читай !<br />
|-<br />
| <code>ger verb</code> || вулама пуçлать || <code>V{verb inf}</code> || начинает читать.<br />
|-<br />
|}<br />
<br />
Таким образом, если мы хотим согласовать именное словосочетание с основным глаголом, мы только можем использовать одно правило (для <code>SN V</code>) во втором модуле переноса (процесс между блоками ''interchunk'') вместо отдельных правил для <code>nom verb</code>, <code>adj nom verb</code>, <code>det adj nom verb</code>, и тд. <br />
<br />
Очень важно помнить о том, что блоки (chunks) не могут быть вложенными (т.е. блок сhunk не может содержать другой блок chunk). В определенных обстоятельствах, и при определенном усилии они могут быть сведены к интерблоку interchunk &mdash; например, можно присоединить одну или несколько однородных именных словосочетаний, но не вложить их друг в друга.<br />
<br />
Важно отметить, что лексические формы переводятся на язык перевода в первом модуле; последующие модули работают с лексическими формами уже на языке перевода.<br />
<br />
====Процессы между блоками (Interchunk)====<br />
<br />
Как только созданы эти блоки, следующий модуль ''между блоками'' помогает проводить операции между блоками так, как будто они являются лексическими единицами: блоки используются на уровне абстракции, таким образом эквивалентные слова и фразы также могут переводиться с использованием одинаковых для них правил.<br />
<br />
Этот модуль позволяет распознавать лицо, а также проводить согласование в роде, и определении порядка слов &mdash; например, согласовывать глагол прошедшего времени с местоимением в предложении на чувашском языке. В русском предложении ''Я вчера читалa'', разделитель на блоки привел бы к следующему результату the chunker would give the following output:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><PD><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Формат блоков chunks во многом похож на формат выделения лексических единиц, <code>^</code> указывает на начало, и <code>$</code> на конец. Разница в том, что блок может содержать внутри себя другие лексические единицы <code>{</code> и <code>}</code>.<br />
<br />
Лексические единицы, которые заключены внутри блока (между обозначениями <code>{</code> и <code>}</code>) не могут быть обработаны и изменены модулем interchunk; на данном этапе мы можете только работать и изменять элементы описания блока chunk, которые находятся после <code>^</code> и перед первым <code>{</code>. Описание блока содержит лемму блока (как <code>pron</code> в предыдущем примере) и морфологические тэги блока (для <code>pron</code> это {{tag|SN><p1><mf><sg><nom}}). <br />
<br />
Эти тэги могут быть связаны с лексическими формами внутри блока: этим объясняются цифры {{tag|5}} и {{tag|7}} в лексических формах блока <code>verb</code>: они связаны с пятым и седьмым тэгами блока ({{tag|PD}} и {{tag|sg}}) и будут заменены на них в модуле postchunk.<br />
<br />
Interchunk имеет правило для разных блоков 'имя' 'прилагательное' 'глагол', которые копируют лицо из первого блока для имени в блок для глагола, заменяя тэг 'PD'; в данном примере присваивая тегу {{tag|p1}} (первое лицо) значение:<br />
<br />
<pre><br />
^pron<SN><p1><mf><sg><nom>{^Эпĕ<prn><pers><2><3><4><5>$}$ <br />
^adv<ADV>{^ĕнер<adv>$}$<br />
^verb<SV><imperf><tv><evid><p1><f><sg>{^вула<v><3><4><5><7>$}$ <br />
</pre><br />
<br />
Модуль постфрагментирования припишет этот тэг глаголу внутри блока.<br />
<br />
====Постфрагментирование Postchunk====<br />
<br />
Postchunk позволяет нам использовать результаты межчленения interchunk и еще раз поработать с контентом. <br />
<br />
Изменения, которые блоки претерпели после прохождения модуля interchunk будут применены к контенту блока: тэги, содержащие число будут заменены на значение, соответствующее тэгу вне блока. Модуль ''postchunk'' удаляет блоки ''лемма'' и тэги, и оставляет в качестве итогового продукта ряд лексических единиц.<br />
<br />
Процесс Postchunk может работать одновременно с одним блоком. В добавление к элементам <tt>clip</tt> которые соотносятся с индивидуальными словами, содержащимися в блоке, есть также элемент <tt>clip</tt> под номером 0 (ноль), который позволяет получать информацию из леммы блокаhich allows us to access information from the chunk lemma, which can be used to take information from "outside" the chunk (changed in interchunk) to the words inside. Also, because the number of words in a chunk may vary, there is an element, <tt>lu-count</tt>, which allows us to test how many words the chunk contains, and act accordingly.<br />
<br />
==Практика==<br />
<br />
На практической части мы посмотрим, как происходит процесс переноса в три этапа в Apertium в паре татарский &mdash;киргизский, <code>apertium-tt-ky</code>, и затем, опишем правило переноса в рамках трех и более уровней. Поэтому перейдите к разделу <code>apertium-tt-ky</code> и убедитесь что данная пара языков создана.<br />
<br />
===Знакомство с трех-этапным переносом===<br />
<br />
Мы переведем предложение ''Әхмәт тиз генә иске зур бер агачка йөгерә.'' с татарского на киргизский и проследим за процессом перевода на трех уровнях.<br />
<br />
====Вводные данные====<br />
<br />
Так как полный переводчик с татарского на киргизский еще не закончен, мы будем пользоваться некоторыми подготовленными вводными данными из пары татарский и башкирский.<br />
<br />
<pre><br />
$ cat input <br />
^Әхмәт<np><ant><m><nom>$ ^тиз<adv>$ ^гына<postadv>$ ^иске<adj>$ ^зур<adj>$ ^бер<det><ind>$ <br />
^агач<n><dat>$ ^йөгер<v><iv><pres><p3><sg>$^..<sent>$<br />
</pre><br />
<br />
====Chunker====<br />
<br />
Затем результат маркировщика части речи передается лексическому переносу, а потом первый уровень переноса ре output of the part-of-speech tagger is passed to the lexical transfer, and then the first level of transfer:<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^a_a_d_n<SN><dat>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
Существует четыре правила, созданные модулем переноса первого уровня There are four rules applied by the first-level transfer module:<br />
<br />
* <code>ПРАВИЛО: NP-ANT</code>: Данное правило соответствует антропониму (имя человека). Оно создает новый блок имен {{tag|SN}}.<br />
* <code>ПРАВИЛО: ADV POSTADV</code>: Это правило соответствует ряду наречия и прилагательного, оно создает блок наречий {{tag|ADV}} который содержит две лексические единицы.<br />
* <code>ПРАВИЛО: ADJ ADJ DET NOM</code>: Данное правило соответствует набору из двух прилагательных, артикля и существительного. Они помещаются внутрь блока имен {{tag|SN}} и падеж блока соответствует падежу существительного. Данное существительное имеет специальный показатель {{tag|2}} на случай, если изменяется падеж блока, он копируется внутри. <br />
* <code>ПРАВИЛО: V-PRES</code>: Это правило стандартного глагола настоящего времени, оно соответствует любому глаголу в настоящем времени. В настоящем примере оно изменяет синтетическое настоящее время в татарском на продолженное настоящее время со вспомогательном глаголом в киргизском '''ПОЧЕМУ??'''<br />
<br />
Обратите внимание, что после первой стадии переноса появляется несколько проблем. Грамматическое время правильное, но падеж существительного неверен, и обстоятельство не на месте. В киргизском языке оно должно стоять перед глаголом.<br />
<br />
====Interchunk====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin <br />
<br />
^ant<SN>{^Акмат<np><ant><m><nom>$}$ ^a_a_d_n<SN><acc>{^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><2>$}$ <br />
^post<POST>{^көздөй<post>$}$ ^adv<ADV>{^катуу<adv>$ ^гана<postadv>$}$ <br />
^чурка<V>{^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$}$^sent<SENT>{^..<sent>$}$<br />
</pre><br />
<br />
В модуле interchunk применяется одно правило:<br />
<br />
* <code>ПРАВИЛО: ADV SN V</code>: Правило соответствует блоку обстоятельства (<code>ADV</code>) за которым следует блок имен (<code>SN</code>) а потом глагольный блок (<code>V</code>). Он содержит макроэлемент <code>conv_arg1</code> который настраивает падеж субстантивного блока и предлагает послеслог в зависимости от леммы глагольного блока. Оно также меняет местоположения субстантивного блока и блока обстоятельства, помещая второй перед глаголом.<br />
<br />
Мы можем видеть, что по результатам работы модуля interchunk, обстоятельство было передвинуто и субстантивный блок стоит в правильно падеже с послеслогом.<br />
<br />
====Postchunk====<br />
<br />
Последний модуль переноса использует результат работы модуля interchunk, и заменяет связанный тэг (e.g. {{tag|2}}) на значение из блока.<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin <br />
<br />
^Акмат<np><ant><m><nom>$ ^эски<adj><pst>$ ^чоң<adj><pst>$ ^бир<det><ind>$ ^дарак<n><acc>$ ^көздөй<post>$ ^катуу<adv>$ <br />
^гана<postadv>$ ^чурка<v><iv><prt_perf>$ ^бар<v><iv><prt_impf>$ ^жат<vaux><aor><p3><sg>$^..<sent>$<br />
<br />
</pre><br />
<br />
Теперь предложение готово к морфологическому построению. Папка <code>tr-ky.autogen.hfst</code> может быть скопирована из пары <code>apertium-tr-ky</code> в <code>trunk/</code>.<br />
<br />
====Результат Output====<br />
<br />
<pre><br />
$ cat input | lt-proc -b tt-ky.autobil.bin | apertium-transfer -b apertium-tt-ky.tt-ky.t1x tt-ky.t1x.bin |\<br />
apertium-interchunk apertium-tt-ky.tt-ky.t2x tt-ky.t2x.bin | apertium-postchunk apertium-tt-ky.tt-ky.t3x tt-ky.t3x.bin |\<br />
hfst-proc -g tr-ky.autogen.hfst <br />
<br />
Акмат эски чоң бир даракты көздөй катуу гана чуркап бара жатат.<br />
</pre><br />
<br />
===Описание правила многоступенчатого переноса===<br />
<br />
При создании правила многоступенчатого переноса очень важно понять как разбить правило между разными ступенями переноса. Например, перестановки (на уровне слов 1&mdash;5) наверное следует провести на первой ступени. Блоки должны быть в какой-то степени тематическими, например, спрягаемые глаголы не должны группироваться с прилагательными и субстанотивом.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 6]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_5&diff=31472Курсы машинного перевода для языков России/Раздел 52012-01-17T18:12:10Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела познакомить с понятием сопоставительного морфологического и синтаксического анализов, и показать как основные (т.е. одноуровневые) правила морфологической и синтаксической передачи могут создаваться в Apertium.<br />
<br />
==Теория==<br />
<br />
===Сопоставительный анализ===<br />
<br />
Сопоставительный анализ подразумевает анализ и сравнение двух языков с целью обнаружения их общих и отличительных характеристик. При работе над неглубоким машинным переводом мы можем рассмотреть, например, как морфологические так и синтаксические различия. <br />
<br />
====Морфологические различия====<br />
<br />
Морфологические различия - это различия между морфологическими характеристикам двух языков. Например, если в одном языке категория определенности выражена морфологически, а в другом нет, или одни язык имеет категорию падежа и рода, а другой нет. Или когда инструменты выражения падежа/рода отличаются между языками. Примеры: <br />
<br />
* В казахском языке нет грамматического рода, а в русском их три (мужской, женский, средний). Род в русском языке играет роль при согласовании внутри словосочетания с существительным<br />
** ''Жаңа әуежай''{{slc|kk}} → ''Новый аэропорт''{{slc|ru}}<br />
* В русском языке два вида числа (единственное и множественное), а в мансийском три (единственное, двойственное и множественное).<br />
** ''Я читаю эту книгу''{{slc|ru}} → ''Ам ти книга ловиньтилум''{{slc|mns}}<br />
** ''Я читаю эти две книги''{{slc|ru}} → ''Ам ти книгаг ловиньтиягум''{{slc|mns}}<br />
** ''Я читаю эти книги''{{slc|ru}} → ''Ам ти книгат ловиньтиянум''{{slc|mns}}<br />
* Венгерский содержит огромное количество падежей, которых нет в финском (например, временный падеж ''-kor'', который на финский может быть переведен творительным аблативом, адессивом или эссивом изобразительный палеж ablative, adessive, or essive). В венгерском и финском языках падеж не играет роли при согласовании в словосочетании с существительным.<br />
** ''Ötkor''{{slc|hu}} → ''Viideltä''{{slc|fi}} <!-- "at five", Abl --><br />
** ''Éjfélkor''{{slc|hu}} → ''Keskiyöllä''{{slc|fi}} <!-- "at midnight", Ade --><br />
** ''Karácsonykor''{{slc|hu}} → ''Jouluna''{{slc|fi}} <!-- "at christmas", Ess --><br />
<br />
====Синтаксические различия====<br />
<br />
Синтаксические различия наблюдаются в том, как устроена синтаксическая система разных языков, например, наличие или отсутствие артиклей, порядок слабых местоимений (clitic), количество падежей, аналитические временные формы глаголов, употребление личных местоимений и тд. <br />
<br />
* Например в абхазском языке есть примыкающий сзади (postfixed) неопределенный артикль, и прикрепленный спереди (prefixed) определенный артикль, а в русском нет.<br />
** ''Сара кьыла'''к''' акәац аасхәоит''{{slc|ab}} → ''Я покупаю килограмм мяса''{{slc|ru}}<br />
** ''Иара '''а'''мшын ахь дцоит.''{{slc|ab}} → ''Он идёт в море.''{{slc|ru}} <!-- he is going to the sea --><br />
* В русском языке обязательно употребление личного местоимения в качестве подлежащего, а в венгерском нет,<br />
** ''Я сплю.''{{slc|ru}} → ''Alszom.''{{slc|hu}}<br />
* В чувашском используется аблятив, а в русском используется предлог и другой падеж.<br />
** ''Я получил письмо от друга.''{{slc|ru}} → ''Юлташран ҫыру илтӗм.''{{slc|cv}}<br />
<!-- * В испанском слабые местоимения (clitic) употребляются после инфинитива, а во французском перед ним.<br />
** ''Voy a enviárselos.''{{slc|es}} → ''Je vais lui les envoyer.''{{slc|fr}} --><br />
<br />
===Перенос===<br />
<br />
Перенос - это процесс преобразования промежуточной репрезентации языка-источника в язык перевода. В системе Apertium, перенос воздействует на промежуточную репрезентацию лемм и тэгов, определяющих морфологические характеристики (лексические формы).<br />
<br />
====Базовые операции====<br />
<br />
Когда вы начинаете применять правила переноса, стоит разложить их на самые базовые действия. <br />
<br />
;A) Вставка<br />
<br />
Вставка - это добавление нового тэга или слова, например, при переводе существительного с дунганского на русский язык, необходимо вставить тэг, указывающий на падеж (именительный, винительный, ...), так как в дунганском языке отсутствует категория падежа. Очень часто в переводе требуется вставить слово. Например при переводе повелительного наклонения с турецкого на чувашский, необходимо вначале добавить наречие ''ан'': ''Yeme!'' → ''Ан çи!''.<br />
<br />
;B) Удаление<br />
<br />
Удаление - это операция, противоположная вставке, когда необходимо удалить слово или тэг, например, как в предыдущем примере, как только мы добавили наречие, необходимо убрать отрицание от последующего глагола, так как наречие передает отрицательное значение.<br />
<br />
;C) Замена <br />
<br />
Замена происходит, когда один тэг заменяется другим, например, когда изменяется род слова. Это часто применяется при лексическом переносе, о чем мы читали в первом разделе, но также часто происходит при передаче. Например, при переводе с русского на башкирский, ''мои брюки'', слово ''брюки'' будет помечено специальным тэгом <code>ND</code> (которое указывает в каком числе употребляется существительное) при лексическом переносе, и потом, согласно правилам переноса, при переводе число будет изменено.<br />
<br />
;D) Изменение порядка слов<br />
<br />
Изменение порядка слов или тэгов. Например, изменение порядка следования категорий числа и принадлежности при переводе с турецкого на чувашский ''kitap·lar·ım'' → ''кӗнеке·м·сем''. <br />
<br />
;E) Комбинированные операции<br />
<br />
Очень часто, для создания правила переноса требуется набор из всех вышеуказанных операций, например, при переводе с одного языка слова, стоящего в определенном падеже на язык, в котором, для передачи такого же значения требуется употребления предлога и падежа, необходимо провести две операции, во-первых, слово,выражающее предлог должно быть вставлено перед существительным, и затем необходимо изменить характеристику, определяющую падеж.<br />
<br />
===Cамое длинное соответствие с лева направо Left-to-right longest match (LRLM)===<br />
<br />
==Структурный перенос==<br />
<br />
Файлы, которые содержат правила переноса в Apertium выглядят следующим образом:<br />
<br />
<pre><br />
<transfer default="chunk"><br />
<section-def-cats><br />
<def-cat n="adj_or_pp"><br />
<cat-item tags="adj.*"><br />
<cat-item tags="vblex.pp.*"><br />
</def-cat><br />
...<br />
</section-def-cats><br />
<section-def-attrs><br />
<def-attr n="nbr"><br />
<attr-item n="sg"/><br />
<attr-item n="pl"/><br />
</def-attr><br />
...<br />
</section-def-attrs><br />
<section-def-vars><br />
<def-var n="number"/> <br />
...<br />
</section-def-vars><br />
<section-rules><br />
...<br />
</section-rules><br />
</transfer><br />
</pre><br />
<br />
Это минимальный расклад. Вот четыре секции: <br />
<br />
* {{tag|section-def-cats}}: Содержит одну или более {{tag|def-cat}} записей. Они определяют шаблоны, которые могут сопоставляться по правилами переноса, и могут соответствовать ряду тэгов или лемм. {{tag|def-cat}} Запись, приведенная выше для <code>adj_or_pp</code> соответствует любой лексической единице, где тэги начинаются с {{tag|adj}} или {{tag|vblex><pp}}. Это может быть полезно в случае, когда две части речи выглядят похоже (например, прилагательные и причастия прошедшего времени в испанском).<br />
* {{tag|section-def-attrs}}: Содержит одну или более {{tag|def-attr}} записей. Здесь перечислены возможные тэги, относящиеся к данной характеристике. В данном случае, такая характеристика как <code>nbr</code> "число" может быть выражено одним из двух тэгов {{tag|sg}} "единственное число" или {{tag|pl}} "множественное число". Когда мы используем тэг {{tag|clip}}, для извлечения <code>part</code>, это позволяет нам определить искомые установки (части), вдобавок к стандартным частям (установкам).<br />
* {{tag|section-def-vars}}: Содержит переменные определения. Они используются для передачи информации между правилами. Например, возможно мы хотим сохранить запись о роде или числе, которыми мы пользовались в последний раз, или о лемме последнего спрягаемого глагола.<br />
* {{tag|section-rules}}: Содержит правила.<br />
<br />
===Заранее заданные образцы===<br />
<br />
В добавление к частям, которые определены в <code>section-def-attrs</code>, модуль переноса определяет заранее заданный шаблон каждой лексической единицы.<br />
<br />
Для того чтобы понятнее продемонстрировать имеющиеся стандартные установки (части), давайте возьмем следующий пример: <br />
<br />
<pre><br />
^правило# по безопасности<n><nt><nn><pl>$<br />
</pre><br />
<br />
* <code>whole</code>: как видно из названия, оно дает полное содержание лексической единицы.<br />
* <code>lem</code>: лемма: в данном примере, <tt>правило# по безопасности</tt><br />
* <code>tags</code>: все тэги в одном месте: <tt><nowiki><n><nt><nn><pl></nowiki></tt><br />
* <code>lemh</code>: лемма ''главное слово''; часть словосочетания, которая изменяется: <tt>правило</tt><br />
* <code>lemq</code>: лемма ''очередь''; остальная часть словосочетания (the <code><nowiki><g></g></nowiki></code> part в словарях): <tt># по безопасности</tt><br />
<br />
==Практика==<br />
<br />
Для данной практической части, мы будем использовать языковую пару турецкий-чувашский в Apertium, мы можете выбрать другую пару с одно-уровневой передачей single-level transfer (например, татарский-башкирский). Итак, перейдите в директорию <code>apertium-cv-tr</code> и откройте папку с правилами передачи из турецкого языка на чувашский <code>apertium-cv-tr.tr-cv.t1x</code>, для других пар это может быть папка <code>.t1x</code>.<br />
<br />
===Описание правил переноса===<br />
<br />
Цель данного упражнения - описать как работает правило переноса на примере ввода предложения на турецком: ''Yeme!''. Сначала мы хотели бы дать предварительную информацию как структурируются правила переноса, затем посмотрим на реально существующее правило и опишем его. <br />
<br />
Правила переноса в системе Apertium сделаны из двух главных частей. Шаблон ''pattern'' &mdash; это ряд категорий, которые будут сопоставляться, и действие''action'', которое содержит операции, которые выполняются в сопоставленных образцах. Итоговая схема для правила может выглядеть соответственно:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
...<br />
</pattern><br />
<action><br />
...<br />
</action><br />
</rule><br />
</pre><br />
<br />
Значения тэгов, которые были использованы в вышеприведенных примерах, даны здесь, а также приведены ссылки на документацию с полным описанием.<br />
<br />
{|class=wikitable<br />
! Наименование !! Doc.&nbsp;ref. !! Описание <br />
|- <br />
| {{tag|rule}} || §3.5.4.18 || Задает новое правило, оно содержит на высшем уровне образец и действие.<br />
|-<br />
| {{tag|pattern}} || §3.5.4.19 || Содержит один или более <code>pattern-item</code> тэгов, которые определяют образцы лексических форм, которые должны быть сопоставлены.<br />
|-<br />
| {{tag|pattern-item}} || §3.5.4.20 || Содержит ссылки на шаблоны лексических форм, определенных в части <code>section-def-cats</code> файла с правилами.<br />
|-<br />
| {{tag|action}} || §3.5.4.21 || Содержит тэги, определяющие действия, которые должны быть после завершения сопоставления ряда лексических единиц.<br />
|-<br />
| {{tag|choose}} || §3.5.4.24 || Содержит одно или более <code>when</code> утверждений, которые определяют дальнейшие действия в зависимости от различных условий, и иногда <code>otherwise</code> утверждение, которое определяет стандартную процедуру, если ни одно из условий <code>when</code>s не подошло.<br />
|-<br />
| {{tag|when}} || §3.5.4.25 || Определяет условие и операцию, которая должна быть выполнена при выполнении данного условия. Условие в тэге <code>test</code>, а операция идет за ним.<br />
|-<br />
| {{tag|otherwise}} || §3.5.4.26 || Стандартное условие, подразумевающее действия, которые будут предприняты, если ни одно из условий <code>when</code> в блоке <code>choose</code> не подойдет.<br />
|-<br />
| {{tag|test}} || §3.5.4.27 || Описывает условие. Например "проверьте, в единственном ли числе стоит первый сопоставляемый образец". <br />
|-<br />
| {{tag|or}} || §3.5.4.28 || Тэг, разрешающий соответствие более, чем одному условию. Этот тэг [http://en.wikipedia.org/wiki/Logical_operator Boolean operator], другие доступные тэги логического значения: {{tag|and}} и {{tag|not}}<br />
|-<br />
| {{tag|equal}} || §3.5.4.28 || Проверяет, являются ли два условия или тэга аналогичными. <br />
|-<br />
| {{tag|clip}} || §3.5.4.29 || Выделяет часть лексической единицы, которая соответствует признаку, указанному в разделе <code>section-def-attrs</code> файла переноса. Часть, которая должна быть извлечена, указана определением <code>part</code>. <br />
|-<br />
| {{tag|lit-tag}} || §3.5.4.31 || Генерирует условие, входящее в {{tag|&nbsp;}}, то есть тэг.<br />
|-<br />
| {{tag|lit}} || §3.5.4.30 || Генерирует условие.<br />
|-<br />
| {{tag|out}} || §3.5.4.40 || Содержит всю информацию по итогам применения правила.<br />
|-<br />
| {{tag|lu}} || §3.5.4.41 || Включает контент в <code>^</code> и <code>$</code>, то есть определяет является ли контент лексической единицей.<br />
|-<br />
| {{tag|b}} || §3.5.4.46 || Выдает итог форматирования, содержащегося на данном этапе<br />
|-<br />
| {{tag|get-case-from}} || §3.5.4.34 || Преобразует падеж любого слова, включенного в него, в падеж слова, отмеченного признаком <code>pos</code>. <br />
|-<br />
|}<br />
<br />
Правило, которое мы хотели бы описать это <code>regla: v_neg_imp</code>, поэтому найдите его в файле. Вот как выглядит правило:<br />
<br />
<pre><br />
<br />
<rule comment="regla: v_neg_imp (yeme! → ан ҫи!)"><br />
<pattern><br />
<pattern-item n="v_neg_imp"/><br />
</pattern><br />
<action><br />
<let><br />
<clip pos="1" side="tl" part="a_neg"/><br />
<lit v=""/><br />
</let><br />
<out><br />
<lu><br />
<lit v="ан"/><br />
<lit-tag v="adv"/><br />
</lu><br />
<b/><br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
</out><br />
</action><br />
</rule><br />
<br />
</pre><br />
<br />
Образец для сопоставления определяется как:<br />
<br />
<pre><br />
<section-def-cats><br />
...<br />
<def-cat n="v_neg_imp"><br />
<cat-item tags="v.*.neg.imp.*"/><br />
</def-cat><br />
<br />
...<br />
</section-def-cats><br />
</pre><br />
<br />
====Описание====<br />
<br />
Итак, описав тэги и правила, мы можем сказать что правило это:<br />
<br />
* Данное правило соответствует ряду "vb_neg_imp"<br />
* Определен шаблон лексической формы "vb_neg_imp", в файле {{tag|section-def-cats}}, так как после тэга {{tag|v}} идет любой тэг (например {{tag|iv}} или {{tag|tv}}, после которого идут тэги {{tag|neg><imp}} и потом любые другие тэги.<br />
* Затем правило определяет, подходит ли часть лексической единицы заданному признаку <code>a_neg</code> или нет (если нет, то удаляет ее)<br />
* Правило выдает лемму "ан", после которой идет тэг {{tag|adv}} в единственной лексической единице (между <code>^</code> и <code>$</code>).<br />
* Затем правило оставляет пустое пространство<br />
* Затем правило выдает лексическую единицу с информацией от глагола, соответствующего изначальному шаблону.<br />
====Пример итога====<br />
<br />
;Ввод текста <br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob<br />
<br />
^ye<v><tv><neg><imp><p2><sg>$^!<sent>$^.<sent>$<br />
</pre><br />
<br />
;Результат после переноса<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
Если вы хотите отслеживать, какие правила сопоставляются, добавьте -t опцию к apertium-transfer:<br />
<br />
;Результат после переноса<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -t -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
apertium-transfer: Rule 3 ye<v><tv><neg><imp><p2><sg>/ҫи<v><tv><neg><imp><p2><sg><br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
===Описание нового правила переноса===<br />
<br />
Цель данной части практики - показать создание нового правила переноса. Переведите какой-нибудь текст при помощи выбранного вами переводчика и опишите новое правило на языке, как было сделано в предыдущем разделе. Если у вас останется время после описания правил на русском языке, попробуйте перевести его в формат XML.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Документы по общедоступному поверхностному машинном перевода платформы Apertium / Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Раздел 5]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_4&diff=31471Курсы машинного перевода для языков России/Раздел 42012-01-17T17:49:57Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела - описать процессы лексического переноса и лексического выбора. В теоретической части более подробно будет описано почему переносной словарь (или двуязычный словарь) это не всегда лишь соответствие между леммами/частями речи в одном языке и леммами/частями речи в другом языке. В практической части мы добавим три вида записи: один к одному, множество к одному, один к многим. <br />
<br />
==Теория==<br />
<br />
Существует два аспекта лексического переноса, первый - выбор наиболее подходящего перевода, второй - маркировка в записях тех особых характеристик, которые должны согласовываться с правилами переноса. Например, выбор наиболее подходящего русского перевода для чувашского слова ''тӳпе'', когда существует несколько вариантов переводов, включая ''вершина'', ''крыша'' и ''небо'' - это пример первого аспекта, а выбор единственного или множественного числа при переводе русского слова ''брюки'' на татарский (например ''чалбар'', ''чалбарлар'') - это пример второго аспекта перевода лексики.<br />
<br />
===Переводные эквиваленты===<br />
<br />
Простая модель перевода - это когда вы берете по очереди каждое слово из предложения на языке оригинала, находите переводной эквивалент на языке перевода и заменяете слово. Эта модель проблематична, потому что отношения между словами в языке-источнике и языке перевода, это не один к одному, а множество к множеству, потому что слова могут быть "полисемичны" (многозначны) и этим значениям могут соответствовать различные варианты перевода. Один из способов расширить эту простую модель перевода - снять омонимию со слов, опираясь на лексическую категорию или принадлежность к части речи. Например, киргизское слово ''жаз'' может быть как глаголом, так и существительным, что в свою очередь может на русский язык соответственно переводиться как ''писать'' или ''весна''.<br />
<div style="float:right;"><br />
{|class=wikitable<br />
! чувашский !! !! русский<br />
|-<br />
| тӳпе || ↔ || вершина<br />
|-<br />
| тăрă || → || вершина<br />
|-<br />
| тӳпе || ← || небо<br />
|-<br />
| тӳпе || ← || крыша<br />
|-<br />
|colspan=3 align="center"|...<br />
|}<br />
</div><br />
Это пример практически соответствия один к одному, значения слова ''жаз'' на киргизском и ''весна'' на русском соответствуют друг другу. Однако это не всегда так. Может быть так, что не одно, а несколько слов в языке-оригинале будут переводиться одним и тем же словом на язык перевода. Например, оба слова из русского языка ''вершина'' и ''небо'' могут быть переведены на чувашский как ''тӳпе''. На самом деле, отношения между словами можно описать как множество к множеству. <br />
<br />
Для машинного перевода не составляет проблемы запомнить, что ''вершина'', ''небо'' и ''крыша'' - все слов будут переводиться как ''тӳпе''. Но что ''saison'' может быть переведено также как ''temporada'' и что ''тӳпе'' имеет три (или больше) вариантов перевода на русский - это проблема.<br />
<br />
Применение знаний о части речи для разрешения неоднозначности при переводе может частично, но не полностью решить проблему. Даже после того как снята омонимия с части речи, одно слово может иметь несколько вариантов перевода, как в примере с ''тӳпе''. Итак, как же решить проблему один к множеству? Самый очевидный способ - это выбрать наиболее часто встречающийся вариант, или общее значение &mdash; в данном случае ''xxx''.<br />
<br />
В данное время Apertium имеет экспериментальный модуль для решения проблемы ''лексического выбора'', то есть выбора наиболее подходящего перевода лексической формы языка-источника, предлагая контекст, но использования словосочетаний тоже может быть частичным решением, например в случаях, когда существуют часто встречающиеся коллокации, которые являются исключением по отношению к общему переводу (например, с испанского на французский) : ''estación del año'' → ''saison de l'année'').<br />
<br />
===Диалектные формы===<br />
<br />
Часто бывает, что диалектные формы одного языка желательно перевести на другой язык в нормативном стиле. Например, из русского языка слово ''мясо'' "meat" может быть переведено на чувашский язык как ''аш'', ''какай'', или ''аш-какай''. Первые два варианты перевода считаются более диалектными и в основном употребляются в разговорном языке. Третий вариант более нормативный и более подходит для письменного варианта.<br />
<br />
===Грамматическое различие===<br />
<br />
Еще одна проблема лексической передачи - грамматическое различие между двумя языками<br />
<br />
* Слова могут при переводе менять род и число (например, русское слово ''брюки'' &mdash; множественного числа переводятся на башкирский ''салбар'' &mdash; единственного числа)<br />
* Слова в языке-источнике могут иметь омонимию в числе (французское слово ''temps'' на испанское ''tiempo'' или ''tiempos'') или роде (испанское слово ''estudiante'' &mdash; может быть мужского или женского рода во французском ''étudiant'', мужской род, ''étudiante'', женский род). <br />
* Другие характеристики, которые могут быть полезными при лексическом переносе между двумя языками, это является ли переводное существительное абстрактным или исчисляемым &mdash; это нужно, например, чтобы решить какой поставить артикль при переводе с языка, где отсутствует категория артикля, на язык, где такая категория присутствует. <br />
* Также в двуязычном словаре полезно указать, если есть два вида прилагательных, которые изменяют окончания в степенях сравнения и нет.<br />
<br />
Обо всем этом необходимо подумать при составлении словаря переноса (двуязычного словаря).<br />
<br />
==Практика==<br />
<br />
Для данной практической части будут использоваться примеры из языковой пары татарский-башкирский, поэтому найдите папку <code>apertium-tt-ba</code>. Двуязычный словарь находится в файле <code>apertium-tt-ba.tt-ba.dix</code>. Откройте ее.<br />
<br />
===Один к одному===<br />
<br />
Возможно вы помните, что, в первом разделе мы добавили слово ''чалбар'' в татарский словарь, мы будем пользоваться этим примером для простых один к одному записей в двуязычном словаре.<br />
<br />
Например, найдите запись ''>песи<'',<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
</pre><br />
<br />
Скопируйте запись и измените лексические формы в языке-источнике и языке перевода, чтобы у вас получилось что-то подобное:<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
<br />
<e><p><l>чалбар<s n="n"/></l><r>салбар<s n="n"/></r></p></e><br />
</pre><br />
<br />
Сохраните словарь и выйдите из текстового редактора, мы можем сформировать словарь при помощи следующей команды:<br />
<br />
<pre><br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin<br />
</pre><br />
<br />
Давайте протестируем:<br />
<br />
<pre><br />
$ echo "чалбар" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^чалбар<n><nom>/салбар<n><nom>$<br />
<br />
</pre><br />
<br />
Данная команда показывает вам вводимую лексическую форму, и получаемую лексическую форму после ее прохождения через двуязычный словарь.<br />
<br />
===Множество к одному===<br />
<br />
Следующая стадия, это осуществить перевод от многих слов к одному слову. Татарское слово ''морон'' может быть переведено на башкирский язык как ''борын'', но в настоящий момент данное слово не занесено в словари. Сначала мы ищем слово ''борын'' в файле <code>apertium-tt-ba.tt-ba.dix</code>, и мы находим следующую запись:<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
</pre><br />
<br />
Мы можем добавить запись для перевода слова ''морон'' → ''борын'', но для того чтобы это сделать, нам нужно добавить ограничение в направлении перевода, при котором данная запись имеет силу только при переводе с башкирского на татарский. Ограничения добавляются к элементу {{tag|e}} с описанием <code>r</code> и выделяются цветами, <code>LR</code> слева направо или справа налево <code>RL</code>. Папка называется <code>apertium-tt-ba.tt-ba.dix</code> где татарский вариант слева, а башкирский справа. Итак, если мы хотим, чтобы перевод происходил только в направлении с башкирского на татарский язык нам необходимо добавить ограничение по направлению справа налево(<code>RL</code>). Скопируйте запись и вставьте ее ниже, затем измените лемму и добавьте ограничение.<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
<e r="RL"><p><l>борын<s n="n"/></l><r>морон<s n="n"/></r></p></e><br />
</pre><br />
<br />
Изучите важность ограничений по направлению перевода в разделе 7[[/Session 7|Раздел 7]]. Теперь сформируйте словарь и протестируйте запись:<br />
<br />
<pre><br />
$ lt-comp rl apertium-tt-ba.tt-ba.dix ba-tt.autobil.bin <br />
main@standard 1228 1995<br />
<br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin <br />
main@standard 1226 1990<br />
<br />
$ echo "борын" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^борын<n><nom>/танау<n><nom>$<br />
<br />
$ echo "танау" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^танау<n><nom>/борын<n><nom>$<br />
<br />
$ echo "морон" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^морон<n><nom>/борын<n><nom>$<br />
</pre><br />
<br />
Мы используем ограничение по направлению перевода если хотим, чтобы перевод был возможен только в определенном направлении или в случае перевода диалектных и не нормативных форм. Но бывает желательно иметь два возможных перевода.<br />
<br />
===Один ко множеству===<br />
<div style="float: right"><br />
{|class=wikitable<br />
|-<br />
! Финский !! !! Северо-саамский <br />
|-<br />
| pitää || ↔ || doallat <br />
|-<br />
| pitää || → || berret<br />
|-<br />
| pitää || → || liikot<br />
|-<br />
| pitää || → || coakcut<br />
|-<br />
| pitää || ← || galgat<br />
|}<br />
</div><br />
Для данной части практики вы должны находиться в папке <code>apertium-sme-fin</code>. Двуязычный словарь <code>apertium-sme-fin.sme-fin.dix</code><br />
<br />
В данной подпапке мы добавим несколько записей для лексических форм с более чем одним переводом и напишем правила для лексического выбора не установленного заранее образца перевода.<br />
<br />
Возьмем для примера финское слово ''pitää'', мы обнаружим, что данное слово может быть переведено несколькими вариантами на северо-саамский язык, следовательно, чтобы добавить несколько вариантов не шаблонного перевода мы делаем следующее:<br />
<br />
<pre><br />
<e c="hold (acc)"><p><l>doallat<s n="V"/><s n="TV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="ought to"><p><l>berret<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="like (ela)"><p><l>liikot<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="get a foothold"><p><l>coakcut<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
</pre><br />
<br />
Если мы хотим добавить перевод ''galgat'' → ''pitää'', тогда нам нужно сделать еще одну запись, в этот раз с пометкой <code>LR</code>, чтобы перевод шел только в направлении из северо-саамского на финский.<br />
<br />
<pre><br />
<e r="LR"><p><l>galgat<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e>--><!-- skulle, should --><br />
</pre><br />
<br />
Сформируйте словарь обычным способом:<br />
<br />
<pre><br />
<br />
$ lt-comp rl apertium-sme-fin.sme-fin.dix fin-sme.autobil.bin <br />
main@standard 15454 19523<br />
<br />
</pre><br />
<br />
Внимательно проверьте новые записи следующими способами:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/berret<V><IV><Ind><Prs><Sg1><@+FMAINV>/liikot<V><IV><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>/coakcut<V><IV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
В случае омонимии при лексическом переносе, переносной компонент выберет первый вариант перевода для дальнейшей обработки, если первый вариант перевода не подходит, может быть применено правило лексической выборки, которое выберет другой вариант перевода:<br />
<br />
Создайте файл <code>apertium-sme-fin.fin-sme.lrx</code>, и вставьте следующий текст<br />
<br />
<pre><br />
<rules><br />
<rule> <br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="doallat" tags="V.TV.*"/><br />
</match><br />
</rule><br />
</rules><br />
</pre><br />
<br />
Вы можете создать это правило используя <code>apertium-lrx-comp</code>:<br />
<br />
<pre><br />
$ apertium-lrx-comp apertium-sme-fin.fin-sme.lrx fin-sme.lrx.bin<br />
1<br />
написано 1 правило, 2 шаблона.<br />
</pre><br />
<br />
И протестируйте следующим образом:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin | apertium-lrx-proc fin-sme.lrx.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
Как вы видите стандартный перевод ''doallat'' был выбран. Ну а если мы хотим выбрать нестандартный перевод в определенном контексте? При последующем исходном падеже в противовес винительному/родительному более подходящим вариантом перевода ''liikot'', поэтому давайте добавим для этого правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="liikot" tags="V.*"/><br />
</match><br />
<match tags="*.Ela"/><br />
</rule><br />
</pre><br />
<br />
Вы можете снова сделать "сформировать" и протестировать это правило на предложении ''Minä pidän sinusta.'' "Ты мне нравишься" .<br />
<br />
===Лексическая выборка===<br />
<br />
Для использования правил выбора лексики подготовлен отдельный раздаточный материал.<br />
<br />
==Смотрите также==<br />
<br />
* [[Как начать работу с правилами по выбору лексики]]<br />
<br />
==Для дальнейшего чтения==<br />
<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 4]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_5&diff=31451Курсы машинного перевода для языков России/Раздел 52012-01-17T10:27:41Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела познакомить с понятием сопоставительного морфологического и синтаксического анализов, и показать как основные (т.е. одноуровневые) правила морфологической и синтаксической передачи могут создаваться в Apertium.<br />
<br />
==Теория==<br />
<br />
===Сопоставительный анализ===<br />
<br />
Сопоставительный анализ подразумевает анализ и сравнение двух языков с целью обнаружения их общих и отличительных характеристик. При работе над неглубоким машинным переводом мы можем рассмотреть, например, как морфологические так и синтаксические различия. <br />
<br />
====Морфологические различия====<br />
<br />
Морфологические различия - это различия между морфологическими характеристикам двух языков. Например, если в одном языке категория определенности выражена морфологически, а в другом нет, или одни язык имеет категорию падежа и рода, а другой нет. Или когда инструменты выражения падежа/рода отличаются между языками. Примеры: <br />
<br />
* В казахском языке нет грамматического рода, а в русском их три (мужской, женский, средний). Род в русском языке играет роль при согласовании внутри словосочетания с существительным<br />
** ''Жаңа әуежай''{{slc|kk}} → ''Новый аэропорт''{{slc|ru}}<br />
* В русском языке два вида числа (единственное и множественное), а в мансийском три (единственное, двойственное и множественное).<br />
** ''Я читаю эту книгу''{{slc|ru}} → ''Ам ти книга ловиньтилум''{{slc|mns}}<br />
** ''Я читаю эти две книги''{{slc|ru}} → ''Ам ти книгаг ловиньтиягум''{{slc|mns}}<br />
** ''Я читаю эти книги''{{slc|ru}} → ''Ам ти книгат ловиньтиянум''{{slc|mns}}<br />
* Венгерский содержит огромное количество падежей, которых нет в финском (например, временный падеж ''-kor'', который на финский может быть переведен творительным аблативом, адессивом или эссивом изобразительный палеж ablative, adessive, or essive). В венгерском и финском языках падеж не играет роли при согласовании в словосочетании с существительным.<br />
** ''Ötkor''{{slc|hu}} → ''Viideltä''{{slc|fi}} <!-- "at five", Abl --><br />
** ''Éjfélkor''{{slc|hu}} → ''Keskiyöllä''{{slc|fi}} <!-- "at midnight", Ade --><br />
** ''Karácsonykor''{{slc|hu}} → ''Jouluna''{{slc|fi}} <!-- "at christmas", Ess --><br />
<br />
====Синтаксические различия====<br />
<br />
Синтаксические различия наблюдаются в том, как устроена синтаксическая система разных языков, например, наличие или отсутствие артиклей, порядок слабых местоимений (clitic), количество падежей, аналитические временные формы глаголов, употребление личных местоимений и тд. <br />
<br />
* Например в абхазском языке есть примыкающий сзади (postfixed) неопределенный артикль, и прикрепленный спереди (prefixed) определенный артикль, а в русском нет.<br />
** ''Сара кьыла'''к''' акәац аасхәоит''{{slc|ab}} → ''Я покупаю килограмм мяса''{{slc|ru}}<br />
** ''Иара '''а'''мшын ахь дцоит.''{{slc|ab}} → ''Он идёт в море.''{{slc|ru}} <!-- he is going to the sea --><br />
* В русском языке обязательно употребление личного местоимения в качестве подлежащего, а в венгерском нет,<br />
** ''Я сплю.''{{slc|ru}} → ''Alszom.''{{slc|hu}}<br />
* В чувашском используется аблятив, а в русском используется предлог и другой падеж.<br />
** ''Я получил письмо от друга.''{{slc|ru}} → ''Юлташран ҫыру илтӗм.''{{slc|cv}}<br />
<!-- * В испанском слабые местоимения (clitic) употребляются после инфинитива, а во французском перед ним.<br />
** ''Voy a enviárselos.''{{slc|es}} → ''Je vais lui les envoyer.''{{slc|fr}} --><br />
<br />
===Перенос===<br />
<br />
Перенос - это процесс преобразования промежуточной репрезентации языка-источника в язык перевода. В системе Apertium, перенос воздействует на промежуточную репрезентацию лемм и тэгов, определяющих морфологические характеристики (лексические формы).<br />
<br />
====Базовые операции====<br />
<br />
Когда вы начинаете применять правила переноса, стоит разложить их на самые базовые действия. <br />
<br />
;A) Вставка<br />
<br />
Вставка - это добавление нового тэга или слова, например, при переводе существительного с дунганского на русский язык, необходимо вставить тэг, указывающий на падеж (именительный, винительный, ...), так как в дунганском языке отсутствует категория падежа. Очень часто в переводе требуется вставить слово. Например при переводе повелительного наклонения с турецкого на чувашский, необходимо вначале добавить наречие ''ан'': ''Yeme!'' → ''Ан çи!''.<br />
<br />
;B) Удаление<br />
<br />
Удаление - это операция, противоположная вставке, когда необходимо удалить слово или тэг, например, как в предыдущем примере, как только мы добавили наречие, необходимо убрать отрицание от последующего глагола, так как наречие передает отрицательное значение.<br />
<br />
;C) Замена <br />
<br />
Замена происходит, когда один тэг заменяется другим, например, когда изменяется род слова. Это часто применяется при лексическом переносе, о чем мы читали в первом разделе, но также часто происходит при передаче. Например, при переводе с русского на башкирский, ''мои брюки'', слово ''брюки'' будет помечено специальным тэгом <code>ND</code> (которое указывает в каком числе употребляется существительное) при лексическом переносе, и потом, согласно правилам переноса, при переводе число будет изменено.<br />
<br />
;D) Изменение порядка слов<br />
<br />
Изменение порядка слов или тэгов. Например, изменение порядка следования категорий числа и принадлежности при переводе с турецкого на чувашский ''kitap·lar·ım'' → ''кӗнеке·м·сем''. <br />
<br />
;E) Комбинированные операции<br />
<br />
Очень часто, для создания правила переноса требуется набор из всех вышеуказанных операций, например, при переводе с одного языка слова, стоящего в определенном падеже на язык, в котором, для передачи такого же значения требуется употребления предлога и падежа, необходимо провести две операции, во-первых, слово,выражающее предлог должно быть вставлено перед существительным, и затем необходимо изменить характеристику, определяющую падеж.<br />
<br />
===Cамое длинное соответствие с лева направо Left-to-right longest match (LRLM)===<br />
<br />
==Структурный перенос==<br />
<br />
Файлы, которые содержат правила переноса в Apertium выглядят следующим образом:<br />
<br />
<pre><br />
<transfer default="chunk"><br />
<section-def-cats><br />
<def-cat n="adj_or_pp"><br />
<cat-item tags="adj.*"><br />
<cat-item tags="vblex.pp.*"><br />
</def-cat><br />
...<br />
</section-def-cats><br />
<section-def-attrs><br />
<def-attr n="nbr"><br />
<attr-item n="sg"/><br />
<attr-item n="pl"/><br />
</def-attr><br />
...<br />
</section-def-attrs><br />
<section-def-vars><br />
<def-var n="number"/> <br />
...<br />
</section-def-vars><br />
<section-rules><br />
...<br />
</section-rules><br />
</transfer><br />
</pre><br />
<br />
Это минимальный расклад. Вот четыре секции: <br />
<br />
* {{tag|section-def-cats}}: Содержит одну или более {{tag|def-cat}} записей. Они определяют шаблоны, которые могут сопоставляться по правилами переноса, и могут соответствовать ряду тэгов или лемм. {{tag|def-cat}} Запись, приведенная выше для <code>adj_or_pp</code> соответствует любой лексической единице, где тэги начинаются с {{tag|adj}} или {{tag|vblex><pp}}. Это может быть полезно в случае, когда две части речи выглядят похоже (например, прилагательные и причастия прошедшего времени в испанском).<br />
* {{tag|section-def-attrs}}: Содержит одну или более {{tag|def-attr}} записей. Здесь перечислены возможные тэги, относящиеся к данной характеристике. В данном случае, такая характеристика как <code>nbr</code> "число" может быть выражено одним из двух тэгов {{tag|sg}} "единственное число" или {{tag|pl}} "множественное число". Когда мы используем тэг {{tag|clip}}, для извлечения <code>part</code>, это позволяет нам определить искомые установки (части), вдобавок к стандартным частям (установкам).<br />
* {{tag|section-def-vars}}: Содержит переменные определения. Они используются для передачи информации между правилами. Например, возможно мы хотим сохранить запись о роде или числе, которыми мы пользовались в последний раз, или о лемме последнего спрягаемого глагола.<br />
* {{tag|section-rules}}: Содержит правила.<br />
<br />
===Заранее заданные образцы===<br />
<br />
В добавление к частям, которые определены в <code>section-def-attrs</code>, модуль переноса определяет заранее заданный шаблон каждой лексической единицы.<br />
<br />
Для того чтобы понятнее продемонстрировать имеющиеся стандартные установки (части), давайте возьмем следующий пример: <br />
<br />
<pre><br />
^правило# по безопасности<n><nt><nn><pl>$<br />
</pre><br />
<br />
* <code>whole</code>: как видно из названия, оно дает полное содержание лексической единицы.<br />
* <code>lem</code>: лемма: в данном примере, <tt>правило# по безопасности</tt><br />
* <code>tags</code>: все тэги в одном месте: <tt><nowiki><n><nt><nn><pl></nowiki></tt><br />
* <code>lemh</code>: лемма ''главное слово''; часть словосочетания, которая изменяется: <tt>правило</tt><br />
* <code>lemq</code>: лемма ''очередь''; остальная часть словосочетания (the <code><nowiki><g></g></nowiki></code> part в словарях): <tt># по безопасности</tt><br />
<br />
==Практика==<br />
<br />
Для данной практической части, мы будем использовать языковую пару турецкий-чувашский в Apertium, мы можете выбрать другую пару с одно-уровневой передачей single-level transfer (например, татарский-башкирский). Итак, перейдите в директорию <code>apertium-cv-tr</code> и откройте папку с правилами передачи из турецкого языка на чувашский <code>apertium-cv-tr.tr-cv.t1x</code>, для других пар это может быть папка <code>.t1x</code>.<br />
<br />
===Описание правил переноса===<br />
<br />
Цель данного упражнения - описать как срабатывает правило переноса на примере ввода предложения на турецком: ''Yeme!''. Сначала мы хотели бы дать предварительную информацию как структурируются правила переноса, затем посмотрим на действительно существующее правило и опишем его. <br />
<br />
Правила передачи в системе Apertium сделаны из двух главных частей. Образец ''pattern'' &mdash; это ряд категорий, которые будут сопоставляться, и действие''action'', которое содержит операции, которые выполняются в сопоставленных образцах. Итоговая схема для правила может выглядеть соответственно:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
...<br />
</pattern><br />
<action><br />
...<br />
</action><br />
</rule><br />
</pre><br />
<br />
Обзор значений тэгов, которые были использованы в вышеприведенных примерах дан здесь, а также приведены ссылки на документацию с полным описанием.<br />
<br />
{|class=wikitable<br />
! Наименование !! Doc.&nbsp;ref. !! Описание <br />
|- <br />
| {{tag|rule}} || §3.5.4.18 || Задает новое правило, оно содержит высший уровень образца и действия it contains at the highest level a pattern and an action.<br />
|-<br />
| {{tag|pattern}} || §3.5.4.19 || Содержит один или более <code>pattern-item</code> тэгов, которые определяют образцы лексических форм, которые должны быть сопоставлены.<br />
|-<br />
| {{tag|pattern-item}} || §3.5.4.20 || Содержит ссылки на образцы лексических форм, определенных в части <code>section-def-cats</code> папки с правилами.<br />
|-<br />
| {{tag|action}} || §3.5.4.21 || Содержит тэги, определяющие действия, которые должны быть происходить, после завершения сопоставления ряда лексических единиц.<br />
|-<br />
| {{tag|choose}} || §3.5.4.24 || Содержит одно или более <code>when</code> утверждений, которые определяют разные дальнейшие действия в зависимости от различных условий, и иногда <code>otherwise</code> утверждение, которое определяет стандартную процедуру если ни одно из <code>when</code>s не подошло.<br />
|-<br />
| {{tag|when}} || §3.5.4.25 || Определяет условие и операцию, которая должна быть выполнено при выполнении данного условия. Условие в тэге <code>test</code>, а операция идет за ним.<br />
|-<br />
| {{tag|otherwise}} || §3.5.4.26 || Стандартное условие, подразумевающее действия, которые будут предприняты, если ни одно из условий <code>when</code> в блоке <code>choose</code> не подойдет.<br />
|-<br />
| {{tag|test}} || §3.5.4.27 || Описывает условие. Например "проверьте, в единственном ли числе стоит первый сопоставленный образец". <br />
|-<br />
| {{tag|or}} || §3.5.4.28 || Тэг, разрешающий соответствие более, чем одному условию. Этот тэг [http://en.wikipedia.org/wiki/Logical_operator Boolean operator], другие доступные тэги логического значения: {{tag|and}} и {{tag|not}}<br />
|-<br />
| {{tag|equal}} || §3.5.4.28 || Проверяет являются ли два условия или тэга аналогичными. <br />
|-<br />
| {{tag|clip}} || §3.5.4.29 || Выделяет часть лексической единицы, которая соответствует признаку, указанному в разделе <code>section-def-attrs</code> папки передач. Часть, которая должна быть извлечена указана определении <code>part</code>. <br />
|-<br />
| {{tag|lit-tag}} || §3.5.4.31 || Генерирует условие, входящее в {{tag|&nbsp;}}, то есть тэг.<br />
|-<br />
| {{tag|lit}} || §3.5.4.30 || Генерирует условие.<br />
|-<br />
| {{tag|out}} || §3.5.4.40 || Содержит всю информацию по итогам применения правила.<br />
|-<br />
| {{tag|lu}} || §3.5.4.41 || Включает контент в <code>^</code> и <code>$</code>, то есть определяет является ли контент лексической единицей.<br />
|-<br />
| {{tag|b}} || §3.5.4.46 || Выдает форматирование, содержащееся на данном этапеOutputs a space, or the formatting contained at the given position.<br />
|-<br />
| {{tag|get-case-from}} || §3.5.4.34 || Преобразует Converts the case (например, выше, ниже) of whatever is enclosed in it to the case of the word marked by the <code>pos</code> attribute. <br />
|-<br />
|}<br />
<br />
Правило, которое мы хотели бы описать это <code>regla: v_neg_imp</code>, поэтому найдите его в папке. Вот как выглядит правило:<br />
<br />
<pre><br />
<br />
<rule comment="regla: v_neg_imp (yeme! → ан ҫи!)"><br />
<pattern><br />
<pattern-item n="v_neg_imp"/><br />
</pattern><br />
<action><br />
<let><br />
<clip pos="1" side="tl" part="a_neg"/><br />
<lit v=""/><br />
</let><br />
<out><br />
<lu><br />
<lit v="ан"/><br />
<lit-tag v="adv"/><br />
</lu><br />
<b/><br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
</out><br />
</action><br />
</rule><br />
<br />
</pre><br />
<br />
Для информации, образец для сопоставления определяется как:<br />
<br />
<pre><br />
<section-def-cats><br />
...<br />
<def-cat n="v_neg_imp"><br />
<cat-item tags="v.*.neg.imp.*"/><br />
</def-cat><br />
<br />
...<br />
</section-def-cats><br />
</pre><br />
<br />
====Описание====<br />
<br />
Итак, дав описание тэгам и содержанию правил, мы можем сказать что правило это:<br />
<br />
* Данное правило соответствует ряду "vb_neg_imp"<br />
* Определен шаблон лексической формы "vb_neg_imp", в {{tag|section-def-cats}} папки, так как после тэга {{tag|v}} идет любой тэг (например {{tag|iv}} или {{tag|tv}}, после которого идут тэги {{tag|neg><imp}} и потом любые другие тэги.<br />
* Затем правило определяет, подходит ли часть лексической единицы заданной характеристике <code>a_neg</code> или нет (если нет, то удаляет ее)<br />
* Правило выдает лемму "ан", после которой идет тэг {{tag|adv}} в единственной лексической единице (между <code>^</code> и <code>$</code>).<br />
* Затем правило оставляет пустое пространство<br />
* Затем правило выдает лексическую единицу с информацией от глагола, соответствующего изначальному щаблону The rule then outputs the a lexical unit with the information from the verb matched by the original pattern. <br />
<br />
====Пример Example output====<br />
<br />
;Ввод текста <br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob<br />
<br />
^ye<v><tv><neg><imp><p2><sg>$^!<sent>$^.<sent>$<br />
</pre><br />
<br />
;Результат после передачи<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
Если вы хотите отслеживать, какие правила сопоставляются, добавьте -t опцию к apertium-transfer:<br />
<br />
;Результат после передачи<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -t -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
apertium-transfer: Rule 3 ye<v><tv><neg><imp><p2><sg>/ҫи<v><tv><neg><imp><p2><sg><br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
===Описание нового правила переноса===<br />
<br />
Цель данной части практики - описать создание нового правила переноса. Переведите какой-нибудь текст при помощи выбранного вами переводчик и опишите новое правило на языке, как было сделано в предыдущем разделе. Если у вас останется время после описания правил на русском языке, попробуйте перевести его в формат XML.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 5]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_5&diff=31450Курсы машинного перевода для языков России/Раздел 52012-01-17T10:18:39Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела познакомить с понятием сопоставительного морфологического и синтаксического анализов, и показать как основные (т.е. одноуровневые) правила морфологической и синтаксической передачи могут создаваться в Apertium.<br />
<br />
==Теория==<br />
<br />
===Сопоставительный анализ===<br />
<br />
Сопоставительный анализ подразумевает анализ и сравнение двух языков с целью обнаружения их общих и отличительных характеристик. При работе над неглубоким машинным переводом мы можем рассмотреть, например, как морфологические так и синтаксические различия. <br />
<br />
====Морфологические различия====<br />
<br />
Морфологические различия - это различия между морфологическими характеристикам двух языков. Например, если в одном языке категория определенности выражена морфологически, а в другом нет, или одни язык имеет категорию падежа и рода, а другой нет. Или когда инструменты выражения падежа/рода отличаются между языками. Примеры: <br />
<br />
* В казахском языке нет грамматического рода, а в русском их три (мужской, женский, средний). Род в русском языке играет роль при согласовании внутри словосочетания с существительным<br />
** ''Жаңа әуежай''{{slc|kk}} → ''Новый аэропорт''{{slc|ru}}<br />
* В русском языке два вида числа (единственное и множественное), а в мансийском три (единственное, двойственное и множественное).<br />
** ''Я читаю эту книгу''{{slc|ru}} → ''Ам ти книга ловиньтилум''{{slc|mns}}<br />
** ''Я читаю эти две книги''{{slc|ru}} → ''Ам ти книгаг ловиньтиягум''{{slc|mns}}<br />
** ''Я читаю эти книги''{{slc|ru}} → ''Ам ти книгат ловиньтиянум''{{slc|mns}}<br />
* Венгерский содержит огромное количество падежей, которых нет в финском (например, временный падеж ''-kor'', который на финский может быть переведен творительным аблативом, адессивом или эссивом изобразительный палеж ablative, adessive, or essive). В венгерском и финском языках падеж не играет роли при согласовании в словосочетании с существительным.<br />
** ''Ötkor''{{slc|hu}} → ''Viideltä''{{slc|fi}} <!-- "at five", Abl --><br />
** ''Éjfélkor''{{slc|hu}} → ''Keskiyöllä''{{slc|fi}} <!-- "at midnight", Ade --><br />
** ''Karácsonykor''{{slc|hu}} → ''Jouluna''{{slc|fi}} <!-- "at christmas", Ess --><br />
<br />
====Синтаксические различия====<br />
<br />
Синтаксические различия наблюдаются в том, как устроена синтаксическая система разных языков, например, наличие или отсутствие артиклей, порядок слабых местоимений (clitic), количество падежей, аналитические временные формы глаголов, употребление личных местоимений и тд. <br />
<br />
* Например в абхазском языке есть примыкающий сзади (postfixed) неопределенный артикль, и прикрепленный спереди (prefixed) определенный артикль, а в русском нет.<br />
** ''Сара кьыла'''к''' акәац аасхәоит''{{slc|ab}} → ''Я покупаю килограмм мяса''{{slc|ru}}<br />
** ''Иара '''а'''мшын ахь дцоит.''{{slc|ab}} → ''Он идёт в море.''{{slc|ru}} <!-- he is going to the sea --><br />
* В русском языке обязательно употребление личного местоимения в качестве подлежащего, а в венгерском нет,<br />
** ''Я сплю.''{{slc|ru}} → ''Alszom.''{{slc|hu}}<br />
* В чувашском используется аблятив, а в русском используется предлог и другой падеж.<br />
** ''Я получил письмо от друга.''{{slc|ru}} → ''Юлташран ҫыру илтӗм.''{{slc|cv}}<br />
<!-- * В испанском слабые местоимения (clitic) употребляются после инфинитива, а во французском перед ним.<br />
** ''Voy a enviárselos.''{{slc|es}} → ''Je vais lui les envoyer.''{{slc|fr}} --><br />
<br />
===Перенос===<br />
<br />
Перенос - это процесс преобразования промежуточной репрезентации языка-источника в язык перевода. В системе Apertium, перенос воздействует на промежуточную репрезентацию лемм и тэгов, определяющих морфологические характеристики (лексические формы).<br />
<br />
====Базовые операции====<br />
<br />
Когда вы начинаете применять правила переноса, стоит разложить их на самые базовые действия. <br />
<br />
;A) Вставка<br />
<br />
Вставка - это добавление нового тэга или слова, например, при переводе существительного с дунганского на русский язык, необходимо вставить тэг, указывающий на падеж (именительный, винительный, ...), так как в дунганском языке отсутствует категория падежа. Очень часто в переводе требуется вставить слово. Например при переводе повелительного наклонения с турецкого на чувашский, необходимо вначале добавить наречие ''ан'': ''Yeme!'' → ''Ан çи!''.<br />
<br />
;B) Удаление<br />
<br />
Удаление - это операция, противоположная вставке, когда необходимо удалить слово или тэг, например, как в предыдущем примере, как только мы добавили наречие, необходимо убрать отрицание от последующего глагола, так как наречие передает отрицательное значение.<br />
<br />
;C) Замена <br />
<br />
Замена происходит, когда один тэг заменяется другим, например, когда изменяется род слова. Это часто применяется при лексическом переносе, о чем мы читали в первом разделе, но также часто происходит при передаче. Например, при переводе с русского на башкирский, ''мои брюки'', слово ''брюки'' будет помечено специальным тэгом <code>ND</code> (которое указывает в каком числе употребляется существительное) при лексическом переносе, и потом, согласно правилам переноса, при переводе число будет изменено.<br />
<br />
;D) Изменение порядка слов<br />
<br />
Изменение порядка слов или тэгов. Например, изменение порядка следования категорий числа и принадлежности при переводе с турецкого на чувашский ''kitap·lar·ım'' → ''кӗнеке·м·сем''. <br />
<br />
;E) Комбинированные операции<br />
<br />
Очень часто, для создания правила переноса требуется набор из всех вышеуказанных операций, например, при переводе с одного языка слова, стоящего в определенном падеже на язык, в котором, для передачи такого же значения требуется употребления предлога и падежа, необходимо провести две операции, во-первых, слово,выражающее предлог должно быть вставлено перед существительным, и затем необходимо изменить характеристику, определяющую падеж.<br />
<br />
===Cамое длинное соответствие с лева направо Left-to-right longest match (LRLM)===<br />
<br />
==Структурный перенос==<br />
<br />
Файлы, которые содержат правила переноса в Apertium выглядят следующим образом:<br />
<br />
<pre><br />
<transfer default="chunk"><br />
<section-def-cats><br />
<def-cat n="adj_or_pp"><br />
<cat-item tags="adj.*"><br />
<cat-item tags="vblex.pp.*"><br />
</def-cat><br />
...<br />
</section-def-cats><br />
<section-def-attrs><br />
<def-attr n="nbr"><br />
<attr-item n="sg"/><br />
<attr-item n="pl"/><br />
</def-attr><br />
...<br />
</section-def-attrs><br />
<section-def-vars><br />
<def-var n="number"/> <br />
...<br />
</section-def-vars><br />
<section-rules><br />
...<br />
</section-rules><br />
</transfer><br />
</pre><br />
<br />
Это минимальный расклад. Вот четыре секции: <br />
<br />
* {{tag|section-def-cats}}: Содержит одну или более {{tag|def-cat}} записей. Они определяют шаблоны, которые могут сопоставляться по правилами переноса, и могут соответствовать ряду тэгов или лемм. {{tag|def-cat}} Запись, приведенная выше для <code>adj_or_pp</code> соответствует любой лексической единице, где тэги начинаются с {{tag|adj}} или {{tag|vblex><pp}}. Это может быть полезно в случае, когда две части речи выглядят похоже (например, прилагательные и причастия прошедшего времени в испанском).<br />
* {{tag|section-def-attrs}}: Содержит одну или более {{tag|def-attr}} записей. Здесь перечислены возможные тэги, относящиеся к данной характеристике. В данном случае, такая характеристика как <code>nbr</code> "число" может быть выражено одним из двух тэгов {{tag|sg}} "единственное число" или {{tag|pl}} "множественное число". Когда мы используем тэг {{tag|clip}}, для извлечения <code>part</code>, это позволяет нам определить искомые установки (части), вдобавок к стандартным частям (установкам).<br />
* {{tag|section-def-vars}}: Содержит переменные определения. Они используются для передачи информации между правилами. Например, возможно мы хотим сохранить запись о роде или числе, которыми мы пользовались в последний раз, или о лемме последнего спрягаемого глагола.<br />
* {{tag|section-rules}}: Содержит правила.<br />
<br />
===Стандартные установки Default parts===<br />
<br />
В добавление к частям, которые определены в <code>section-def-attrs</code>, модуль переноса содержит набор стандартных установок (частей) каждой лексической единицы the transfer module predefines a number of default parts of each lexical unit.<br />
<br />
Для того чтобы понятнее продемонстрировать имеющиеся стандартные установки (части), давайте возьмем следующий пример: <br />
<br />
<pre><br />
^правило# по безопасности<n><nt><nn><pl>$<br />
</pre><br />
<br />
* <code>whole</code>: как видно из названия, оно дает полное содержание лексической единицы.<br />
* <code>lem</code>: лемма: в данном примере, <tt>правило# по безопасности</tt><br />
* <code>tags</code>: все тэги в одном месте: <tt><nowiki><n><nt><nn><pl></nowiki></tt><br />
* <code>lemh</code>: лемма ''главное слово''; часть словосочетания, которая изменяется: <tt>правило</tt><br />
* <code>lemq</code>: лемма ''очередь''; остальная часть словосочетания (the <code><nowiki><g></g></nowiki></code> part в словарях): <tt># по безопасности</tt><br />
<br />
==Практика==<br />
<br />
Для данной практической части, мы будем использовать языковую пару турецкий-чувашский в Apertium, мы можете выбрать другую пару с одно-уровневой передачей single-level transfer (например, татарский-башкирский). Итак, перейдите в директорию <code>apertium-cv-tr</code> и откройте папку с правилами передачи из турецкого языка на чувашский <code>apertium-cv-tr.tr-cv.t1x</code>, для других пар это может быть папка <code>.t1x</code>.<br />
<br />
===Описание правил переноса===<br />
<br />
Цель данного упражнения - описать как срабатывает правило переноса на примере ввода предложения на турецком: ''Yeme!''. Сначала мы хотели бы дать предварительную информацию как структурируются правила переноса, затем посмотрим на действительно существующее правило и опишем его. <br />
<br />
Правила передачи в системе Apertium сделаны из двух главных частей. Образец ''pattern'' &mdash; это ряд категорий, которые будут сопоставляться, и действие''action'', которое содержит операции, которые выполняются в сопоставленных образцах. Итоговая схема для правила может выглядеть соответственно:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
...<br />
</pattern><br />
<action><br />
...<br />
</action><br />
</rule><br />
</pre><br />
<br />
Обзор значений тэгов, которые были использованы в вышеприведенных примерах дан здесь, а также приведены ссылки на документацию с полным описанием.<br />
<br />
{|class=wikitable<br />
! Наименование !! Doc.&nbsp;ref. !! Описание <br />
|- <br />
| {{tag|rule}} || §3.5.4.18 || Задает новое правило, оно содержит высший уровень образца и действия it contains at the highest level a pattern and an action.<br />
|-<br />
| {{tag|pattern}} || §3.5.4.19 || Содержит один или более <code>pattern-item</code> тэгов, которые определяют образцы лексических форм, которые должны быть сопоставлены.<br />
|-<br />
| {{tag|pattern-item}} || §3.5.4.20 || Содержит ссылки на образцы лексических форм, определенных в части <code>section-def-cats</code> папки с правилами.<br />
|-<br />
| {{tag|action}} || §3.5.4.21 || Содержит тэги, определяющие действия, которые должны быть происходить, после завершения сопоставления ряда лексических единиц.<br />
|-<br />
| {{tag|choose}} || §3.5.4.24 || Содержит одно или более <code>when</code> утверждений, которые определяют разные дальнейшие действия в зависимости от различных условий, и иногда <code>otherwise</code> утверждение, которое определяет стандартную процедуру если ни одно из <code>when</code>s не подошло.<br />
|-<br />
| {{tag|when}} || §3.5.4.25 || Определяет условие и операцию, которая должна быть выполнено при выполнении данного условия. Условие в тэге <code>test</code>, а операция идет за ним.<br />
|-<br />
| {{tag|otherwise}} || §3.5.4.26 || Стандартное условие, подразумевающее действия, которые будут предприняты, если ни одно из условий <code>when</code> в блоке <code>choose</code> не подойдет.<br />
|-<br />
| {{tag|test}} || §3.5.4.27 || Описывает условие. Например "проверьте, в единственном ли числе стоит первый сопоставленный образец". <br />
|-<br />
| {{tag|or}} || §3.5.4.28 || Тэг, разрешающий соответствие более, чем одному условию. Этот тэг [http://en.wikipedia.org/wiki/Logical_operator Boolean operator], другие доступные тэги логического значения: {{tag|and}} и {{tag|not}}<br />
|-<br />
| {{tag|equal}} || §3.5.4.28 || Проверяет являются ли два условия или тэга аналогичными. <br />
|-<br />
| {{tag|clip}} || §3.5.4.29 || Выделяет часть лексической единицы, которая соответствует признаку, указанному в разделе <code>section-def-attrs</code> папки передач. Часть, которая должна быть извлечена указана определении <code>part</code>. <br />
|-<br />
| {{tag|lit-tag}} || §3.5.4.31 || Генерирует условие, входящее в {{tag|&nbsp;}}, то есть тэг.<br />
|-<br />
| {{tag|lit}} || §3.5.4.30 || Генерирует условие.<br />
|-<br />
| {{tag|out}} || §3.5.4.40 || Содержит всю информацию по итогам применения правила.<br />
|-<br />
| {{tag|lu}} || §3.5.4.41 || Включает контент в <code>^</code> и <code>$</code>, то есть определяет является ли контент лексической единицей.<br />
|-<br />
| {{tag|b}} || §3.5.4.46 || Выдает форматирование, содержащееся на данном этапеOutputs a space, or the formatting contained at the given position.<br />
|-<br />
| {{tag|get-case-from}} || §3.5.4.34 || Преобразует Converts the case (например, выше, ниже) of whatever is enclosed in it to the case of the word marked by the <code>pos</code> attribute. <br />
|-<br />
|}<br />
<br />
Правило, которое мы хотели бы описать это <code>regla: v_neg_imp</code>, поэтому найдите его в папке. Вот как выглядит правило:<br />
<br />
<pre><br />
<br />
<rule comment="regla: v_neg_imp (yeme! → ан ҫи!)"><br />
<pattern><br />
<pattern-item n="v_neg_imp"/><br />
</pattern><br />
<action><br />
<let><br />
<clip pos="1" side="tl" part="a_neg"/><br />
<lit v=""/><br />
</let><br />
<out><br />
<lu><br />
<lit v="ан"/><br />
<lit-tag v="adv"/><br />
</lu><br />
<b/><br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
</out><br />
</action><br />
</rule><br />
<br />
</pre><br />
<br />
Для информации, образец для сопоставления определяется как:<br />
<br />
<pre><br />
<section-def-cats><br />
...<br />
<def-cat n="v_neg_imp"><br />
<cat-item tags="v.*.neg.imp.*"/><br />
</def-cat><br />
<br />
...<br />
</section-def-cats><br />
</pre><br />
<br />
====Описание====<br />
<br />
Итак, дав описание тэгам и содержанию правил, мы можем сказать что правило это:<br />
<br />
* Данное правило соответствует ряду "vb_neg_imp"<br />
* Определен шаблон лексической формы "vb_neg_imp", в {{tag|section-def-cats}} папки, так как после тэга {{tag|v}} идет любой тэг (например {{tag|iv}} или {{tag|tv}}, после которого идут тэги {{tag|neg><imp}} и потом любые другие тэги.<br />
* Затем правило определяет, подходит ли часть лексической единицы заданной характеристике <code>a_neg</code> или нет (если нет, то удаляет ее)<br />
* Правило выдает лемму "ан", после которой идет тэг {{tag|adv}} в единственной лексической единице (между <code>^</code> и <code>$</code>).<br />
* Затем правило оставляет пустое пространство<br />
* Затем правило выдает лексическую единицу с информацией от глагола, соответствующего изначальному щаблону The rule then outputs the a lexical unit with the information from the verb matched by the original pattern. <br />
<br />
====Пример Example output====<br />
<br />
;Ввод текста <br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob<br />
<br />
^ye<v><tv><neg><imp><p2><sg>$^!<sent>$^.<sent>$<br />
</pre><br />
<br />
;Результат после передачи<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
Если вы хотите отслеживать, какие правила сопоставляются, добавьте -t опцию к apertium-transfer:<br />
<br />
;Результат после передачи<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -t -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
apertium-transfer: Rule 3 ye<v><tv><neg><imp><p2><sg>/ҫи<v><tv><neg><imp><p2><sg><br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
===Описание нового правила переноса===<br />
<br />
Цель данной части практики - описать создание нового правила переноса. Переведите какой-нибудь текст при помощи выбранного вами переводчик и опишите новое правило на языке, как было сделано в предыдущем разделе. Если у вас останется время после описания правил на русском языке, попробуйте перевести его в формат XML.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 5]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_5&diff=31449Курсы машинного перевода для языков России/Раздел 52012-01-17T10:00:20Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела познакомить с понятием сопоставительного морфологического и синтаксического анализов, и показать как основные (т.е. одноуровневые) правила морфологической и синтаксической передачи могут создаваться в Apertium.<br />
<br />
==Теория==<br />
<br />
===Сопоставительный анализ===<br />
<br />
Сопоставительный анализ подразумевает анализ и сравнение двух языков с целью обнаружения их общих и отличительных характеристик. При работе над неглубоким машинным переводом мы можем рассмотреть, например, как морфологические так и синтаксические различия. <br />
<br />
====Морфологические различия====<br />
<br />
Морфологические различия - это различия между морфологическими характеристикам двух языков. Например, если в одном языке категория определенности выражено морфологически, а в другом нет, или одни язык имеет категорию падежа и рода, а другой нет. Или когда инструменты выражения падежа/рода отличаются между языками. Примеры: <br />
Morphological contrasts are differences in which morphological features are expressed in each language, and how they differ. For example, if one language expresses definiteness morphologically, and another doesn't, or one language has case or gender while the other doesn't. Or if the case/gender inventories differ between the languages. Examples:<br />
<br />
* В казахском языке нет грамматического рода, а в русском их три (мужской, женский, средний). Род в русском языке играет роль при согласовании внутри словосочетания с существительным<br />
** ''Жаңа әуежай''{{slc|kk}} → ''Новый аэропорт''{{slc|ru}}<br />
* В русском языке два вида числа (единственное и множественное), а в мансийском три (единственное, двойственное и множественное).<br />
** ''Я читаю эту книгу''{{slc|ru}} → ''Ам ти книга ловиньтилум''{{slc|mns}}<br />
** ''Я читаю эти две книги''{{slc|ru}} → ''Ам ти книгаг ловиньтиягум''{{slc|mns}}<br />
** ''Я читаю эти книги''{{slc|ru}} → ''Ам ти книгат ловиньтиянум''{{slc|mns}}<br />
* Венгерский содержит огромное количество падежей, которых нет в финском (например, временный падеж ''-kor'', который на финский может быть переведен творительным аблативом, адессивом или эссив изобразительный палеж ablative, adessive, or essive). В венгерском и финском языках падеж не играет роли при согласовании в словосочетании с существительным Case in Hungarian and Finnish does not play a rôle in noun-phrase agreement.<br />
** ''Ötkor''{{slc|hu}} → ''Viideltä''{{slc|fi}} <!-- "at five", Abl --><br />
** ''Éjfélkor''{{slc|hu}} → ''Keskiyöllä''{{slc|fi}} <!-- "at midnight", Ade --><br />
** ''Karácsonykor''{{slc|hu}} → ''Jouluna''{{slc|fi}} <!-- "at christmas", Ess --><br />
<br />
====Синтаксические различия Syntactic contrasts====<br />
<br />
Синтаксические различия наблюдается в том как устроена синтаксическая система разных языков, например, наличие или отсутствие артиклей, порядок слабых местоимений (clitic), количество падежей, аналитические временные формы глаголов, употребление личных местоимений и тд. <br />
<br />
* Например в абхазском языке есть прикрепленный сзади postfixed неопределенный артикль, и прикрепленный спереди prefixed определенный артикль, а в русском нет.<br />
** ''Сара кьыла'''к''' акәац аасхәоит''{{slc|ab}} → ''Я покупаю килограмм мяса''{{slc|ru}}<br />
** ''Иара '''а'''мшын ахь дцоит.''{{slc|ab}} → ''Он идёт в море.''{{slc|ru}} <!-- he is going to the sea --><br />
* В русском языке обязательно употребление личного местоимения в качестве подлежащего, а в венгерском нет,<br />
** ''Я сплю.''{{slc|ru}} → ''Alszom.''{{slc|hu}}<br />
* В чувашском используется аблятив, а в русском используется предлог и другой падеж.<br />
** ''Я получил письмо от друга.''{{slc|ru}} → ''Юлташран ҫыру илтӗм.''{{slc|cv}}<br />
<!-- * В испанском слабые местоимения (clitic) употребляются после инфинитива, а во французском перед ним.<br />
** ''Voy a enviárselos.''{{slc|es}} → ''Je vais lui les envoyer.''{{slc|fr}} --><br />
<br />
===Передача===<br />
<br />
Передача - это процесс преобразования промежуточной репрезентации языка-источника в язык перевода. В системе Apertium, передача воздействует на промежуточную репрезентацию лемм и тэгов, определяющих морфологические характеристики (лексические формы).<br />
<br />
====Базовые операции====<br />
<br />
Когда вы начинаете применять правила передачи, стоит разложить их на самые базовые действия. <br />
<br />
;A) Вставка<br />
<br />
Вставка - это добавление нового тэга или слова, например, при переводе существительного с дунганского на русский язык, необходимо вставить tag указывающий падеж (именительный, винительный, ...), так как в дунганском языке отсутствует категория падежа. Очень часто в переводе требуется вставить слово. Например при переводе повелительного наклонения с турецкого на чувашский, необходимо в начале добавить наречие ''ан'': ''Yeme!'' → ''Ан çи!''.<br />
<br />
;B) Удаление<br />
<br />
Удаление - это операция, противоположная вставке, когда необходимо удалить слово или tag, например, как в предыдущем примере, как только мы добавили наречие, необходимо убрать отрицание от последующего глагола, так как наречие передает отрицательное значение.<br />
<br />
;C) Замена <br />
<br />
Замена происходит, когда один tag заменяется другим, например, когда изменяется род слова. Это часто применяется при лексическом переносе, о чем мы читали в первом разделе, но также часто происходит при передаче. Например, при переводе с русского на башкирский, ''мои брюки'', слово ''брюки'' будем помечено специальным тэгом <code>ND</code> (которое указывает в каком числе употребляется существительное) при лексическом переносе, и потом, согласно правилам переноса, при переводе число будет изменено.<br />
<br />
;D) Изменение порядка слов<br />
<br />
Изменение порядка слов или тэгов. Например, изменение порядка следования категорий числа и принадлежности при переводе с турецкого на чувашский ''kitap·lar·ım'' → ''кӗнеке·м·сем''. <br />
<br />
;E) Комбинированные операции<br />
<br />
Очень часто, для создания правила переноса требуется набор из всех вышеуказанных операций, например, при переводе с одного языка слова, стоящего в определенном падеже на язык, в котором, для передачи такого же значения требуется употребления предлога и падежа, необходимо провести две операции, во-первых, слово,выражающее предлог должно быть вставлено перед существительным, и затем необходимо изменить характеристику, определяющую падеж.<br />
<br />
===Cамое длинное соответствие с лева направо Left-to-right longest match (LRLM)===<br />
<br />
==Структурный перенос==<br />
<br />
Папки, которые содержат правила переноса в Apertium выглядят следующим образом:<br />
<br />
<pre><br />
<transfer default="chunk"><br />
<section-def-cats><br />
<def-cat n="adj_or_pp"><br />
<cat-item tags="adj.*"><br />
<cat-item tags="vblex.pp.*"><br />
</def-cat><br />
...<br />
</section-def-cats><br />
<section-def-attrs><br />
<def-attr n="nbr"><br />
<attr-item n="sg"/><br />
<attr-item n="pl"/><br />
</def-attr><br />
...<br />
</section-def-attrs><br />
<section-def-vars><br />
<def-var n="number"/> <br />
...<br />
</section-def-vars><br />
<section-rules><br />
...<br />
</section-rules><br />
</transfer><br />
</pre><br />
<br />
Это минимальный расклад. Вот четыре секции: <br />
<br />
* {{tag|section-def-cats}}: Содержит одну или более {{tag|def-cat}} записей. Они определяют образцы, которые могут сопоставляться по правилами переноса, и могут соответствовать ряду тэгов или лемм. {{tag|def-cat}} Запись приведенная выше для <code>adj_or_pp</code> соответствует любой лексической единице, где тэги начинаются с {{tag|adj}} или {{tag|vblex><pp}}. Это может быть полезно в случае, когда две части речи выглядят похоже (например, прилагательные и причастия прошедшего времени в испанском).<br />
* {{tag|section-def-attrs}}: Содержит одну или более {{tag|def-attr}} записей. Здесь перечислены возможные тэги, относящиеся к данной характеристике. В данном случае, такая характеристика как <code>nbr</code> "число" может быть выражено одним из двух тэгов {{tag|sg}} "единственное число" или {{tag|pl}} "множественное число". Когда мы используем тэг {{tag|clip}}, для извлечения <code>part</code>, это позволяет нам определить искомые установки(части), вдобавок к стандартным частям (установкам).<br />
* {{tag|section-def-vars}}: Содержит переменные определения. Они используются для передачи информации между правилами. Например, возможно мы хотим сохранить запись о роде или числе, которыми мы пользовались в последний раз, или о лемме последнего спрягаемого глагола.<br />
* {{tag|section-rules}}: Содержит правила.<br />
<br />
===Стандартные установки Default parts===<br />
<br />
В добавление к частями, которые определены в <code>section-def-attrs</code>, модуль переноса содержит набор стандартных установок (частей) каждой лексической единицы the transfer module predefines a number of default parts of each lexical unit.<br />
<br />
Для того чтобы понятнее продемонстрировать имеющиеся стандартные установки (части), давайте возьмем следующий пример: <br />
<br />
<pre><br />
^правило# по безопасности<n><nt><nn><pl>$<br />
</pre><br />
<br />
* <code>whole</code>: как видно из названия, оно дает полное содержание лексической единицы.<br />
* <code>lem</code>: лемма: в данном примере, <tt>правило# по безопасности</tt><br />
* <code>tags</code>: все тэги в одном месте: <tt><nowiki><n><nt><nn><pl></nowiki></tt><br />
* <code>lemh</code>: лемма ''главное слово''; часть словосочетания, которая изменяется: <tt>правило</tt><br />
* <code>lemq</code>: лемма ''queue''; остальная часть словосочетания (the <code><nowiki><g></g></nowiki></code> part in the dictionaries): <tt># по безопасности</tt><br />
<br />
==Практика==<br />
<br />
Для данной практической части, мы будем использовать языковую пару турецкий-чувашский в Apertium, мы можете выбрать другую пару с одно-уровневой передачей single-level transfer (например, татарский-башкирский). Итак, перейдите в директорию <code>apertium-cv-tr</code> и откройте папку с правилами передачи из турецкого языка на чувашский <code>apertium-cv-tr.tr-cv.t1x</code>, для других пар это может быть папка <code>.t1x</code>.<br />
<br />
===Описание правил переноса===<br />
<br />
Цель данного упражнения - описать как срабатывает правило переноса на примере ввода предложения на турецком: ''Yeme!''. Сначала мы хотели бы дать предварительную информацию как структурируются правила переноса, затем посмотрим на действительно существующее правило и опишем его. <br />
<br />
Правила передачи в системе Apertium сделаны из двух главных частей. Образец ''pattern'' &mdash; это ряд категорий, которые будут сопоставляться, и действие''action'', которое содержит операции, которые выполняются в сопоставленных образцах. Итоговая схема для правила может выглядеть соответственно:<br />
<br />
<pre><br />
<rule><br />
<pattern><br />
...<br />
</pattern><br />
<action><br />
...<br />
</action><br />
</rule><br />
</pre><br />
<br />
Обзор значений тэгов, которые были использованы в вышеприведенных примерах дан здесь, а также приведены ссылки на документацию с полным описанием.<br />
<br />
{|class=wikitable<br />
! Наименование !! Doc.&nbsp;ref. !! Описание <br />
|- <br />
| {{tag|rule}} || §3.5.4.18 || Задает новое правило, оно содержит высший уровень образца и действия it contains at the highest level a pattern and an action.<br />
|-<br />
| {{tag|pattern}} || §3.5.4.19 || Содержит один или более <code>pattern-item</code> тэгов, которые определяют образцы лексических форм, которые должны быть сопоставлены.<br />
|-<br />
| {{tag|pattern-item}} || §3.5.4.20 || Содержит ссылки на образцы лексических форм, определенных в части <code>section-def-cats</code> папки с правилами.<br />
|-<br />
| {{tag|action}} || §3.5.4.21 || Содержит тэги, определяющие действия, которые должны быть происходить, после завершения сопоставления ряда лексических единиц.<br />
|-<br />
| {{tag|choose}} || §3.5.4.24 || Содержит одно или более <code>when</code> утверждений, которые определяют разные дальнейшие действия в зависимости от различных условий, и иногда <code>otherwise</code> утверждение, которое определяет стандартную процедуру если ни одно из <code>when</code>s не подошло.<br />
|-<br />
| {{tag|when}} || §3.5.4.25 || Определяет условие и операцию, которая должна быть выполнено при выполнении данного условия. Условие в тэге <code>test</code>, а операция идет за ним.<br />
|-<br />
| {{tag|otherwise}} || §3.5.4.26 || Стандартное условие, подразумевающее действия, которые будут предприняты, если ни одно из условий <code>when</code> в блоке <code>choose</code> не подойдет.<br />
|-<br />
| {{tag|test}} || §3.5.4.27 || Описывает условие. Например "проверьте, в единственном ли числе стоит первый сопоставленный образец". <br />
|-<br />
| {{tag|or}} || §3.5.4.28 || Тэг, разрешающий соответствие более, чем одному условию. Этот тэг [http://en.wikipedia.org/wiki/Logical_operator Boolean operator], другие доступные тэги логического значения: {{tag|and}} и {{tag|not}}<br />
|-<br />
| {{tag|equal}} || §3.5.4.28 || Проверяет являются ли два условия или тэга аналогичными. <br />
|-<br />
| {{tag|clip}} || §3.5.4.29 || Выделяет часть лексической единицы, которая соответствует признаку, указанному в разделе <code>section-def-attrs</code> папки передач. Часть, которая должна быть извлечена указана определении <code>part</code>. <br />
|-<br />
| {{tag|lit-tag}} || §3.5.4.31 || Генерирует условие, входящее в {{tag|&nbsp;}}, то есть тэг.<br />
|-<br />
| {{tag|lit}} || §3.5.4.30 || Генерирует условие.<br />
|-<br />
| {{tag|out}} || §3.5.4.40 || Содержит всю информацию по итогам применения правила.<br />
|-<br />
| {{tag|lu}} || §3.5.4.41 || Включает контент в <code>^</code> и <code>$</code>, то есть определяет является ли контент лексической единицей.<br />
|-<br />
| {{tag|b}} || §3.5.4.46 || Выдает форматирование, содержащееся на данном этапеOutputs a space, or the formatting contained at the given position.<br />
|-<br />
| {{tag|get-case-from}} || §3.5.4.34 || Преобразует Converts the case (например, выше, ниже) of whatever is enclosed in it to the case of the word marked by the <code>pos</code> attribute. <br />
|-<br />
|}<br />
<br />
Правило, которое мы хотели бы описать это <code>regla: v_neg_imp</code>, поэтому найдите его в папке. Вот как выглядит правило:<br />
<br />
<pre><br />
<br />
<rule comment="regla: v_neg_imp (yeme! → ан ҫи!)"><br />
<pattern><br />
<pattern-item n="v_neg_imp"/><br />
</pattern><br />
<action><br />
<let><br />
<clip pos="1" side="tl" part="a_neg"/><br />
<lit v=""/><br />
</let><br />
<out><br />
<lu><br />
<lit v="ан"/><br />
<lit-tag v="adv"/><br />
</lu><br />
<b/><br />
<lu><br />
<clip pos="1" side="tl" part="whole"/><br />
</lu><br />
</out><br />
</action><br />
</rule><br />
<br />
</pre><br />
<br />
Для информации, образец для сопоставления определяется как:<br />
<br />
<pre><br />
<section-def-cats><br />
...<br />
<def-cat n="v_neg_imp"><br />
<cat-item tags="v.*.neg.imp.*"/><br />
</def-cat><br />
<br />
...<br />
</section-def-cats><br />
</pre><br />
<br />
====Описание====<br />
<br />
Итак, дав описание тэгам и содержанию правил, мы можем сказать что правило это:<br />
<br />
* Данное правило соответствует ряду "vb_neg_imp"<br />
* Определен шаблон лексической формы "vb_neg_imp", в {{tag|section-def-cats}} папки, так как после тэга {{tag|v}} идет любой тэг (например {{tag|iv}} или {{tag|tv}}, после которого идут тэги {{tag|neg><imp}} и потом любые другие тэги.<br />
* Затем правило определяет, подходит ли часть лексической единицы заданной характеристике <code>a_neg</code> или нет (если нет, то удаляет ее)<br />
* Правило выдает лемму "ан", после которой идет тэг {{tag|adv}} в единственной лексической единице (между <code>^</code> и <code>$</code>).<br />
* Затем правило оставляет пустое пространство<br />
* Затем правило выдает лексическую единицу с информацией от глагола, соответствующего изначальному щаблону The rule then outputs the a lexical unit with the information from the verb matched by the original pattern. <br />
<br />
====Пример Example output====<br />
<br />
;Ввод текста <br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob<br />
<br />
^ye<v><tv><neg><imp><p2><sg>$^!<sent>$^.<sent>$<br />
</pre><br />
<br />
;Результат после передачи<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
Если вы хотите отслеживать, какие правила сопоставляются, добавьте -t опцию к apertium-transfer:<br />
<br />
;Результат после передачи<br />
<br />
<pre><br />
$ echo 'yeme!' | hfst-proc tr-cv.automorf.hfst | cg-proc tr-cv.rlx.bin | apertium-tagger -g tr-cv.prob |\<br />
apertium-pretransfer | lt-proc -b tr-cv.autobil.bin | apertium-lrx-proc tr-cv.lrx.bin |\<br />
apertium-transfer -t -b apertium-cv-tr.tr-cv.t1x tr-cv.t1x.bin <br />
<br />
apertium-transfer: Rule 3 ye<v><tv><neg><imp><p2><sg>/ҫи<v><tv><neg><imp><p2><sg><br />
^ан<adv>$ ^ҫи<v><tv><imp><p2><sg>$^!<sent>$<br />
</pre><br />
<br />
===Описание нового правила переноса===<br />
<br />
Цель данной части практики - описать создание нового правила переноса. Переведите какой-нибудь текст при помощи выбранного вами переводчик и опишите новое правило на языке, как было сделано в предыдущем разделе. Если у вас останется время после описания правил на русском языке, попробуйте перевести его в формат XML.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Ginestí i Rosell, M. (ed.) (2007) [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Documentation of the Open-Source Shallow-Transfer Machine Translation Platform ''Apertium'']<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 5]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_4&diff=31448Курсы машинного перевода для языков России/Раздел 42012-01-17T09:48:51Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела - описать процессы лексического переноса и лексического выбора. В теоретической части более подробно будет описано почему переносной словарь (или двуязычный словарь)это не всегда лишь соответствие между леммами/частями речи в одном языке и леммами/частями речи в другом языке. В практической части мы добавим три вида записи: один к одному, множество к одному, один к многим. <br />
<br />
==Теория==<br />
<br />
Существует два аспекта лексического переноса, первый - выбор наиболее подходящего перевода, второй - маркировка в записях тех особых характеристик, которые должны согласовываться с правилами переноса. Например, выбор наиболее подходящего русского перевода для чувашского слова ''тӳпе'', когда существует несколько вариантов переводов, включая ''вершина'', ''крыша'' и ''небо'' - это пример первого аспекта, а выбор единственного или множественного числа при переводе русского слова ''брюки'' на татарский (например ''чалбар'', ''чалбарлар'') - это пример второго аспекта перевода лексики.<br />
<br />
===Переводные эквиваленты===<br />
<br />
Простая модель перевода - это когда вы берете по очереди каждое слово из предложения на языке оригинала, находите переводной эквивалент на языке перевода и заменяете слово. Эта модель проблематична, потому что отношения между словами в языке-источнике и языке перевода, это не один к одному, а множество к множеству, потому что слова могут быть "полисемичны" (многозначны) и этим значениям могут соответствовать различные варианты перевода. Один из способов расширить эту простую модель перевода - снять омонимию со слов, опираясь на лексическую категорию или принадлежность к части речи. Например, киргизское слово ''жаз'' может быть как глаголом, так и существительным, что в свою очередь может на русский язык соответственно переводиться как ''писать'' или ''весна''.<br />
<div style="float:right;"><br />
{|class=wikitable<br />
! чувашский !! !! русский<br />
|-<br />
| тӳпе || ↔ || вершина<br />
|-<br />
| тăрă || → || вершина<br />
|-<br />
| тӳпе || ← || небо<br />
|-<br />
| тӳпе || ← || крыша<br />
|-<br />
|colspan=3 align="center"|...<br />
|}<br />
</div><br />
Это пример практически соответствия один к одному, значения слова ''жаз'' на киргизском и ''весна'' на русском соответствуют друг другу. Однако это не всегда так. Может быть так, что не одно, а несколько слов в языке-оригинале будут переводиться одним и тем же словом на язык перевода. Например, оба слова из русского языка ''вершина'' и ''небо'' могут быть переведены на чувашский как ''тӳпе''. На самом деле, отношения между словами можно описать как множество к множеству. <br />
<br />
Для машинного перевода не составляет проблемы запомнить, что ''вершина'', ''небо'' и ''крыша'' - все слов будут переводиться как ''тӳпе''. Но что ''saison'' может быть переведено также как ''temporada'' и что ''тӳпе'' имеет три (или больше) вариантов перевода на русский - это проблема.<br />
<br />
Применение знаний о части речи для разрешения неоднозначности при переводе может частично, но не полностью решить проблему. Даже после того как снята омонимия с части речи, одно слово может иметь несколько вариантов перевода, как в примере с ''тӳпе''. Итак, как же решить проблему один к множеству? Самый очевидный способ - это выбрать наиболее часто встречающийся вариант, или общее значение &mdash; в данном случае ''xxx''.<br />
<br />
В данное время Apertium имеет экспериментальный модуль для решения проблемы ''лексического выбора'', то есть выбора наиболее подходящего перевода лексической формы языка-источника, предлагая контекст, но использования словосочетаний тоже может быть частичным решением, например в случаях, когда существуют часто встречающиеся коллокации, которые являются исключением по отношению к общему переводу (например, с испанского на французский) : ''estación del año'' → ''saison de l'année'').<br />
<br />
===Диалектные формы===<br />
<br />
Часто бывает, что диалектные формы одного языка желательно перевести на другой язык в нормативном стиле. Например, из русского языка слово ''мясо'' "meat" может быть переведено на чувашский язык как ''аш'', ''какай'', или ''аш-какай''. Первые два варианты перевода считаются более диалектными и в основном употребляются в разговорном языке. Третий вариант более нормативный и более подходит для письменного варианта.<br />
<br />
===Грамматическое различие===<br />
<br />
Еще одна проблема лексической передачи - грамматическое различие между двумя языками<br />
<br />
* Слова могут при переводе менять род и число (например, русское слово ''брюки'' &mdash; множественного числа переводятся на башкирский ''салбар'' &mdash; единственного числа)<br />
* Слова в языке-источнике могут иметь омонимию в числе (французское слово ''temps'' на испанское ''tiempo'' или ''tiempos'') или роде (испанское слово ''estudiante'' &mdash; может быть мужского или женского рода во французском ''étudiant'', мужской род, ''étudiante'', женский род). <br />
* Другие характеристики, которые могут быть полезными при лексическом переносе между двумя языками, это является ли переводное существительное абстрактным или исчисляемым &mdash; это нужно, например, чтобы решить какой поставить артикль при переводе с языка, где отсутствует категория артикля, на язык, где такая категория присутствует. <br />
* Также в двуязычном словаре полезно указать, если есть два вида прилагательных, которые изменяют окончания в степенях сравнения и нет.<br />
<br />
Обо всем этом необходимо подумать при составлении словаря переноса (двуязычного словаря).<br />
<br />
==Практика==<br />
<br />
Для данной практической части будут использоваться примеры из языковой пары татарский-башкирский, поэтому найдите папку <code>apertium-tt-ba</code>. Двуязычный словарь находится в файле <code>apertium-tt-ba.tt-ba.dix</code>. Откройте ее.<br />
<br />
===Один к одному===<br />
<br />
Возможно вы помните, что, в первом разделе мы добавили слово ''чалбар'' в татарский словарь, мы будем пользоваться этим примером для простых один к одному записей в двуязычном словаре.<br />
<br />
Например, найдите запись ''>песи<'',<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
</pre><br />
<br />
Скопируйте запись и измените лексические формы в языке-источнике и языке перевода, чтобы у вас получилось что-то подобное:<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
<br />
<e><p><l>чалбар<s n="n"/></l><r>салбар<s n="n"/></r></p></e><br />
</pre><br />
<br />
Сохраните словарь и выйдите из текстового редактора, мы можем сформировать словарь при помощи следующей команды:<br />
<br />
<pre><br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin<br />
</pre><br />
<br />
Давайте протестируем:<br />
<br />
<pre><br />
$ echo "чалбар" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^чалбар<n><nom>/салбар<n><nom>$<br />
<br />
</pre><br />
<br />
Данная команда показывает вам вводимую лексическую форму, и получаемую лексическую форму после ее прохождения через двуязычный словарь.<br />
<br />
===Множество к одному===<br />
<br />
Следующая стадия, это осуществить перевод от многих слов к одному слову. Татарское слово ''морон'' может быть переведено на башкирский язык как ''борын'', но в настоящий момент данное слово не занесено в словари. Сначала мы ищем слово ''борын'' в файле <code>apertium-tt-ba.tt-ba.dix</code>, и мы находим следующую запись:<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
</pre><br />
<br />
Мы можем добавить запись для перевода слова ''морон'' → ''борын'', но для того чтобы это сделать, нам нужно добавить ограничение в направлении перевода, при котором данная запись имеет силу только при переводе с башкирского на татарский. Ограничения добавляются к элементу {{tag|e}} с описанием <code>r</code> и выделяются цветами, <code>LR</code> слева направо или справа налево <code>RL</code>. Папка называется <code>apertium-tt-ba.tt-ba.dix</code> где татарский вариант слева, а башкирский справа. Итак, если мы хотим, чтобы перевод происходил только в направлении с башкирского на татарский язык нам необходимо добавить ограничение по направлению справа налево(<code>RL</code>). Скопируйте запись и вставьте ее ниже, затем измените лемму и добавьте ограничение.<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
<e r="RL"><p><l>борын<s n="n"/></l><r>морон<s n="n"/></r></p></e><br />
</pre><br />
<br />
Изучите важность ограничений по направлению перевода в разделе 7[[/Session 7|Session 7]]. Теперь сформируйте словарь и протестируйте запись:<br />
<br />
<pre><br />
$ lt-comp rl apertium-tt-ba.tt-ba.dix ba-tt.autobil.bin <br />
main@standard 1228 1995<br />
<br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin <br />
main@standard 1226 1990<br />
<br />
$ echo "борын" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^борын<n><nom>/танау<n><nom>$<br />
<br />
$ echo "танау" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^танау<n><nom>/борын<n><nom>$<br />
<br />
$ echo "морон" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^морон<n><nom>/борын<n><nom>$<br />
</pre><br />
<br />
Мы используем ограничение по направлению перевода если хотим, чтобы перевод был возможен только в определенном направлении или в случае перевода диалектных и не нормативных форм. Но бывает желательно иметь два возможных перевода.<br />
<br />
===Один ко множеству===<br />
<div style="float: right"><br />
{|class=wikitable<br />
|-<br />
! Finnish !! !! North Sámi <br />
|-<br />
| pitää || ↔ || doallat <br />
|-<br />
| pitää || → || berret<br />
|-<br />
| pitää || → || liikot<br />
|-<br />
| pitää || → || coakcut<br />
|-<br />
| pitää || ← || galgat<br />
|}<br />
</div><br />
Для данной части практики вы должны находиться в папке <code>apertium-sme-fin</code>. Двуязычный словарь <code>apertium-sme-fin.sme-fin.dix</code><br />
<br />
В данной подпапке мы добавим несколько записей для лексических форм с более чем одним переводом и напишем правила для лексического выбора нестандартного варианта перевода In this subsection we will add some entries for lexical forms with more than one translation, and write lexical selection rules to select the non-default translations. <br />
<br />
Возьмем для примера финское слово ''pitää'', мы обнаружим, что данное слово может быть переведено несколькими вариантами на северо-саамский язык, следовательно, чтобы добавить несколько вариантов нестандартного перевода мы делаем следующее so if we want to add some non-default translations of it, we can do it as follows:<br />
<br />
<pre><br />
<e c="hold (acc)"><p><l>doallat<s n="V"/><s n="TV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="ought to"><p><l>berret<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="like (ela)"><p><l>liikot<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="get a foothold"><p><l>coakcut<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
</pre><br />
<br />
Если мы хотим добавить перевод ''galgat'' → ''pitää'', тогда нам нужно сделать еще одну запись, в этот раз с пометкой <code>LR</code> чтобы перевод шел только в направлении из северо-саамского на финский.<br />
<br />
<pre><br />
<e r="LR"><p><l>galgat<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e>--><!-- skulle, should --><br />
</pre><br />
<br />
Сформируйте словарь обычным способом:<br />
<br />
<pre><br />
<br />
$ lt-comp rl apertium-sme-fin.sme-fin.dix fin-sme.autobil.bin <br />
main@standard 15454 19523<br />
<br />
</pre><br />
<br />
Внимательно проверьте новые записи следующими способами:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/berret<V><IV><Ind><Prs><Sg1><@+FMAINV>/liikot<V><IV><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>/coakcut<V><IV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
В случае омонимии при лексическом переносе, переносной компонент выберет первый вариант перевода для дальнейшей обработки, если первый вариант перевода не подходит, может быть применено правило лексической выборки, которое выберет другой вариант перевода:<br />
<br />
Создайте файл <code>apertium-sme-fin.fin-sme.lrx</code>, и вставьте следующий текст<br />
<br />
<pre><br />
<rules><br />
<rule> <br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="doallat" tags="V.TV.*"/><br />
</match><br />
</rule><br />
</rules><br />
</pre><br />
<br />
Вы можете создать это правило используя <code>apertium-lrx-comp</code>:<br />
<br />
<pre><br />
$ apertium-lrx-comp apertium-sme-fin.fin-sme.lrx fin-sme.lrx.bin<br />
1<br />
написано 1 правило, 2 шаблона.<br />
</pre><br />
<br />
И протестируйте следующим образом:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin | apertium-lrx-proc fin-sme.lrx.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
Как вы видите стандартный перевод ''doallat'' был выбран. Ну а если мы хотим выбрать нестандартный перевод в определенном контексте? При последующем исходном падеже в противовес винительному/родительному более подходящим вариантом перевода будет With an elative following as opposed to an accusative/genitive, a better translation is ''liikot'', поэтому давайте добавим для этого правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="liikot" tags="V.*"/><br />
</match><br />
<match tags="*.Ela"/><br />
</rule><br />
</pre><br />
<br />
Вы можете снова сделать компиляцию и протестировать это правило на предложении ''Minä pidän sinusta.'' "Ты мне нравишься" .<br />
<br />
===Лексическая выборка===<br />
<br />
Для использования правил выбора лексики подготовлен отдельный раздаточный материал.<br />
<br />
==Смотрите также==<br />
<br />
* [[Как начать работу с правилами по выбору лексики]]<br />
<br />
==Для дальнейшего чтения==<br />
<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 4]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_4&diff=31447Курсы машинного перевода для языков России/Раздел 42012-01-17T08:43:36Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела - описать процессы лексического переноса и лексического выбора. В теоретической части более подробно будет описано почему переносной словарь (или двуязычный словарь)это не всегда лишь соответствие между леммами/частями речи в одном языке и леммами/частями речи в другом языке. В практической части мы добавим три вида записи: один к одному, множество к одному, один к многим. <br />
<br />
==Теория==<br />
<br />
Существует два аспекта лексического переноса, первый - выбор наиболее подходящего перевода, второй - маркировка в записях тех особых характеристик, которые должны согласовываться с правилами переноса. Например, выбор наиболее подходящего русского перевода для чувашского слова ''тӳпе'', когда существует несколько вариантов переводов, включая ''вершина'', ''крыша'' и ''небо'' - это пример первого аспекта, а выбор единственного или множественного числа при переводе русского слова ''брюки'' на татарский (например ''чалбар'', ''чалбарлар'') - это пример второго аспекта перевода лексики.<br />
<br />
===Переводные эквиваленты===<br />
<br />
Простая модель перевода - это когда вы берете по очереди каждое слово из предложения на языке оригинала, находите переводной эквивалент на языке перевода и заменяете слово. Эта модель проблематична, потому что отношения между словами в языке-источнике и языке перевода, это не один к одному, а множество к множеству, потому что слова могут быть "полисемичны" (многозначны) и этим значениям могут соответствовать различные варианты перевода. Один из способов расширить эту простую модель перевода - снять омонимию со слов, опираясь на лексическую категорию или принадлежность к части речи. Например, киргизское слово ''жаз'' может быть как глаголом, так и существительным, что в свою очередь может на русский язык соответственно переводиться как ''писать'' или ''весна''.<br />
<div style="float:right;"><br />
{|class=wikitable<br />
! чувашский !! !! русский<br />
|-<br />
| тӳпе || ↔ || вершина<br />
|-<br />
| тăрă || → || вершина<br />
|-<br />
| тӳпе || ← || небо<br />
|-<br />
| тӳпе || ← || крыша<br />
|-<br />
|colspan=3 align="center"|...<br />
|}<br />
</div><br />
Это пример практически соответствия один к одному, значения слова ''жаз'' на киргизском и ''весна'' на русском соответствуют друг другу. Однако это не всегда так. Может быть так, что не одно, а несколько слов в языке-оригинале будут переводиться одним и тем же словом на язык перевода. Например, оба слова из русского языка ''вершина'' и ''небо'' могут быть переведены на чувашский как ''тӳпе''. На самом деле, отношения между словами можно описать как множество к множеству. <br />
<br />
Для машинного перевода не составляет проблемы запомнить, что ''вершина'', ''небо'' и ''крыша'' - все слов будут переводиться как ''тӳпе''. Но что ''saison'' может быть переведено также как ''temporada'' и что ''тӳпе'' имеет три (или больше) вариантов перевода на русский - это проблема.<br />
<br />
Применение знаний о части речи для разрешения неоднозначности при переводе может частично, но не полностью решить проблему. Даже после того как снята омонимия с части речи, одно слово может иметь несколько вариантов перевода, как в примере с ''тӳпе''. Итак, как же решить проблему один к множеству? Самый очевидный способ - это выбрать наиболее часто встречающийся вариант, или общее значение &mdash; в данном случае ''xxx''.<br />
<br />
В данное время Apertium имеет экспериментальный модуль для решения проблемы ''лексического выбора'', то есть выбора наиболее подходящего перевода лексической формы языка-источника, предлагая контекст, но использования словосочетаний тоже может быть частичным решением, например в случаях, когда существуют часто встречающиеся коллокации, которые являются исключением по отношению к общему переводу (например, с испанского на французский) : ''estación del año'' → ''saison de l'année'').<br />
<br />
===Диалектные формы===<br />
<br />
Часто бывает, что диалектные формы одного языка желательно перевести на другой язык в нормативном стиле. Например, из русского языка слово ''мясо'' "meat" может быть переведено на чувашский язык как ''аш'', ''какай'', или ''аш-какай''. Первые два варианты перевода считаются более диалектными и в основном употребляются в разговорном языке. Третий вариант более нормативный и более подходит для письменного варианта.<br />
<br />
===Грамматическое различие===<br />
<br />
Еще одна проблема лексической передачи - грамматическое различие между двумя языками<br />
<br />
* Слова могут при переводе менять род и число (например, русское слово ''брюки'' &mdash; множественного числа переводятся на башкирский ''салбар'' &mdash; единственного числа)<br />
* Слова в языке-источнике могут иметь омонимию в числе (французское слово ''temps'' на испанское ''tiempo'' или ''tiempos'') или роде (испанское слово ''estudiante'' &mdash; может быть мужского или женского рода во французском ''étudiant'', мужской род, ''étudiante'', женский род). <br />
* Другие характеристики, которые могут быть полезными при лексическом переносе между двумя языками, это является ли переводное существительное абстрактным или исчисляемым &mdash; это нужно, например, чтобы решить какой поставить артикль при переводе с языка, где отсутствует категория артикля, на язык, где такая категория присутствует. <br />
* Также в двуязычном словаре полезно указать, если есть два вида прилагательных, которые изменяют окончания в степенях сравнения и нет.<br />
<br />
Обо всем этом необходимо подумать при составлении словаря переноса (двуязычного словаря).<br />
<br />
==Практика==<br />
<br />
Для данной практической части будут использоваться примеры из языковой пары татарский-башкирский, поэтому найдите папку <code>apertium-tt-ba</code>. Двуязычный словарь находится в файле <code>apertium-tt-ba.tt-ba.dix</code>. Откройте ее.<br />
<br />
===Один к одному===<br />
<br />
Возможно вы помните, что, в первом разделе мы добавили слово ''чалбар'' в татарский словарь, мы будем пользоваться этим примером для простых один к одному записей в двуязычном словаре.<br />
<br />
Например, найдите запись ''>песи<'',<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
</pre><br />
<br />
Скопируйте запись и измените лексические формы в языке-источнике и языке перевода, чтобы у вас получилось что-то подобное:<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
<br />
<e><p><l>чалбар<s n="n"/></l><r>салбар<s n="n"/></r></p></e><br />
</pre><br />
<br />
Сохраните словарь и выйдите из текстового редактора, и мы можем скомпилировать словарь при помощи следующей команды:<br />
<br />
<pre><br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin<br />
</pre><br />
<br />
Давайте протестируем:<br />
<br />
<pre><br />
$ echo "чалбар" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^чалбар<n><nom>/салбар<n><nom>$<br />
<br />
</pre><br />
<br />
Данная команда показывает вам вводимую лексическую форму, и получаемую лексическую форму после ее прохождения через двуязычный словарь.<br />
<br />
===Многие к одному===<br />
<br />
Следующая стадия, это осуществить перевод от многих слов к одному слову. Татарское слово ''морон'' может быть переведено на башкирский язык как ''борын'', но в настоящий момент данное слово не занесено в словари. Сначала мы ищем слово ''борын'' в папке <code>apertium-tt-ba.tt-ba.dix</code>, и мы находим следующую запись:<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
</pre><br />
<br />
Мы можем добавить запись для перевода слова ''морон'' → ''борын'', но для того чтобы это сделать, нам нужно добавить ограничение в области направления перевода, при котором данная запись имеет силу только при переводе с башкирского на татарский. Ограничения добавляются к элементу {{tag|e}} с описанием <code>r</code> и выделяются цветами, <code>LR</code> слева направо или справа налево <code>RL</code>. Папка называется <code>apertium-tt-ba.tt-ba.dix</code> где татарский вариант слева, а башкирский справа. Итак, если мы хотим, чтобы перевод происходил только в направлении с башкирского на татарский язык нам необходимо добавить ограничение по направлению справа налево(<code>RL</code>). Скопируйте запись и вставьте ее ниже, затем измените лемму и добавьте ограничение.<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
<e r="RL"><p><l>борын<s n="n"/></l><r>морон<s n="n"/></r></p></e><br />
</pre><br />
<br />
Для ознакомления с важностью ограничений по направлению перевод, посмотрите раздел 7[[/Session 7|Session 7]]. Теперь скомпилируйте словарь и протестируйте запись:<br />
<br />
<pre><br />
$ lt-comp rl apertium-tt-ba.tt-ba.dix ba-tt.autobil.bin <br />
main@standard 1228 1995<br />
<br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin <br />
main@standard 1226 1990<br />
<br />
$ echo "борын" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^борын<n><nom>/танау<n><nom>$<br />
<br />
$ echo "танау" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^танау<n><nom>/борын<n><nom>$<br />
<br />
$ echo "морон" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^морон<n><nom>/борын<n><nom>$<br />
</pre><br />
<br />
Мы используем ограничение по направлению перевода если мы хотим чтобы перевод ни в коем случае не был возможен в данном направлении или в случае перевода диалектных и не нормативных форм. Но иногда бывает желательно иметь два возможных перевода.<br />
<br />
===Один ко многим===<br />
<div style="float: right"><br />
{|class=wikitable<br />
|-<br />
! Finnish !! !! North Sámi <br />
|-<br />
| pitää || ↔ || doallat <br />
|-<br />
| pitää || → || berret<br />
|-<br />
| pitää || → || liikot<br />
|-<br />
| pitää || → || coakcut<br />
|-<br />
| pitää || ← || galgat<br />
|}<br />
</div><br />
Для данной части практики вы должны находиться в директории <code>apertium-sme-fin</code> directory. Двуязычный словарь <code>apertium-sme-fin.sme-fin.dix</code><br />
<br />
В данном подразделе мы добавим несколько записей для лексических форм с более чем одним переводом и напишем правила для лексического выбора для выбора нестандартного варианта перевода In this subsection we will add some entries for lexical forms with more than one translation, and write lexical selection rules to select the non-default translations. <br />
<br />
Возьмем для примера финское слово ''pitää'', мы обнаружим, что данное слово может быть переведено несколькими вариантами на северо-саамский язык, следовательно, чтобы добавить несколько вариантов нестандартного перевода мы делаем следуещее so if we want to add some non-default translations of it, we can do it as follows:<br />
<br />
<pre><br />
<e c="hold (acc)"><p><l>doallat<s n="V"/><s n="TV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="ought to"><p><l>berret<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="like (ela)"><p><l>liikot<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="get a foothold"><p><l>coakcut<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
</pre><br />
<br />
Если мы хотим добавить перевод ''galgat'' → ''pitää'', тогда нам нужно сделать еще одну запись, в этот раз с пометкой <code>LR</code> чтобы перевод шел только в направлении из северо-саамского на финский.<br />
<br />
<pre><br />
<e r="LR"><p><l>galgat<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e>--><!-- skulle, should --><br />
</pre><br />
<br />
Скомпилируйте словарь обычным способом:<br />
<br />
<pre><br />
<br />
$ lt-comp rl apertium-sme-fin.sme-fin.dix fin-sme.autobil.bin <br />
main@standard 15454 19523<br />
<br />
</pre><br />
<br />
Внимательно проверьте новые записи следующими способами:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/berret<V><IV><Ind><Prs><Sg1><@+FMAINV>/liikot<V><IV><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>/coakcut<V><IV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
В случае омонимии при лексической передаче, передающий компонент the transfer component выберет первый перевод для дальнейшей обработки, если первый вариант перевод не подходящий, может быть применено правил лексической выборки, которое выберет другой вариант переводаwill pick the first translation to continue with, if the first translation is not the desired translation, a lexical selection rule can be made which chooses a different one:<br />
<br />
Создайте папку <code>apertium-sme-fin.fin-sme.lrx</code>, и вставьте следующий текст<br />
<br />
<pre><br />
<rules><br />
<rule> <br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="doallat" tags="V.TV.*"/><br />
</match><br />
</rule><br />
</rules><br />
</pre><br />
<br />
Вы можете создать это правило используя <code>apertium-lrx-comp</code>:<br />
<br />
<pre><br />
$ apertium-lrx-comp apertium-sme-fin.fin-sme.lrx fin-sme.lrx.bin<br />
1<br />
Written 1 rules, 2 patterns.<br />
</pre><br />
<br />
И протестируйте следующим образом:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin | apertium-lrx-proc fin-sme.lrx.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
Как вы видите стандартный перевод ''doallat'' был выбран. Но что если мы хотим выбрать нестандартный перевод в определенном контексте? При последующем исходном падеже в противовес винительному/родительному более подходящим вариантом перевода будет With an elative following as opposed to an accusative/genitive, a better translation is ''liikot'', поэтому давайте добавим для этого правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="liikot" tags="V.*"/><br />
</match><br />
<match tags="*.Ela"/><br />
</rule><br />
</pre><br />
<br />
Вы можете снова сделать компиляцию и протестировать это правило на предложении ''Minä pidän sinusta.'' "Ты мне нравишься" .<br />
<br />
===Лексическая выборка===<br />
<br />
Для использования правил выбора лексики подготовлен отдельный раздаточный материал.<br />
<br />
==Смотрите также==<br />
<br />
* [[Как начать работу с правилами по выбору лексики]]<br />
<br />
==Дальнейшее чтение==<br />
<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 4]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_4&diff=31446Курсы машинного перевода для языков России/Раздел 42012-01-17T08:31:20Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Цель данного раздела - описать процессы лексического переноса и лексического выбора. В теоретической части более подробно будет описано почему переносной словарь (или двуязычный словарь)это не всегда лишь соответствие между леммами/частями речи в одном языке и леммами/частями речи в другом языке. В практической части мы добавим три вида записи: один к одному, многие к одному, один к многим. <br />
<br />
==Теория==<br />
<br />
Существует два аспекта лексического переноса, первый - выбор наиболее подходящего перевода, второй - маркировка в записях тех особых характеристик, которые должны согласовываться с правилами переноса. Например, выбор наиболее подходящего русского перевода для чувашского слова ''тӳпе'', когда существует несколько вариантов переводов, включая ''вершина'', ''крыша'' и ''небо'' - это пример первого аспекта, а выбор единственного или множественного числа при переводе русского слова ''брюки'' на татарский (например ''чалбар'', ''чалбарлар'') - это пример второго аспекта перевода лексики.<br />
<br />
===Переводные эквиваленты===<br />
<br />
Простая модель перевода - это когда вы берете по очереди каждое слово из предложения на языке-оригинале, находите переводной эквивалент в языке перевода и заменяете слова. Это модель проблематична, потому что отношения между словами в языке источнике и языке перевода, это не один к одному, а множество к множеству, потому что слова могут быть "полисемичны" (многозначны) и этим значениям могут соответствовать различные переводы. Один из способов расширить эту простую модель перевода - снять омонимию со слов, опираясь на лексическую категорию или принадлежность к части речи. Например, киргизское слово ''жаз'' может быть как глаголом, так и существительным, что в свою очередь может на русский язык соответственно переводиться как ''писать'' или ''весна''.<br />
<div style="float:right;"><br />
{|class=wikitable<br />
! Chuvash !! !! Russian<br />
|-<br />
| тӳпе || ↔ || вершина<br />
|-<br />
| тăрă || → || вершина<br />
|-<br />
| тӳпе || ← || небо<br />
|-<br />
| тӳпе || ← || крыша<br />
|-<br />
|colspan=3 align="center"|...<br />
|}<br />
</div><br />
Это пример более менее соответствия один к одному, Значения для слова ''жаз'' на киргизском и ''весна'' на русском соответствуют друг другу. Однако это не всегда так. Может быть что не одно а несколько слов в языке-оригинале будут переводиться одни и тем же словом в языке перевода. Например, оба слова из русского языка ''вершина'' и ''небо'' могут быть переведены на чувашский как ''тӳпе''. На самом деле, отношения между словами можно описать как многие к многим. <br />
<br />
Для машинного перевода не составляет проблемы сказать, что ''вершина'', ''небо'' и ''крыша'' - все будут переводиться как ''тӳпе''. Но что ''saison'' может быть переведено также как ''temporada'' и что ''тӳпе'' имеет три (или больше) вариантов перевода на русский - это проблема.<br />
<br />
Использование знания о части речи для снятия омонимии при переводе может частично, но не полностью решить проблему. Даже после того как снята омонимия с части речи, одно слово может иметь несколько вариантов перевод, как в примере с ''тӳпе''. Итак, как решить проблему с один ко многим. Самый очевидный способ это выбрать наиболее часто встречающиеся, или общий перевод &mdash; в данном случае ''xxx''.<br />
<br />
В данное время Apertium имеет экспериментальный модуль для решения проблемы ''лексического выбора'', то есть выбора наиболее подходящего перевода лексической формы языка-источника, предлагая контекст, использования мультислов тоже может быть частичным решением, например в случаях, когда существуют часто встречающиеся словосочетания, которые отличаются от общего перевода (например, с испанского на французский) that is choosing the most appropriate translation of a source language lexical form given its context, but the use of multiwords can also offer a partial solution, for example in the cases where there are frequent collocations which are exceptions to the general translation (for example, Spanish to French: ''estación del año'' → ''saison de l'année'').<br />
<br />
===Диалектные формы===<br />
<br />
Часто бывает желательно перевести диалектные формы одного языка на нормативный стиль другого языка. Например, из русского языка слово ''мясо'' "meat" может быть переведено на чувашский язык как ''аш'', ''какай'', или ''аш-какай''. Первые два варианты перевода считаются более диалектными и в основном употребляются в разговорном языке. Третий вариант более нормативный и более подходит для письменного варианта.<br />
<br />
===Грамматическая дивергенция===<br />
<br />
Еще одна проблема лексической передачи - грамматическое различие между двумя языками<br />
<br />
* Слова могут при переводе менять род и число (например, русское слово ''брюки'' &mdash; множественного числа переводятся на башкирский ''салбар'' &mdash; единственного числа)<br />
* Слова в языке-источнике могут иметь омонимию в числе (французское слово ''temps'' на испанское ''tiempo'' или ''tiempos'') или роде (испанское слово ''estudiante'' &mdash; может быть мужского или женского рода во французским ''étudiant'', мужской род, ''étudiante'', женский род). <br />
* Другие характеристики, которые могут быть полезными при лексической передаче между двумя языками, это является ли переводное существительное абстрактным или исчисляемым &mdash; это нужно, например, чтобы решить какой поставить артикль при переводе с языка, где нет концепции артикля на язык, где такая концепция присутствует. <br />
* Также в двуязычном словаре полезно указать, если прилагательные в языке которые изменяют окончания в степенях сравнения и нет Also, for languages that have both adjectives which inflect for comparison, and adjectives which don't &mdash; it is useful to specify this in the bilingual dictionary.<br />
<br />
Обо всем этом необходимо подумать при составлении передаваемого словаря (двуязычного словаря).<br />
<br />
==Практика==<br />
<br />
Для данной практической части будут использоваться примеры из языковой пары татарский-башкирский, поэтому найдите справочник <code>apertium-tt-ba</code>. Двуязычный словарь находится в папке <code>apertium-tt-ba.tt-ba.dix</code>. Откройте ее.<br />
<br />
===Один к одному===<br />
<br />
Возможно вы помните, что, в первом разделе мы добавили слово ''чалбар'' в татарский словарь, мы будем пользоваться этим примером для простых один к одному записей в двуязычном словаре.<br />
<br />
Например, найдите запись ''>песи<'',<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
</pre><br />
<br />
Скопируйте запись и измените лексические формы в языке-источнике и языке перевода, чтобы у вас получилось что-то подобное:<br />
<br />
<pre><br />
<e><p><l>песи<s n="n"/></l><r>бесәй<s n="n"/></r></p></e><br />
<br />
<e><p><l>чалбар<s n="n"/></l><r>салбар<s n="n"/></r></p></e><br />
</pre><br />
<br />
Сохраните словарь и выйдите из текстового редактора, и мы можем скомпилировать словарь при помощи следующей команды:<br />
<br />
<pre><br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin<br />
</pre><br />
<br />
Давайте протестируем:<br />
<br />
<pre><br />
$ echo "чалбар" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^чалбар<n><nom>/салбар<n><nom>$<br />
<br />
</pre><br />
<br />
Данная команда показывает вам вводимую лексическую форму, и получаемую лексическую форму после ее прохождения через двуязычный словарь.<br />
<br />
===Многие к одному===<br />
<br />
Следующая стадия, это осуществить перевод от многих слов к одному слову. Татарское слово ''морон'' может быть переведено на башкирский язык как ''борын'', но в настоящий момент данное слово не занесено в словари. Сначала мы ищем слово ''борын'' в папке <code>apertium-tt-ba.tt-ba.dix</code>, и мы находим следующую запись:<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
</pre><br />
<br />
Мы можем добавить запись для перевода слова ''морон'' → ''борын'', но для того чтобы это сделать, нам нужно добавить ограничение в области направления перевода, при котором данная запись имеет силу только при переводе с башкирского на татарский. Ограничения добавляются к элементу {{tag|e}} с описанием <code>r</code> и выделяются цветами, <code>LR</code> слева направо или справа налево <code>RL</code>. Папка называется <code>apertium-tt-ba.tt-ba.dix</code> где татарский вариант слева, а башкирский справа. Итак, если мы хотим, чтобы перевод происходил только в направлении с башкирского на татарский язык нам необходимо добавить ограничение по направлению справа налево(<code>RL</code>). Скопируйте запись и вставьте ее ниже, затем измените лемму и добавьте ограничение.<br />
<br />
<pre><br />
<e><p><l>борын<s n="n"/></l><r>танау<s n="n"/></r></p></e><br />
<e r="RL"><p><l>борын<s n="n"/></l><r>морон<s n="n"/></r></p></e><br />
</pre><br />
<br />
Для ознакомления с важностью ограничений по направлению перевод, посмотрите раздел 7[[/Session 7|Session 7]]. Теперь скомпилируйте словарь и протестируйте запись:<br />
<br />
<pre><br />
$ lt-comp rl apertium-tt-ba.tt-ba.dix ba-tt.autobil.bin <br />
main@standard 1228 1995<br />
<br />
$ lt-comp lr apertium-tt-ba.tt-ba.dix tt-ba.autobil.bin <br />
main@standard 1226 1990<br />
<br />
$ echo "борын" | hfst-proc tt-ba.automorf.hfst | apertium-tagger -g tt-ba.prob |\<br />
apertium-pretransfer | lt-proc -b tt-ba.autobil.bin <br />
^борын<n><nom>/танау<n><nom>$<br />
<br />
$ echo "танау" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^танау<n><nom>/борын<n><nom>$<br />
<br />
$ echo "морон" | hfst-proc ba-tt.automorf.hfst | apertium-tagger -g ba-tt.prob |\<br />
apertium-pretransfer | lt-proc -b ba-tt.autobil.bin <br />
^морон<n><nom>/борын<n><nom>$<br />
</pre><br />
<br />
Мы используем ограничение по направлению перевода если мы хотим чтобы перевод ни в коем случае не был возможен в данном направлении или в случае перевода диалектных и не нормативных форм. Но иногда бывает желательно иметь два возможных перевода.<br />
<br />
===Один ко многим===<br />
<div style="float: right"><br />
{|class=wikitable<br />
|-<br />
! Finnish !! !! North Sámi <br />
|-<br />
| pitää || ↔ || doallat <br />
|-<br />
| pitää || → || berret<br />
|-<br />
| pitää || → || liikot<br />
|-<br />
| pitää || → || coakcut<br />
|-<br />
| pitää || ← || galgat<br />
|}<br />
</div><br />
Для данной части практики вы должны находиться в директории <code>apertium-sme-fin</code> directory. Двуязычный словарь <code>apertium-sme-fin.sme-fin.dix</code><br />
<br />
В данном подразделе мы добавим несколько записей для лексических форм с более чем одним переводом и напишем правила для лексического выбора для выбора нестандартного варианта перевода In this subsection we will add some entries for lexical forms with more than one translation, and write lexical selection rules to select the non-default translations. <br />
<br />
Возьмем для примера финское слово ''pitää'', мы обнаружим, что данное слово может быть переведено несколькими вариантами на северо-саамский язык, следовательно, чтобы добавить несколько вариантов нестандартного перевода мы делаем следуещее so if we want to add some non-default translations of it, we can do it as follows:<br />
<br />
<pre><br />
<e c="hold (acc)"><p><l>doallat<s n="V"/><s n="TV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="ought to"><p><l>berret<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="like (ela)"><p><l>liikot<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
<e c="get a foothold"><p><l>coakcut<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e><br />
</pre><br />
<br />
Если мы хотим добавить перевод ''galgat'' → ''pitää'', тогда нам нужно сделать еще одну запись, в этот раз с пометкой <code>LR</code> чтобы перевод шел только в направлении из северо-саамского на финский.<br />
<br />
<pre><br />
<e r="LR"><p><l>galgat<s n="V"/><s n="IV"/></l><r>pitää<s n="V"/></r></p><par n="V_V"/></e>--><!-- skulle, should --><br />
</pre><br />
<br />
Скомпилируйте словарь обычным способом:<br />
<br />
<pre><br />
<br />
$ lt-comp rl apertium-sme-fin.sme-fin.dix fin-sme.autobil.bin <br />
main@standard 15454 19523<br />
<br />
</pre><br />
<br />
Внимательно проверьте новые записи следующими способами:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/berret<V><IV><Ind><Prs><Sg1><@+FMAINV>/liikot<V><IV><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>/coakcut<V><IV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
В случае омонимии при лексической передаче, передающий компонент the transfer component выберет первый перевод для дальнейшей обработки, если первый вариант перевод не подходящий, может быть применено правил лексической выборки, которое выберет другой вариант переводаwill pick the first translation to continue with, if the first translation is not the desired translation, a lexical selection rule can be made which chooses a different one:<br />
<br />
Создайте папку <code>apertium-sme-fin.fin-sme.lrx</code>, и вставьте следующий текст<br />
<br />
<pre><br />
<rules><br />
<rule> <br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="doallat" tags="V.TV.*"/><br />
</match><br />
</rule><br />
</rules><br />
</pre><br />
<br />
Вы можете создать это правило используя <code>apertium-lrx-comp</code>:<br />
<br />
<pre><br />
$ apertium-lrx-comp apertium-sme-fin.fin-sme.lrx fin-sme.lrx.bin<br />
1<br />
Written 1 rules, 2 patterns.<br />
</pre><br />
<br />
И протестируйте следующим образом:<br />
<br />
<pre><br />
$ echo "Minä pidän kirjan." | hfst-proc fin-sme.automorf.hfst | cg-proc fin-sme.rlx.bin | apertium-tagger -g fin-sme.prob | lt-proc -b fin-sme.autobil.bin | apertium-lrx-proc fin-sme.lrx.bin <br />
^Mikä<Pron><Interr><Sg><Ess>/Mii<Pron><Interr><Sg><Ess>$ <br />
^pitää<V><Act><Ind><Prs><Sg1><@+FMAINV>/doallat<V><TV><Ind><Prs><Sg1><@+FMAINV>$ <br />
^kirja<N><Sg><Gen><@←OBJ>/girji<N><Sg><Gen><@←OBJ>$^.<Punct><CLB>/.<CLB>$<br />
</pre><br />
<br />
Как вы видите стандартный перевод ''doallat'' был выбран. Но что если мы хотим выбрать нестандартный перевод в определенном контексте? При последующем исходном падеже в противовес винительному/родительному более подходящим вариантом перевода будет With an elative following as opposed to an accusative/genitive, a better translation is ''liikot'', поэтому давайте добавим для этого правило:<br />
<br />
<pre><br />
<rule><br />
<match lemma="pitää" tags="V.*"><br />
<select lemma="liikot" tags="V.*"/><br />
</match><br />
<match tags="*.Ela"/><br />
</rule><br />
</pre><br />
<br />
Вы можете снова сделать компиляцию и протестировать это правило на предложении ''Minä pidän sinusta.'' "Ты мне нравишься" .<br />
<br />
===Лексическая выборка===<br />
<br />
Для использования правил выбора лексики подготовлен отдельный раздаточный материал.<br />
<br />
==Смотрите также==<br />
<br />
* [[Как начать работу с правилами по выбору лексики]]<br />
<br />
==Дальнейшее чтение==<br />
<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 4]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_3&diff=31445Курсы машинного перевода для языков России/Раздел 32012-01-17T07:58:36Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
В данном разделе будет рассмотрены вопросы морфологической омонимии и описано, как они рассматриваются Грамматикой ограничений (Constraint Grammar). Буду рассмотрены теоретические аспекты некоторых видов морфологической омонимии и работа с ними при помощи правил. Практическая часть будет затрагивать discovering tagging errors и попытки решения ошибок при помощи правил.<br />
<br />
==Теория==<br />
Понятие омонимии, которая будет рассматриваться в этом разделе - это морфологическая омонимия. Это омонимия, которая происходит в следствие того, что, исходя из формы слова можно сделать несколько видов морфологического анализа (также называется как ''омонимичность'' &mdash; samenameness). Например, чувашское слово ''чалка'' может быть,<br />
<br />
* Существительным "чалка" единственного числа в именительном падеже.<br />
* Прилагательным "чалка".<br />
* Глаголом "чалка" в повелительном наклонении, 2 лицо, единственное число.<br />
<br />
Есть также переводная омонимия, например слово ''чалка'' как глагол может быть переведено на русский язык глаголами ''кричать'', ''стрекотать'', ''верещать'', ''галдеть'' и т.д., которая не относится к морфологической омонимии и поэтому в данном разделе не рассматривается.<br />
<br />
===Морфологическая омонимия===<br />
<br />
Существует два основных вида морфологической омонимии. Морфологическая омонимия между частями речи (например, слово может быть как существительным, так и глаголом)и морфологическая омонимия внутри частей речи (например, слово может быть только именем существительным, но форма одинаковая как для именительного, так и для родительного падежей). Обычно, сложнее морфологическая структура языка, тем выше соотношение между омонимией внутри части речи и омонимией между частями речи. <br />
<br />
====Омонимия между частями речи====<br />
<br />
Пример омонимии между частями речи был приведен выше, слово ''чалка'' может быть существительным, глаголом или прилагательным. Нужно принимать во внимание, что омонимия часто встречается между прилагательными, обозначающими народность (например, по-русски ''русский'') или профессии (например, в русском языке ''военный'') и существительными, обозначающими языки или людей (''русский'') или профессии (''военный'').<br />
<br />
В языках тюркской и уральской групп, существительные и глаголы часто имеют одинаковые суффиксы (например, в финском ''-n, -t, -i''). Подобные основы слов (случайные омонимы) встречаются несколько раз в парадигме, например, по-фински ''tule-'' "приходить" и ''tuli'' "пожар": ''tuli'' = "пожар" сущ., ед.ч или "s/он пришел", ''tulet'' = "пожары" or "ты приходишь"; ''tulen" = "пожара" или "я прихожу". <br />
<br />
Деривационные процессы также могут пересекаться с флексией. Таким образом, в финском языке форма множественного числа причастия настоящего времени (и поэтому прилагательного)) и глагола настоящего времени 3 лица множественного числа всегда совпадает: ''laulavat'' = они поют / поющие (кто-то), ''tulevat'' = они приходят / приходящие (кто-то), cf. ''Laulavat baritonit laulavat usein'' (поющие баритоны часто поют).<br />
<br />
В киргизском языке есть несколько примеров ''ак'' "белый" and ''ак'' "течь/бежать (о жидкостях)", которые имеют омонимичную форму, как например ''акты'' "белый + сущ (винит.падеж)" и "акты" "оно текло". Другой пример из казахского языка ''жай'', со следующими значениями: в качестве прилагательного "медленный, простой, тихий, поздний"; в качестве наречия "медленно, просто, тихо"; в качестве существительного "молния", "причина, условие", "проживание", "лук (оружие)"; в качестве глагола "вывешивать для сушки / выкладывать, раскладывать / развешивать, расстилать", "гнать животных на пастбище".<br />
<br />
====Омонимия внутри части речи====<br />
<br />
В качестве примеров омонимии внутри одной части речи давайте рассмотрим славянские языки, где часто встречается падежный синкретизм между именительным, винительным и родительным падежами.<br />
<br />
* ''Примером может быть конденсация '''воды'''.''{{slc|ru}}<br />
* ''Príkladom môže byť kondenzácia '''vody'''.''{{slc|sk}}<br />
* ''Przykładem może być kondensacja '''wody'''.''{{slc|pl}}<br />
* ''Primer je lahko kondenzacija '''vode'''.''{{slc|sl}}<br />
<br />
Однако нельзя сказать что это присуще только славянским языками, тюркские и фино-угорские языки также имеют примеры омонимии, ограниченной частью речи, например, чувашское слово ''итлĕр'' (омонимия между повелительным наклонением и будущем временем), и финское ''voivat'' ("они могут, они могли"; это омонимия между настоящим и прошедшим временем сохраняется для всех глаголов, состоящих из одного слога и заканчивающихся на -i, например ''voida'' "мог" ''soida'' "звонить", ''naida'' "fuck", etc.).<br />
<br />
В языке коми существует системная омонимия у глаголов первого и третьего лица единственного числа прошедшего времени. В нижеприведенном предложении форма ''кывлі''может быть первого и третьего лица.<br />
<br />
:''Ме кывлі, тэ пӧ уджалан вузасянінын.''{{slc|kv}}<br />
:Я слышала, что ты работаешь в магазине.<br />
<br />
В казахском языке системная омонимия наблюдается между всеми глаголами в форме третьего лица единственного и множественного числа. Например, "барады" может означать "она/он/оно идет" или "они идут".<br />
<br />
=== Синтаксическая неоднозначность===<br />
<br />
Еще одна форма омонимии - синтаксическая неоднозначность, при которой одно и тоже предложение или фраза могут пониматься по-разному, но иметь одинаковую морфологическую структуру. Примером может служить фраза с предлогом (предложный оборот), в которой морфологические средства не позволяют показать, к какому компоненту относится фраза с предлогом. Посмотрите на следующие примеры<br />
<br />
* Сегодня я говорил с подругой Анны, с которой я познакомился вчера. (вчера я познакомился с Анной)<br />
* Сегодня я говорил с подругой Анны, с которой я познакомился вчера. (вчера я познакомился с подругой Анны)<br />
<br />
Трудность для машинного перевода возникает тогда, когда уже в языке-источнике предложение содержит неоднозначность, а не в языке перевода. Если омонимия сохранена, это вызывает меньше трудностей. <br />
<br />
Например, для вышеприведенных примеров неоднозначность сохраняется для большинства западно-европейских языков (например, индо-европейских), но для XXX два различных толкования требуют двух разных переводов:<br />
<br />
* xxx<br />
* yyy<br />
<br />
===Разрешение неоднозначности при помощи правил===<br />
<br />
Существует много способов для написания правил для разрешения неоднозначности, самое важное - это суметь объяснить правила в рамках того контекста, который создает омонимию. Например, так как отдельные слова очень часто могут быть омонимами, такая омонимия снимается контекстом. Возьмем фразу на русском языке '' « нашим старым преподавателям »'', так как оба слова ''нашим'' и ''старым'' имеют достаточно омонимов (по три варианта на каждое слово), главное слово фразы ''преподавателям'', у которого только один вариант после анализа, помогает снять омонимию с двух других слов.<br />
<br />
* наш{{tag|det}}{{tag|pos}}{{tag|m}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|nt}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|m}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|nt}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* '''наш{{tag|det}}{{tag|pos}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}'''<br />
* ...<br />
<br />
Таким образом мы приходим к выводу, что необходимо написать правило, которое исключало бы варианты анализа, которые не согласовываются с главным словом.<br />
<br />
====Грамматика ограничений====<br />
<br />
Один из способов написания правил - это использование формальной системы, которая называются грамматикой ограничений (constraint grammar). Правила грамматики ограничений состоят из двух частей: действия по шаблону (образцу), и по контексту. Примеры по первой части:<br />
<br />
* {{sc|select}}: Given a context, remove all the readings apart from the one(s) matched by the pattern. Учитывая контекст, удалите все варианты, кроме одного (одних), соответствующего шаблону.<br />
* {{sc|remove}}: Учитывая контекст, удалите вариант (ы), соответствующий шаблону.<br />
<br />
Контекстом может служить любая комбинация слов или тэгов в данном предложении. Чтобы представить что может служить контекстом, давайте посмотрим на несколько существующих правил снятия неоднозначности. Мы будем пользоваться фразами на русском языке: <br />
<br />
<center>« ''Услугами детских садов пользуются 135 тысяч работающих матерей.'' »</center><br />
<!-- ''Z usług żłobków korzysta 135 tysięcy pracujących matek'' --><br />
;Омонимия #1<br />
<br />
Слово ''детских'' имеет омонимию между родительным, предложным и винительным падежами. Нам нужно выбрать родительный падеж.<br />
<br />
* <code>SELECT Gen IF (0C A) (*1C GEN BARRIER NPNHA);</code><br />
** <code>SELECT Gen</code>: Select genitive, <code>IF</code><br />
** <code>(0C A)</code>: Слово ''только'' имеет трактовки прилагательного has adjective readings.<br />
** <code>(*1C GEN BARRIER NPNHA)</code>: После данного слова идет слово, которое может быть только в родительном падеже. Продолжаем искать слова после данного слова, пока не найдем слово, которое может быть любым словом, которое не может изменять существительное и не является наречием.<br />
<br />
;Омонимия #2<br />
<br />
Слово ''работающих'' имеет омонимию во множественном числе родительного падежа, множественном числе предложного падежа и множественном числе винительного падежа. Нам нужно выбрать вариант множественного числа родительного падежа.<br />
<br />
* <code>SELECT Gen IF (0C ACC-GEN-PRP) (*-1C Num LINK 1C Gen BARRIER NOTGEN);</code><br />
** <code>SELECT Gen</code>: Выберите родительный падеж, <code>IF</code><br />
*** <code>(0C ACC-GEN-PRP)</code>: Данное словом может стоять только в винительном, родительном или местном падежах<br />
*** <code>(*-1C Num LINK 1C Gen BARRIER NOTGEN)</code>: Перед текущим словом идет слово, которое может быть только числительным, после которого может быть только слово в родительном падеже, продолжаем искать к началу предложения, пока не найдем слово, которое не содержит тэга родительного падежа.<br />
<br />
;Омонимия #3<br />
<br />
Слово ''матери'' имеет омонимию в форме множественного числа родительного и винительного падежей. Нам нужно выбрать вариант родительного падежа (или лучше, убрать вариант винительного падежа).<br />
<br />
* <code>REMOVE Acc IF (0C ACC-OR-GEN) (*-1C Num LINK 1C Gen BARRIER NOTGEN);</code><br />
** <code>REMOVE Acc</code>: Уберите винительный падеж, <code>IF</code><br />
*** <code>(0C ACC-OR-GEN)</code>: Данное слово может стоять только в винительном или родительном падежах<br />
*** <code>(*-1C Num LINK 1C Gen BARRIER NOTGEN)</code>: У нас есть предыдущее числительное, у которого есть слово, которое после него может стоять только в родительном падеже (например,''''тысяч), и мы останавливаем поиск, когда находим слово, которое не стоит в родительном падеже (<code>BARRIER NOTGEN</code>)<br />
<br />
==Практическое задание==<br />
<br />
В данной практической части мы рассмотрим работу маркировщика (tagger), раскроем несколько tagging errors и наконец предложим несколько правил снятия омонимии для решения проблемы tagging errors.<br />
<br />
===Работа с морфологическим анализатором===<br />
<br />
Давайте попытаемся провести морфологический анализ фразы, которая выглядит довольно просто:<br />
<br />
<pre><br />
echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin<br />
^Уран/Уран<np><top><m><sg><acc>/Уран<np><top><m><sg><nom>$ <br />
^—/—<guio>$ ^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ <br />
^удалённости/удалённость<n><f><nn><sg><gen>/удалённость<n><f><nn><sg><dat>/удалённость<n><f><nn><sg><prp>/удалённость<n><f><nn><pl><acc>/удалённость<n><f><nn><pl><nom>$ <br />
^от/от<pr>$ <br />
^Солнца/Солнце<n><nt><nn><sg><gen>/Солнце<n><nt><nn><pl><acc>/Солнце<n><nt><nn><pl><nom>$<br />
^./.<sent>$<br />
</pre><br />
<br />
Фраза, которая выглядела довольно легко и понятно, на самом деле содержит множественную неоднозначность.<br />
<br />
===Поиск ошибок===<br />
<br />
Apertium предлагает статистический маркировщик statistical tagger, который работает следующим образом: <br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | apertium-tagger -p -g kv-ru.prob <br />
^Уран/Уран<np><top><m><sg><acc>$ <br />
^—/—<guio>$ <br />
^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ ^удалённости/удалённость<n><f><nn><sg><gen>$ <br />
^от/от<pr>$ ^Солнца/Солнце<n><nt><nn><sg><gen>$^./.<sent>$<br />
</pre><br />
<br />
В маркировщике довольно легко найти ошибки, их две:<br />
<br />
* "Уран" должно стоять в именительном падеже, а не винительном.<br />
* После предлога "по", падеж слова "удалённость" должен быть дательным, а не родительным.<br />
<br />
С остальных слов омонимия была снята правильно.<br />
<br />
===Разработка правил===<br />
<br />
При разработке правил, важно принимать во внимание следующее:<br />
<br />
* Набор ситуаций, в которых это правило будет применяться. Например, это правило будет применимо только к данному слову, к данному слову и к одному или двум словам, окружающим данное слово, применимо к придаточному предложению или ко всему предложению в целом?<br />
* Данное правило будет применимо только к этой лемме или к любому слову, которое относится к данной части речи?<br />
* Подумать о типе неоднозначности для которой создается правило. Например, правило будет применимо к любой омонимии между винительным и именительным падежами или применимо только в случае падежей существительных?<br />
* Очень часто бывает так, что существует несколько правил, которые одинаково подходят для снятия омонимии в предложении. Важно не загнать себя в ловушку, пытаясь найти "самое совершенное" правило.<br />
<br />
К вышеприведенным примерам, мы можем разработать следующие правила:<br />
<br />
* Если слово может стоять либо в именительном либо в винительном падежах, а после него следуют дефис(&mdash;) и прилагательное, которое может быть только в именительном падеже, тогда выбираем вариант именительного падежа.<br />
* После предлога "по" невозможен вариант родительного падежа.<br />
<br />
Создайте несколько правил, которые снимают проблему языковой омонимии для выбранной вами пары языков.<br />
<br />
===Грамматика ограничений===<br />
<br />
Если вы завершили этап создания (описания) правил, вы можете попробовать преобразовать их в коды в грамматике ограничений, как показано в примере на русском языке. Ниже приведен план создания файла грамматики ограничений для кодирования двух правил из предыдущих примеров и инструкция как с этим работать.<br />
<br />
<br />
<pre><br />
DELIMITERS = "<.>" "<!>" "<?>" ;<br />
SOFT-DELIMITERS = "<,>" ;<br />
<br />
LIST BOS = (>>>) ; # Начало предложения<br />
LIST EOS = (<<<) ; # Конец предложения <br />
<br />
LIST Hyphen = guio ;<br />
LIST Nom = nom ;<br />
LIST Acc = acc ;<br />
LIST Gen = gen ;<br />
<br />
LIST Not-Gen-Prep = "по";<br />
<br />
SET Acc-Or-Nom = Acc | Nom ;<br />
<br />
Раздел<br />
<br />
# Правило 1<br />
REMOVE Acc IF # Удалите вариант винительного падежа если,<br />
(0C Acc-Or-Nom) # данное слово или только в винительном или именительном падежах<br />
(1C Hyphen LINK 1 Nom); # есть дефис сразу справа, после которого именительный падеж<br />
<br />
# Правило 2<br />
REMOVE Gen IF # Удалите родительный падеж если,<br />
(-1C Not-Gen-Prep); # до него идет предлог, который не управляет родительным падежом<br />
<br />
</pre><br />
<br />
Скопируйте данный файл в текстовый редактор и сохраните как <code>rules.rlx</code>. Сначала нам нужно скомпилировать правила:<br />
<br />
<pre><br />
$ cg-comp rules.rlx rules.bin<br />
<br />
Секции: 1, Правила: 2, Наборы: 17, Тэги: 18<br />
<br />
</pre><br />
<br />
Теперь запустите их:<br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | cg-proc rules.bin <br />
^Уран/Уран<np><top><m><sg><nom>$ ^—/—<guio>$ ^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ <br />
^удалённости/удалённость<n><f><nn><pl><nom>/удалённость<n><f><nn><sg><dat>/удалённость<n><f><nn><sg><prp>/удалённость<n><f><nn><pl><acc>$ <br />
^от/от<pr>$ ^Солнца/Солнце<n><nt><nn><sg><gen>/Солнце<n><nt><nn><pl><acc>/Солнце<n><nt><nn><pl><nom>$<br />
^./.<sent>$<br />
<br />
</pre><br />
<br />
И вместе с <code>apertium-tagger</code>:<br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | cg-proc rules.bin |\<br />
apertium-tagger -g ru-kv.prob<br />
^Уран<np><top><m><sg><nom>$ ^—<guio>$ ^седьмой<det><ord><f><sg><nom>$ ^по<pr>$ <br />
^удалённость<n><f><nn><pl><nom>$ ^от<pr>$ ^Солнце<n><nt><nn><sg><gen>$^.<sent>$<br />
</pre><br />
<br />
Мы видим, что, хотя мы удалили неправильный вариант родительного падежа, у нас появился неправильны вариант множественного числа именительного падежа. Так как предлог "по" не может управлять именительным падежом, мы может это тоже удалить, используя похожее правило ко второму варианту.<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* van Halteren, H. (1999) ''Syntactic wordclass tagging'' (Dordrecht: Kluwer)<br />
<br />
[[Category:Машинный перевод для языков России|Session 3]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_3&diff=31444Курсы машинного перевода для языков России/Раздел 32012-01-17T07:31:15Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
В данном разделе будет рассмотрены вопросы морфологической омонимии и описано, как они рассматриваются Грамматикой ограничений (Constraint Grammar). Буду рассмотрены теоретические аспекты некоторых видов морфологической омонимии и работа с ними при помощи правил. Практическая часть будет затрагивать discovering tagging errors и попытки решения ошибок при помощи правил.<br />
<br />
==Теория==<br />
Понятие омонимии, которая будет рассматриваться в этом разделе - это морфологическая омонимия. Это омонимия, которая происходит в следствие того, что, исходя из формы слова можно сделать несколько видов морфологического анализа (также называется как ''омонимичность'' &mdash; samenameness). Например, чувашское слово ''чалка'' может быть,<br />
<br />
* Существительным "чалка" единственного числа в именительном падеже.<br />
* Прилагательным "чалка".<br />
* Глаголом "чалка" в повелительном наклонении, 2 лицо, единственное число.<br />
<br />
Есть также переводная омонимия, например слово ''чалка'' как глагол может быть переведено на русский язык глаголами ''кричать'', ''стрекотать'', ''верещать'', ''галдеть'' и т.д., которая не относится к морфологической омонимии и поэтому в данном разделе не рассматривается.<br />
<br />
===Морфологическая омонимия===<br />
<br />
Существует два основных вида морфологической омонимии. Морфологическая омонимия между частями речи (например, слово может быть как существительным, так и глаголом)и морфологическая омонимия внутри частей речи (например, слово может быть только именем существительным, но форма одинаковая как для именительного, так и для родительного падежей). Обычно, сложнее морфологическая структура языка, тем выше соотношение между омонимией внутри части речи и омонимией между частями речи. <br />
<br />
====Омонимия между частями речи====<br />
<br />
Пример омонимии между частями речи был приведен выше, слово ''чалка'' может быть существительным, глаголом или прилагательным. Нужно принимать во внимание, что омонимия часто встречается между прилагательными, обозначающими народность (например, по-русски ''русский'') или профессии (например, в русском языке ''военный'') и существительными, обозначающими языки или людей (''русский'') или профессии (''военный'').<br />
<br />
В языках тюркской и уральской групп, существительные и глаголы часто имеют одинаковые суффиксы (например, в финском ''-n, -t, -i''). Подобные основы слов (случайные омонимы) встречаются несколько раз в парадигме, например, по-фински ''tule-'' "приходить" и ''tuli'' "пожар": ''tuli'' = "пожар" сущ., ед.ч или "s/он пришел", ''tulet'' = "пожары" or "ты приходишь"; ''tulen" = "пожара" или "я прихожу". <br />
<br />
Деривационные процессы также могут пересекаться с флексией. Таким образом, в финском языке форма множественного числа причастия настоящего времени (и поэтому прилагательного)) и глагола настоящего времени 3 лица множественного числа всегда совпадает: ''laulavat'' = они поют / поющие (кто-то), ''tulevat'' = они приходят / приходящие (кто-то), cf. ''Laulavat baritonit laulavat usein'' (поющие баритоны часто поют).<br />
<br />
В киргизском языке есть несколько примеров ''ак'' "белый" and ''ак'' "течь/бежать (о жидкостях)", которые имеют омонимичную форму, как например ''акты'' "белый + сущ (винит.падеж)" и "акты" "оно текло". Другой пример из казахского языка ''жай'', со следующими значениями: в качестве прилагательного "медленный, простой, тихий, поздний"; в качестве наречия "медленно, просто, тихо"; в качестве существительного "молния", "причина, условие", "проживание", "лук (оружие)"; в качестве глагола "вывешивать для сушки / выкладывать, раскладывать / развешивать, расстилать", "гнать животных на пастбище".<br />
<br />
====Омонимия внутри части речи====<br />
<br />
В качестве примеров омонимии внутри одной части речи давайте рассмотрим славянские языки, где часто встречается падежный синкретизм между именительным, винительным и родительным падежами.<br />
<br />
* ''Примером может быть конденсация '''воды'''.''{{slc|ru}}<br />
* ''Príkladom môže byť kondenzácia '''vody'''.''{{slc|sk}}<br />
* ''Przykładem może być kondensacja '''wody'''.''{{slc|pl}}<br />
* ''Primer je lahko kondenzacija '''vode'''.''{{slc|sl}}<br />
<br />
Однако нельзя сказать что это присуще только славянским языками, тюркские и фино-угорские языки также имеют примеры омонимии, ограниченной частью речи, например, чувашское слово ''итлĕр'' (омонимия между повелительным наклонением и будущем временем), и финское ''voivat'' ("они могут, они могли"; это омонимия между настоящим и прошедшим временем сохраняется для всех глаголов, состоящих из одного слога и заканчивающихся на -i, например ''voida'' "мог" ''soida'' "звонить", ''naida'' "fuck", etc.).<br />
<br />
В языке коми существует системная омонимия у глаголов первого и третьего лица единственного числа прошедшего времени. В нижеприведенном предложении форма ''кывлі''может быть первого и третьего лица.<br />
<br />
:''Ме кывлі, тэ пӧ уджалан вузасянінын.''{{slc|kv}}<br />
:Я слышала, что ты работаешь в магазине.<br />
<br />
В казахском языке системная омонимия наблюдается между всеми глаголами в форме третьего лица единственного и множественного числа. Например, "барады" может означать "она/он/оно идет" или "они идут".<br />
<br />
=== Синтаксическая неоднозначность===<br />
<br />
Еще одна форма омонимии - синтаксическая неоднозначность, при которой одно и тоже предложение или фраза могут пониматься по-разному, но иметь одинаковую морфологическую структуру. Примером может служить фраза с предлогом (предложный оборот), в которой морфологические средства не позволяют показать, к какому компоненту относится фраза с предлогом. Посмотрите на следующие примеры<br />
<br />
* Сегодня я говорил с подругой Анны, с которой я познакомился вчера. (вчера я познакомился с Анной)<br />
* Сегодня я говорил с подругой Анны, с которой я познакомился вчера. (вчера я познакомился с подругой Анны)<br />
<br />
Трудность для машинного перевода возникает тогда, когда уже в языке-источнике предложение содержит неоднозначность, а не в языке перевода. Если омонимия сохранена, это вызывает меньше трудностей. <br />
<br />
Например, для вышеприведенных примеров неоднозначность сохраняется для большинства западно-европейских языков (например, индо-европейских), но для XXX два различных толкования требуют двух разных переводов:<br />
<br />
* xxx<br />
* yyy<br />
<br />
===Разрешение неоднозначности при помощи правил===<br />
<br />
Существует много способов для написания правил по устранению омонимии, самое важное - это суметь объяснить правила в рамках того контекста, которые создает омонимию but the most important thing is to be able to express the rule in terms of the context that provides disambiguation. Например, так как отдельные слова очень часто могут иметь омонимию, такая омонимия часто снимается контекстом. Возьмем фразу на русском языке '' « нашим старым преподавателям »'', так как оба слова ''нашим'' и ''старым'' имеют достаточно омонимов (по три варианта (анализа) на каждое слово three analyses for both), главное слово фразы the head of the phrase ''преподавателям'', у которого только один анализ, помогает снять омонимию с двух других слов which only has one analysis, disambiguates them.<br />
<br />
* наш{{tag|det}}{{tag|pos}}{{tag|m}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|nt}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} старый{{tag|adj}}{{tag|m}}{{tag|sg}}{{tag|ins}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|m}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* наш{{tag|det}}{{tag|pos}}{{tag|nt}}{{tag|sg}}{{tag|ins}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}<br />
* '''наш{{tag|det}}{{tag|pos}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} старый{{tag|adj}}{{tag|mfn}}{{tag|pl}}{{tag|dat}} преподаватель{{tag|n}}{{tag|m}}{{tag|aa}}{{tag|pl}}{{tag|dat}}'''<br />
* ...<br />
<br />
Таким образом мы можем придти к выводу, что необходимо написать правило, которое исключало бы варианты (анализы), которые не согласовываются с главным словом We could thus conceive of writing a rule which removes the analyses that do not agree with the head of the phrase.<br />
<br />
====Грамматика ограничений====<br />
<br />
Один из способов написания правил - это использование формулы formalism которые называются грамматика ограничений called constraint grammar. Правила грамматики ограничений состоят из двух частей: действия по образцу, и по контексту an operation on a pattern, and a context. Примеры по первой части:<br />
<br />
* {{sc|select}}: Given a context, remove all the readings apart from the one(s) matched by the pattern.Учитывая контекст, удалите все варианты, кроме одного (одних), соответствующих образцу шаблону.<br />
* {{sc|remove}}: Учитывая контекст, удалите вариант (ы), соответствующие образцу Given a context, remove the reading(s) that match the pattern.<br />
<br />
Контекстом может служить любая комбинация слов или tags в данном предложении. Чтобы представить что может служить контекстом, давайте посмотрим на несколько существующих правил избавления от омонимии. Мы будем пользоваться фразами на русском языке: <br />
<br />
<center>« ''Услугами детских садов пользуются 135 тысяч работающих матерей.'' »</center><br />
<!-- ''Z usług żłobków korzysta 135 tysięcy pracujących matek'' --><br />
;Омонимия #1<br />
<br />
Слово ''детских'' имеет омонимию между родительным, предложным и винительным падежами. Нам нужно выбрать родительный падеж.<br />
<br />
* <code>SELECT Gen IF (0C A) (*1C GEN BARRIER NPNHA);</code><br />
** <code>SELECT Gen</code>: Select genitive, <code>IF</code><br />
** <code>(0C A)</code>: The current word ''only'' has adjective readings.<br />
** <code>(*1C GEN BARRIER NPNHA)</code>: После искомого слова идет слово, которое только в родительном падеже. Продолжаем искать слова после текущего слова, пока не найдем слово, которое не может изменять существительное и не является наречием After the current word there is a word which is only in the genitive case. Keep searching the words after the current word until a word which is any word except a word which can modify a noun, or an adverb.<br />
<br />
;Омонимия #2<br />
<br />
Слово ''работающих'' имеет омонимию во множественном числе родительного падежа, множественном числе предложного падежа и множественного числа винительного падежа. Нам нужно выбрать вариант множественного числа родительного падежа.<br />
<br />
* <code>SELECT Gen IF (0C ACC-GEN-PRP) (*-1C Num LINK 1C Gen BARRIER NOTGEN);</code><br />
** <code>SELECT Gen</code>: Select genitive, <code>IF</code><br />
*** <code>(0C ACC-GEN-PRP)</code>: The current word can only be accusative, genitive or locative<br />
*** <code>(*-1C Num LINK 1C Gen BARRIER NOTGEN)</code>: Перед текущим словом идет слово, которое может быть только числительным, после которого может быть только слово в родительном падеже, продолжаем искать к началу предложения, пока не найдем слово, которое не содержит родительный тега.<br />
hat does not contain the genitive tag.<br />
<br />
;Омонимия #3<br />
<br />
Слово ''матери'' имеет омонимию в форме множественного числа родительного и винительного падежей. Нам нужно выбрать вариант родительного падежа (или лучше, убрать вариант винительного падежа).<br />
<br />
* <code>REMOVE Acc IF (0C ACC-OR-GEN) (*-1C Num LINK 1C Gen BARRIER NOTGEN);</code><br />
** <code>REMOVE Acc</code>: Remove accusative, <code>IF</code><br />
*** <code>(0C ACC-OR-GEN)</code>: The current word can only be accusative or genitive<br />
*** <code>(*-1C Num LINK 1C Gen BARRIER NOTGEN)</code>: У нас есть предыдущее числительное, у которого есть слово, которое после него может стоять только в родительном падеже (например,''''тысяч), и мы останавливаем поиск, когда находим слово, которое не стоит в родительном падеже There is a previous numeral which has a word which can only be genitive after it (e.g. ''тысяч'') and we stop searching when we find a word that is not in genitive (<code>BARRIER NOTGEN</code>)<br />
<br />
==Практическое задание==<br />
<br />
В данной практической части мы рассмотрим работу маркировщика (tagger), раскроем несколько tagging errors а наконец предложим несколько правил снятия омонимии для решения проблемы tagging errors.<br />
<br />
===Работа с морфологическим анализатором===<br />
<br />
Давайте попытаемся провести морфологический анализ на фразе, которая выглядит довольно просто:<br />
<br />
<pre><br />
echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin<br />
^Уран/Уран<np><top><m><sg><acc>/Уран<np><top><m><sg><nom>$ <br />
^—/—<guio>$ ^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ <br />
^удалённости/удалённость<n><f><nn><sg><gen>/удалённость<n><f><nn><sg><dat>/удалённость<n><f><nn><sg><prp>/удалённость<n><f><nn><pl><acc>/удалённость<n><f><nn><pl><nom>$ <br />
^от/от<pr>$ <br />
^Солнца/Солнце<n><nt><nn><sg><gen>/Солнце<n><nt><nn><pl><acc>/Солнце<n><nt><nn><pl><nom>$<br />
^./.<sent>$<br />
</pre><br />
<br />
Фраза, которая выглядела довольно легко и понятно, на самом деле содержит множественную омонимию.<br />
<br />
===Поиск ошибок===<br />
<br />
Apertium предлагает статистический маркировщик statistical tagger, который работает следующим образом: <br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | apertium-tagger -p -g kv-ru.prob <br />
^Уран/Уран<np><top><m><sg><acc>$ <br />
^—/—<guio>$ <br />
^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ ^удалённости/удалённость<n><f><nn><sg><gen>$ <br />
^от/от<pr>$ ^Солнца/Солнце<n><nt><nn><sg><gen>$^./.<sent>$<br />
</pre><br />
<br />
В маркировщике довольно легко найти ошибки, их две:<br />
<br />
* "Уран" должно стоять в именительном падеже, а не винительном.<br />
* После предлога "по", падеж слова "удалённость" должен быть дательным, а не родительным.<br />
<br />
Со остальных слов омонимия была снята правильно.<br />
<br />
===Разработка правил===<br />
<br />
При разработке правил, важно принимать во внимание следующее:<br />
<br />
* Набор ситуаций, в которых это правило будет применяться. Например, это правило будет применимо только к данному слову, к данному слову и к одному или двум словам, окружающим данное слово, применимо к придаточному предложению или ко всему предложению в целом?<br />
* Данное правило будет применимо только к этой лемме или к любому слову, которое относится к данной части речи?<br />
* Подумать о виде омонимии для которой создается правило. Например, правило будет применимо к любой омонимии между винительным и именительным падежами или применимо только в случае падежей существительных?<br />
* Очень часто бывает так, что существует несколько правил, которые одинаково подходят для снятия омонимии в предложении. Важно не загнать себя в ловушку, пытаясь найти "самое совершенное" правило.<br />
<br />
К вышеприведенным примерам, мы можем разработать следующие правила:<br />
<br />
* Если слово может стоять только в именительном или винительном падежах, а после него следуют дефис(&mdash;) и прилагательное, которое может быть только в именительном падеже, тогда выбираем вариант именительного падежа.<br />
* После предлога "по" невозможен вариант родительного падежа.<br />
<br />
Создайте несколько правил, которые снимают проблему языковой омонимии для выбранной вами пары языков.<br />
<br />
===Грамматика ограничений===<br />
<br />
Если вы завершили этап создания (описания) правил, вы можете попробовать преобразовать их в коды в грамматике ограничений, как показано в примере на русском языке. Ниже приведен план создания файла грамматики ограничений для кодирования двух правил из предыдущих примеров и инструкция как с этим работать.<br />
<br />
<br />
<pre><br />
DELIMITERS = "<.>" "<!>" "<?>" ;<br />
SOFT-DELIMITERS = "<,>" ;<br />
<br />
LIST BOS = (>>>) ; # Beginning of sentence<br />
LIST EOS = (<<<) ; # End of sentence<br />
<br />
LIST Hyphen = guio ;<br />
LIST Nom = nom ;<br />
LIST Acc = acc ;<br />
LIST Gen = gen ;<br />
<br />
LIST Not-Gen-Prep = "по";<br />
<br />
SET Acc-Or-Nom = Acc | Nom ;<br />
<br />
SECTION<br />
<br />
# Rule 1<br />
REMOVE Acc IF # Remove accusative reading if,<br />
(0C Acc-Or-Nom) # the current word is only accusative or nominative<br />
(1C Hyphen LINK 1 Nom); # there is a hyphen directly to the right, with a nominative following<br />
<br />
# Rule 2<br />
REMOVE Gen IF # Remove a genitive reading if,<br />
(-1C Not-Gen-Prep); # it is preceeded by a preposition which does not ever govern the genitive<br />
<br />
</pre><br />
<br />
Copy this file into a text editor, and save it as <code>rules.rlx</code>. First we need to compile the rules:<br />
<br />
<pre><br />
$ cg-comp rules.rlx rules.bin<br />
<br />
Sections: 1, Rules: 2, Sets: 17, Tags: 18<br />
<br />
</pre><br />
<br />
And now run them:<br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | cg-proc rules.bin <br />
^Уран/Уран<np><top><m><sg><nom>$ ^—/—<guio>$ ^седьмая/седьмой<det><ord><f><sg><nom>$ <br />
^по/по<pr>$ <br />
^удалённости/удалённость<n><f><nn><pl><nom>/удалённость<n><f><nn><sg><dat>/удалённость<n><f><nn><sg><prp>/удалённость<n><f><nn><pl><acc>$ <br />
^от/от<pr>$ ^Солнца/Солнце<n><nt><nn><sg><gen>/Солнце<n><nt><nn><pl><acc>/Солнце<n><nt><nn><pl><nom>$<br />
^./.<sent>$<br />
<br />
</pre><br />
<br />
And in conjunction with the <code>apertium-tagger</code>:<br />
<br />
<pre><br />
$ echo "Уран — седьмая по удалённости от Солнца." | lt-proc ru-kv.automorf.bin | cg-proc rules.bin |\<br />
apertium-tagger -g ru-kv.prob<br />
^Уран<np><top><m><sg><nom>$ ^—<guio>$ ^седьмой<det><ord><f><sg><nom>$ ^по<pr>$ <br />
^удалённость<n><f><nn><pl><nom>$ ^от<pr>$ ^Солнце<n><nt><nn><sg><gen>$^.<sent>$<br />
</pre><br />
<br />
We can see that although we've removed the incorrect genitive, now we get an incorrect plural nominative reading. As "по" never governs the nominative, we can remove that too, using a similar rule to the second one.<br />
<br />
==Further reading==<br />
<br />
* van Halteren, H. (1999) ''Syntactic wordclass tagging'' (Dordrecht: Kluwer)<br />
<br />
[[Category:Машинный перевод для языков России|Session 3]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_2&diff=31443Курсы машинного перевода для языков России/Раздел 22012-01-17T06:41:51Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Данный раздел будет посвящен знакомству с более сложными темами в словарях Apertium. В первом разделе мы увидели, как делать простые словарные записи, и рассмотрели парадигмы. В данном разделе мы рассмотрим как вводить словосочетания.<br />
<br />
==Теория==<br />
<br />
Говоря о словосочетаниях, мы должны приниматься во внимание несколько аспектов. <br />
<br />
===Композиционность===<br />
<br />
{{comment|TODO; find examples}}<br />
<br />
Словосочетание является составным, если его значение можно вывести из значений слов, которые его составляют. Однако это не означает, что оно останется составным при переводе. Например:<br />
<br />
* ''Телефонная будка''{{slc|ru}} - составное, значение становится понятным из значений двух компонентов.<br />
* ''Juego de etiquetas''{{slc|es}} - это составное словосочетание, но отдельные его компоненты в данных значениях употребляются редко.<br />
* ''Итальянская забастовка''{{slc|ru}} - это частично не составное словосочетание, значение целого выражения непонятно, если знать отдельные значения двух составляющих слов.<br />
* ''Kafa çekmek''{{slc|tr}} - коллокация (не составное), общее значение не может быть получено из значений его компонентов.<br />
<br />
Учитывать композиционность важно при переводе, потому что составное словосочетние по ошибке может быть рассмотрено как два отдельных простых слова, хотя должен быть список всех не составных словосочетаний (коллокаций).<br />
<br />
===Изменяемость===<br />
<br />
{{comment|TODO; find examples}}<br />
<br />
В словосочетаниях могут меняться как окончания, например, во французском языке ''vaut la peine, valait la peine'', так и слова, в киргизском: ''башым айланып жатат, башым '''катуу''' айланып жатат'' "у меня голова кружится", "у меня голова '''очень''' кружится". Некоторые глаголы в словосочетаниях могут принимать пассивную форму.<br />
<br />
Окончания слов могут изменяться или только в одном слове: <br />
<br />
* в конце, ''pazartesi gün, pazartesi gün'''ler'''''{{slc|tr}} or<br />
* в середине ''hôtel de ville, hôtel'''s''' de ville''{{slc|fr}}<br />
<br />
Или в обоих словах:<br />
<br />
* ''телефонная будка, телефонн'''ой''' будк'''и''''' {{slc|ru}} и <br />
* ''баш айлан-, баш'''ым''' айлан'''ып жатат''''' {{slc|ky}}.<br />
* ''курсак ач-, курсаг'''ым''' ач'''ып жатат''''' {{slc|ky}}.<br />
<br />
===Contiguity (смежность, примыкание)===<br />
<br />
{{comment|TODO; find examples}}<br />
<br />
Наряду с внутренними изменениями, словосочетания делятся на contiguous (контактные) или (неконтактные) or discontiguous. Contiguous означает, что слова следуют друз за другом, разделенные пробелом. Большинство вышеприведенных примеров - это contiguous словосочетания. Но бывают и discontiguous, такие как фразовые глаголы в шведском и нидерландском, например: ''lopen uit de hand'', ''äta upp'' и ''tilføje'':<br />
<br />
* ''Twee jaar later '''loopt''' de situatie in het land onder de indruk van massabetogingen '''uit de hand'''.''{{slc|nl}}<br />
* ''Alla stygga barnen '''åt''' tigern '''upp'''.''{{slc|sv}}<br />
* '''''Føje''' et ord eller en sætning '''til''' den brugerdefinerede ordbog.''{{slc|da}}<br />
<br />
==Практическая часть==<br />
<br />
===Простое словосочетание===<br />
<br />
===Клитика===<br />
<br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 2]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_1&diff=31442Курсы машинного перевода для языков России/Раздел 12012-01-17T06:17:57Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
Данный раздел имеет две цели. Первая цель - дать теоретические представления о морфологии, как слова склоняются и как формируются новые слова. И вторая цель - показать, как происходит анализ и морфологический разбор в системе Apertium.<br />
<br />
==Tеория==<br />
<br />
Данный теоретический раздел разбит на три подраздела. В первом разделе речь пойдет о "морфотактике", т.е.как морфемы (части слова) возникают и затем соединяются. Во втором разделе более подробно будет говориться о "морфофонологии", т.е. о том, какие изменения происходят в морфемах в результате их соединения. И в последнем подразделе мы расскажем о том, как с этими процессами работает компьютер. <br />
<br />
===Морфотактика===<br />
<br />
Морфотактика языка - это способ, которым морфемы в данном языке соединяются для формирования слов. Морфемы - наименьшие смыслообразующие части. Морфемы могут быть свободными или связанными. Свободные морфемы - это морфемы, которые могут встречаться сами по себе, а связанные - которые должны быть связаны с другим словом. Одна морфема может иметь несколько алломорфов, которые обозначают одно и то же, но пишутся или произносятся по-разному. Например, дательные падеж (обозначает направление по отношению к предмету)в Чувашском языке имеет несколько алломорфов, употребление которых зависит от качества гласного в основе слова, после которой он употребляется. <br />
<br />
:''aчама'' ача·м·'''а''' "к моему ребенку"<br />
:''ачамсене'' ача·м·сен·'''е''' "к моим детям"<br />
:''ӗҫӗме'' ӗҫ·ӗм·'''е''' "к моей работе"<br />
:''каҫмана'' каҫма·'''на''' "переходу"<br />
<br />
Дальше морфемы могут быть разделены на два подтипа, флективные и деривационные. В примерах, знак · указывает на деривационный стык, а » - на флективный стык. <br />
<br />
:''ӗҫ'' ӗҫ "работ·а"<br />
:''ӗҫсем'' ӗҫ·'''сем''' "работ·ы"<br />
:''ĕçчен'' ĕç»'''чен''' "работ»ник"<br />
:''ĕçченсем'' ĕç»'''чен'''·'''сем''' "работ»ник·и"<br />
:''ӗҫле'' ӗҫ»'''ле''' "работа»ть"<br />
:''ӗҫле'' ӗҫ»'''ле'''»'''тер''' "заставить (кого-то) работать"<br />
<br />
====Флексия изменение формы слова)====<br />
<br />
Флективные морфемы являются носителями грамматических категорий, таких как число, падеж, время, и тд.,но не не изменяют категорию слова (часть речи), не изменяют основного семантического значения. Например в чувашском языке ''ӗҫ'' и ''ӗҫсем'' имеют одно и тоже основное семантическое значение, но если добавить деривационный аффикс ''-лЕ'', ''ӗҫле'', тогда значение изменится и станет "делать ӗҫ".<br />
<br />
Примерами флективных морфем являются ''-lar'', ''-сем'' и ''-и'' множественное число (''kitap·lar'' {{slc|tr}}, ''ача·сем'' {{slc|cv}}, ''книг·и'' {{slc|ru}}), и окончания падежей ''-ран'' (аблятив), ''-ті'' (транслатив), и ''-де'' (местный падеж): уй·ран {{slc|cv}}, кань·ті {{slc|kv}}, үй·де {{slc|kk}})<br />
<br />
При переводе часто именно форма слова подвергается изменениям, то есть, существуют правила, которые определяют как различные окончания слова изменяются при переводе.<br />
<br />
<br />
====Деривация====<br />
<br />
Деривационные морфемы в свою очередь изменяют основное семантическое значение слова, а также могут изменять категорию слова. В зависимости от языковой пары, деривационные морфемы обычно подвергаются меньшим изменениям, чем флективные, так как семантические изменения, вызываемые разными деривационными морфемами, более непредсказуемы.<br />
<br />
Следующие слова могут служить примерами деривации -LIK в Киргиз (ай "месяц" + LIK = айлык "месячная оплата"), -LA in Kyrgyz (ай "месяц" + LA = айла- "пройти месяц"), и -ja на финском (kirjoitta+ja "писать" + "действующее лицо" = "писатель").<br />
<br />
====Словосложение====<br />
<br />
Словосложение - это процесс, при котором два или более слов соединяются и образуют одно слово. Среди языков Европы, наиболее часто этот процесс заметен в германских языках и не индоевропейских языках.<br />
<br />
Примеры словосложений:<br />
<br />
* Tietokoneanimaatioelokuva = Tietokone+animaatio+elo+kuva {{slc|fi}}<br />
* Kontaktlinsenverträglichkeitstest = Kontakt+Linsen+Verträglichkeit(s)+Test {{slc|de}}<br />
* Еlmegyógyintézet = Elme+gyógy+intézet {{slc|hu}}<br />
* Giellamovttidanplána = Giella+movttidan+plána {{slc|se}}<br />
<br />
В языках, где словосложение очень развито, желательно, чтобы составные слова анализировались и автоматически переводились. Это позволяет сократить морфемный лексикон, а также работать с ранее не встречающимися формами.<br />
<br />
====Клитика====<br />
<br />
Клитика (а clitic) - это синтаксически независимое слово, которое фонологически ведет себя как аффикс другого слова. Для целей машинного перевода между письменными языками, нас особенно интересует аффиксы, которые пишутся орфографически либо вместе с другим словом, либо отдельно, но их форма обусловлена другим словом.<br />
<br />
В тюркских языках (в некоторых угорских языках) есть вопросительное слово (иногда его называют частица), в турецком mA, Kyrgyz ''-BI'', казахском ''MA'', финском ''-kO'', северо-саамском North Sámi ''-go''. Примеры: ''келесің бе?'' {{slc|kk}} ''келесиңби?'' {{slc|ky}} ''tuletko?'' {{slc|fi}} ''boađátgo?'' {{slc|se}} "ты идешь?". Данная фонема является клитикой (a clitic) потому что ее фонологическая форма зависит от предыдущего слова, но синтаксически (а иногда орфографически) она самостоятельна. <br />
<br />
В таджикском языке, есть вариант слова для союза "и" который, синтаксический ведет себя как союз, присоединяется к предыдущему слова, каким бы оно не было. Он может иметь форму ''-у'' (после согласных) и ''-ву'' (после гласных). Альтернативным примером выражения ''чой ва шароб'' "чай и вино ": будет ''чою шароб''.<br />
<br />
===Морфофонология===<br />
<br />
Морфофонология изучает фонологические изменения, которые происходят с морфемами при присоединении. Морфофонология четко прослеживается в любом наборе морфем любого языка, но в данном разделе мы объясним этот процесс на примере суффикса множественного числа в татарском языке, -/LAr/. <br />
<br />
Суффикс имеет четыре формы, выбор которых зависит от существительного, к которому он присоединяется: -лар, -ләр, -нар, -нәр. Например, алма·лар "яблоки", тел·ләр "языки", урам+нар "улицы", көн·нәр "дни". В данных примерах, первый согласный это /л/ или /н/ в зависимости от звука, на который заканчивается слово; /н/ если суффикс следует непосредственно после носового согласного (м, н, ң), a /л/ после других звуков. Гласный /A/ изменяется в зависимости от последней гласной слова: после гласных заднего ряда "back/твёрдые гласные" (а, о, ы, у) это /а/, а после гласных переднего ряда "front/мягкие гласные" (ә, э, ө, и, ү) это /ә/.<br />
<br />
===Компьютерные репрезентации===<br />
<br />
Компьютерные морфологические модели обычно пользуются инструментами под названием "конечные преобразователи" (finite-state transducers) для создания морфотактики и морфофонологии. Конечный преобразователь немного похож на схему, в которой в зависимости от части слова которую вы считываете вы уже решаете какая у него флексия или деривация. Но в отличии от обыкновенной схемы, решение может вести к множеству заключений! <br />
<br />
[[Image:Bashkir lexc.png|800px|center|thumb|Конечный преобразователь, моделирующий основные категории морфотактики трех имен существительных на башкирском языке (множественное число, принадлежность, падеж). Заметьте, как используются архифонемы (буквы в <code>{</code> и <code>}</code>) для репрезентации букв, которые могут изменяться согласно правилам фонологии.]]<br />
<br />
Вышеупомянутый преобразователь, в более расширенном виде сложен для полного ознакомления, но, если мы удалим категорию принадлежности, нам будет проще более детально посмотреть как он работает. <br />
<br />
[[File:Bashkir mektep.png|800px|center|thumb|Конечный преобразователь, моделирующий падежное окончание и окончание множественного числа башкирского слова ''мәктәп'' "школа".]]<br />
<br />
Из нашего примера башкирское слово ''мәктәп'' "школа" изменяется по числам (единственное, множественное) и падежам (именительный, родительный, дательный, винительный, местный и творительный). Если посмотреть на вышеуказанный преобразователь, каждая кривая на графике имеет обозначение (пометку). Она состоит из двух частей, левая часть (слева от <code>:</code>) и правая (справа от <code>:</code>). При чтении слева направо мы можем провести анализ слова. <br />
<br />
<div style="float: right"><br />
{|class=wikitable<br />
! !! Ед.число !! Множественное<br />
|-<br />
| '''Именительный''' || мәктәп || мәктәптәр<br />
|-<br />
| '''Винительный''' || мәктәпте || мәктәптәрҙе<br />
|-<br />
| '''Родительный''' || мәктәптең || мәктәптәрҙең<br />
|-<br />
| '''Местный''' || мәктәптә || мәктәптәрҙә<br />
|-<br />
| '''Творительный''' || мәктәптән || мәктәптәрҙән<br />
|-<br />
| '''Дательный''' || мәктәпкә || мәктәптәргә<br />
|-<br />
|}<br />
</div><br />
<br />
Вы можете попробовать проделать такую же работу со словом из таблицы склонений справа. Например, ''мәктәптәрҙән'' "из школ". Нам следует получить следующий анализ <code>мәктәп<n><pl><abl></code>. Процесс выглядит примерно следующим образом: <br />
<br />
* read <code>м</code>, write <code>м</code> (input: <code>м</code>, оutput: <code>м</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мә</code>, оutput: <code>мә</code>)<br />
* read <code>к</code>, write <code>к</code> (input: <code>мәк</code>, оutput: <code>мәк</code>)<br />
* read <code>т</code>, write <code>т</code> (input: <code>мәкт</code>, оutput: <code>мәкт</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мәктә</code>, оutput: <code>мәктә</code>)<br />
* read <code>п</code>, write <code>п</code> (input: <code>мәктәп</code>, оutput: <code>мәктәп</code>)<br />
* read <code>0</code>, write {{tag|n}} (input: <code>мәктәп0</code>, оutput: <code>мәктәп</code>{{tag|n}})<br />
* read <code>т</code>, write {{tag|pl}} (input: <code>мәктәп0т</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}})<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}0)<br />
* read <code>p</code>, write <code>0</code> (input: <code>мәктәп0тәp</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00)<br />
* read <code>0</code>, write {{tag|abl}} (input: <code>мәктәп0тәp0</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}})<br />
* read <code>ҙ</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙ</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>0</code>)<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>00</code>)<br />
* read <code>н</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙән</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>000</code>)<br />
<br />
Заметьте, что чтение и написание 0 означает ничего не читать и не записывать.<br />
<br />
==Практическая часть==<br />
<br />
Для практической части есть два раздаточных материала, <br />
<br />
* [[Как использовать HFST, чтобы разработать новый морфологический анализатор]]<br />
* [[Как использовать lttoolbox, чтобы разработать новый морфологический анализатор]]<br />
<br />
==Для дальнейшего чтения==<br />
<br />
* Kenneth R. Beesley and Lauri Karttunen (2003) ''Конечная морфология / Finite-State Morphology'' (CSLI Publications)<br />
* Richard Sproat (1992) ''Морфология и Компьютерные вычисления / Morphology and Computation'' (MIT Press)<br />
* Francis M. Tyers (2007) "[[Руководство по созданию новой языковой пары]]" (Apertium Wiki)<br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 1]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_1&diff=31441Курсы машинного перевода для языков России/Раздел 12012-01-17T05:54:06Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
Данный раздел имеет две цели. Первая цель - дать теоретические представления о морфологии, как слова склоняются и как формируются новые слова. И вторая цель - показать, как происходит анализ и морфологический разбор в системе Apertium.<br />
<br />
==Tеория==<br />
<br />
Данный теоретический раздел разбит на три подраздела. В первом разделе речь пойдет о "морфотактике", т.е.как морфемы (части слова) возникают и затем соединяются. Во втором разделе более подробно будет говориться о "морфофонологии", т.е. о том, какие изменения происходят в морфемах в результате их соединения. И в последнем подразделе мы расскажем о том, как с этими процессами работает компьютер. <br />
<br />
===Морфотактика===<br />
<br />
Морфотактика языка - это способ, которым морфемы в данном языке соединяются для формирования слов. Морфемы - наименьшие смыслообразующие части. Морфемы могут быть свободными или связанными. Свободные морфемы - это морфемы, которые могут встречаться сами по себе, а связанные - которые должны быть связаны с другим словом. Одна морфема может иметь несколько алломорфов, которые обозначают одно и то же, но пишутся или произносятся по-разному. Например, дательные падеж (обозначает направление по отношению к предмету)в Чувашском языке имеет несколько алломорфов, употребление которых зависит от качества гласного в основе слова, после которой он употребляется. <br />
<br />
:''aчама'' ача·м·'''а''' "к моему ребенку"<br />
:''ачамсене'' ача·м·сен·'''е''' "к моим детям"<br />
:''ӗҫӗме'' ӗҫ·ӗм·'''е''' "к моей работе"<br />
:''каҫмана'' каҫма·'''на''' "переходу"<br />
<br />
Дальше морфемы могут быть разделены на два подтипа, флективные и деривационные. В примерах, знак · указывает на деривационный стык, а » - на флективный стык. <br />
<br />
:''ӗҫ'' ӗҫ "работ·а"<br />
:''ӗҫсем'' ӗҫ·'''сем''' "работ·ы"<br />
:''ĕçчен'' ĕç»'''чен''' "работ»ник"<br />
:''ĕçченсем'' ĕç»'''чен'''·'''сем''' "работ»ник·и"<br />
:''ӗҫле'' ӗҫ»'''ле''' "работа»ть"<br />
:''ӗҫле'' ӗҫ»'''ле'''»'''тер''' "заставить (кого-то) работать"<br />
<br />
====Флексия изменение формы слова)====<br />
<br />
Флективные морфемы являются носителями грамматических категорий, таких как число, падеж, время, и тд.,но не не изменяют категорию слова (часть речи), не изменяют основного семантического значения. Например в чувашском языке ''ӗҫ'' и ''ӗҫсем'' имеют одно и тоже основное семантическое значение, но если добавить деривационный аффикс ''-лЕ'', ''ӗҫле'', тогда значение изменится и станет "делать ӗҫ".<br />
<br />
Примерами флективных морфем являются ''-lar'', ''-сем'' и ''-и'' множественное число (''kitap·lar'' {{slc|tr}}, ''ача·сем'' {{slc|cv}}, ''книг·и'' {{slc|ru}}), и окончания падежей ''-ран'' (аблятив), ''-ті'' (транслатив), и ''-де'' (местный падеж): уй·ран {{slc|cv}}, кань·ті {{slc|kv}}, үй·де {{slc|kk}})<br />
<br />
При переводе часто именно форма слова подвергается изменениям, то есть, существуют правила, которые определяют как различные окончания слова изменяются при переводе.<br />
<br />
<br />
====Деривация====<br />
<br />
Деривационные морфемы в свою очередь изменяют основное семантическое значение слова, а также могут изменять категорию слова. В зависимости от языковой пары, деривационные морфемы обычно подвергаются меньшим изменениям, чем флективные, так как семантические изменения, вызываемые разными деривационными морфемами, более непредсказуемы.<br />
<br />
Следующие слова могут служить примерами деривации -LIK в Киргиз (ай "месяц" + LIK = айлык "месячная оплата"), -LA in Kyrgyz (ай "месяц" + LA = айла- "пройти месяц"), и -ja на финском (kirjoitta+ja "писать" + "действующее лицо" = "писатель").<br />
<br />
====Словосложение====<br />
<br />
Словосложение - это процесс, при котором два или более слов соединяются и образуют одно слово. Среди языков Европы, наиболее часто этот процесс заметен в германских языках и не индоевропейских языках.<br />
<br />
Примеры словосложений:<br />
<br />
* Tietokoneanimaatioelokuva = Tietokone+animaatio+elo+kuva {{slc|fi}}<br />
* Kontaktlinsenverträglichkeitstest = Kontakt+Linsen+Verträglichkeit(s)+Test {{slc|de}}<br />
* Еlmegyógyintézet = Elme+gyógy+intézet {{slc|hu}}<br />
* Giellamovttidanplána = Giella+movttidan+plána {{slc|se}}<br />
<br />
В языках, где словосложение очень развито, желательно, чтобы составные слова анализировались и автоматически переводились. Это позволяет сократить морфемный лексикон, а также работать с ранее не встречающимися формами.<br />
<br />
====Клитика====<br />
<br />
Клитика (а clitic) - это синтаксически независимое слово, которое фонологически ведет себя как аффикс другого слова. Для целей машинного перевода между письменными языками, нас особенно интересует аффиксы, которые пишутся орфографически либо вместе с другим словом, либо отдельно, но их форма обусловлена другим словом.<br />
<br />
В тюркских языках (в некоторых угорских языках) есть вопросительное слово (иногда его называют частица), в турецком mA, Kyrgyz ''-BI'', казахском ''MA'', финском ''-kO'', северо-саамском North Sámi ''-go''. Примеры: ''келесің бе?'' {{slc|kk}} ''келесиңби?'' {{slc|ky}} ''tuletko?'' {{slc|fi}} ''boađátgo?'' {{slc|se}} "ты идешь?". Данная фонема является клитикой (a clitic) потому что ее фонологическая форма зависит от предыдущего слова, но синтаксически (а иногда орфографически) она самостоятельна. <br />
<br />
В таджикском языке, есть вариант слова для союза "и" который, синтаксический ведет себя как союз, присоединяется к предыдущему слова, каким бы оно не было. Он может иметь форму ''-у'' (после согласных) и ''-ву'' (после гласных). Альтернативным примером выражения ''чой ва шароб'' "чай и вино ": будет ''чою шароб''.<br />
<br />
===Морфофонология===<br />
<br />
Морфофонология изучает фонологические изменения, которые происходят с морфемами при присоединении. Морфофонология четко прослеживается в любом наборе морфем любого языка, но в данном разделе мы объясним этот процесс на примере суффикса множественного числа в татарском языке, -/LAr/. <br />
<br />
Суффикс имеет четыре формы, выбор которых зависит от существительного, к которому он присоединяется: -лар, -ләр, -нар, -нәр. Например, алма·лар "яблоки", тел·ләр "языки", урам+нар "улицы", көн·нәр "дни". В данных примерах, первый согласный это /л/ или /н/ в зависимости от звука, на который заканчивается слово; /н/ если суффикс следует непосредственно после носового согласного (м, н, ң), a /л/ после других звуков. Гласный /A/ изменяется в зависимости от последней гласной слова: после гласных заднего ряда "back/твёрдые vowels" (а, о, ы, у) это /а/, а после гласных переднего ряда "front/мягкие vowels" (ә, э, ө, и, ү) это /ә/.<br />
<br />
===Компьютерные представления representations===<br />
<br />
Компьютерные морфологические модели обычно пользуются инструментами под названием "конечные преобразователи" (finite-state transducers) для создания морфотактики и морфофонологии to model both morphotactics and morphophonology. Конечный преобразователь немного похож на схему ( flowchart), где в зависимости от части слова которую вы видите вы уже решаете какая у него флексия или деривация where depending on the part of the word you are reading, you make different decisions as to what inflection or derivation it has. В отличии от обыкновенной схемы, решение может привести к более чем одному заключению! Unlike the typical flowchart however, a decision may lead to more than one conclusion! <br />
<br />
[[Image:Bashkir lexc.png|800px|center|thumb|Конечный преобразователь, моделирующий основные категории морфотактики трех имен существительных на башкирском языке te transducer modelling the basic nominal morphotactics (множественное число, принадлежность, падеж) of three words in Bashkir. Заметьте, как используются архифонемы (буквы в <code>{</code> и <code>}</code>) для репрезентации букв, которые могут изменяться согласно правилам фонологии.]]<br />
<br />
Вышеупомянутый преобразователь, в расширенном виде сложен для полного ознакомления, но, если мы удалим категорию принадлежности, нам будет проще подробнее посмотреть как он работает. The above transducer, once expanded is too big to easily read through, but if we remove the possessives, we can take a closer look at how it works.<br />
<br />
[[File:Bashkir mektep.png|800px|center|thumb|Конечный преобразователь, моделирующий падежное окончание и окончание множественного числа башкирского слова ''мәктәп'' "школа".]]<br />
<br />
Из нашего примера башкирское слово ''мәктәп'' "школа" изменяется по числам (единственное, множественное) и падежам (именительный, родительный, дательный, винительный, местный и творительный). Если посмотреть на вышеуказанный преобразователь, каждая arc на графике graph имеет обозначение (пометку). Она состоит из двух частей, левая часть (слева от <code>:</code>) и правая(справа от <code>:</code>). При чтении слева направо мы можем провести анализ слова. <br />
<br />
<div style="float: right"><br />
{|class=wikitable<br />
! !! Ед.число !! Множественное<br />
|-<br />
| '''Именительный''' || мәктәп || мәктәптәр<br />
|-<br />
| '''Винительный''' || мәктәпте || мәктәптәрҙе<br />
|-<br />
| '''Родительный''' || мәктәптең || мәктәптәрҙең<br />
|-<br />
| '''Местный''' || мәктәптә || мәктәптәрҙә<br />
|-<br />
| '''Творительный''' || мәктәптән || мәктәптәрҙән<br />
|-<br />
| '''Дательный''' || мәктәпкә || мәктәптәргә<br />
|-<br />
|}<br />
</div><br />
<br />
Вы можете попробовать проделать такую же работу со словом из таблицы склонений справа. Например, ''мәктәптәрҙән'' "из школ". Нам следует получить следующий анализ <code>мәктәп<n><pl><abl></code>. Процесс выглядит примерно следующим образом: <br />
<br />
* read <code>м</code>, write <code>м</code> (input: <code>м</code>, оutput: <code>м</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мә</code>, оutput: <code>мә</code>)<br />
* read <code>к</code>, write <code>к</code> (input: <code>мәк</code>, оutput: <code>мәк</code>)<br />
* read <code>т</code>, write <code>т</code> (input: <code>мәкт</code>, оutput: <code>мәкт</code>)<br />
* read <code>ә</code>, write <code>ә</code> (input: <code>мәктә</code>, оutput: <code>мәктә</code>)<br />
* read <code>п</code>, write <code>п</code> (input: <code>мәктәп</code>, оutput: <code>мәктәп</code>)<br />
* read <code>0</code>, write {{tag|n}} (input: <code>мәктәп0</code>, оutput: <code>мәктәп</code>{{tag|n}})<br />
* read <code>т</code>, write {{tag|pl}} (input: <code>мәктәп0т</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}})<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}0)<br />
* read <code>p</code>, write <code>0</code> (input: <code>мәктәп0тәp</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00)<br />
* read <code>0</code>, write {{tag|abl}} (input: <code>мәктәп0тәp0</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}})<br />
* read <code>ҙ</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙ</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>0</code>)<br />
* read <code>ә</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙә</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>00</code>)<br />
* read <code>н</code>, write <code>0</code> (input: <code>мәктәп0тәp0ҙән</code>, оutput: <code>мәктәп</code>{{tag|n}}{{tag|pl}}00{{tag|abl}}<code>000</code>)<br />
<br />
Заметьте, что читать или писать 0 значит ничего не читать и не записывать.<br />
<br />
==Практическая часть==<br />
<br />
Для практической части есть два раздаточных материала, <br />
<br />
* [[Как использовать HFST, чтобы разработать новый морфологический анализатор]]<br />
* [[Как использовать lttoolbox, чтобы разработать новый морфологический анализатор]]<br />
<br />
==Еще для чтения==<br />
<br />
* Kenneth R. Beesley and Lauri Karttunen (2003) ''Finite-State Morphology'' (CSLI Publications)<br />
* Richard Sproat (1992) ''Morphology and Computation'' (MIT Press)<br />
* Francis M. Tyers (2007) "[[Руководство по созданию новой языковой пары]]" (Apertium Wiki)<br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 1]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_0&diff=31438Курсы машинного перевода для языков России/Раздел 02012-01-17T05:17:00Z<p>Enjo: </p>
<hr />
<div><center><big>Раздел 0: Обзор</big></center><br />
{{TOCD}}<br />
В данном разделе будет дан краткий обзор такого метода перевода как машинный перевод, основанного на использовании введенных правил и представлена работа открытой платформы свободного машинного перевода Apertium<br />
<br />
Существуют два принципиально отличающихся друг от друга вида машинного перевода: <br />
<br />
* Машинный перевод, основанный на правилах (Rule Based Machine Translation), его также называют символьным машинным переводом; Apertium как раз относится к данному виду и этот раздел посвящен подвиду машинного перевода, основанного на правилах <br />
* Корпусный машинный перевод; при таком переводе для перевода новых предложений переводчик обращается к пулу из ранее переведенных предложений. <br />
<br />
Если кратко представить корпусный МП, то его можно разделить на две главные подгруппы: подгруппа, в основе которой лежат статистические данные, и подгруппа, основанная на примерах. Теоретически, основной принцип работы статистического машинного перевода заключается в следующем: берется набор ранее переведенных предложений (параллельный корпус) и подсчитывается какие символы совпадают наиболее часто. Всем символам, которые совпадают, присваивается признак вероятности. При переводе нового предложения переводчик рассматривает все слова (символы), которым присвоен признак вероятности, их вероятности комбинируется, делается несколько вариантов возможных переводов и затем выбирается вариант перевода с самой высокой степенью вероятности. Первые системы статистического МП учитывали только совпадение слов, но более новые системы могут учитывать совпадения последовательных рядов слов (фраз) и иерархических деревьев. <br />
<br />
В противовес этому, машинный перевод, основанный на анализе примеров, может быть назван переводом по аналогии. В нем также используется параллельные корпуса, но, вместо того чтобы обращаться к признакам вероятности слов, переводчик учится делать анализ на основе примеров. Например, если будет дана пара предложений (A la chica le gustan los gatos(es) → Das Mädchen mag Katzen(de) и A la chica le gustan los elefantes → Das Mädchen mag Elefanten) переводчик может дать следующий пример перевода (A la chica le gustan X → Das Mädchen mag X). При переводе нового предложения, переводчик обращается и анализирует данные части предложения и заменяет их. <br />
<br />
Автоматическое применение большего пула переводных текстов (переводной памяти) к переводному тексту может быть также названо видом машинного перевода с использованием корпуса. На самом деле, границы между статистическим машинным переводом и переводом, которые использует и анализирует примеры достаточно размыты. И в том и в другом методе есть свои недостатки и преимущества. При использовании методов машинного перевода с использованием корпуса, переводной текст обычно выглядит более естественным, но может страдать сам смысл перевода, при использовании систем, которые используют метод, основанный на применении правил, перевод выглядит не таким гладким, но более точно передавать смысл с языка оригинала.<br />
<br />
Системы, основанные на правила, и системы, в которых используются корпус, могут быть объединены различными способами и представлять собой смешанную систему. Например, можно создать смешанную систему, где корпусный машинный перевод помогает найти эквиваленты, а затем применяется метод, основанный на правилах, в случае, если не найдено ни одного совпадающего образца.<br />
<br />
==Виды систем машинного перевода==<br />
<br />
===Прямой===<br />
Прямой, или пословный машинный перевод осуществляется следующим образом: из языка источника считывается по одному слову за один раз, затем слово ищется в двуязычном списке слов произвольной формы. Слова могут быть удалены или не учтены, и, могут быть переведены одним или несколькими словами. Грамматический анализ не проводится, так что даже такие простые ошибки, как соглашение в роде и числе между существительным и определением к нему останется в языке перевода на выходе.<br />
<br />
:ПРИМЕР 1 <br />
<br />
:Heinrich köpeğine bir parça et verir.<br />
:<< TXUVAIX AQUÍ >><br />
:Генрих сетö яй кусöк аслас понлы. <!-- Heinrich gives piece meat his dog.DAT --><br />
:Heinrich antoi lihapalan koiralleen. <!-- Heinrich gives meat.piece.ACC dog.HIS.TO --><br />
:Генрих даёт кусок мяса своей собаке.<br />
<br />
===Перенос===<br />
<br />
Машинный перевод, основанный на переносе, работает таким образом, что, сначала язык-источник преобразовывается в зависимую от языка промежуточную репрезентацию, а затем правила применяются уже к этой промежуточной репрезентации с целью преобразования структуры языка-источника в структуру языка перевода. Перевод осуществляется с этой репрезентации с использованием как двуязычных словарей, так и грамматических правил.<br />
<br />
<br />
Различия могут быть в уровне абстракции этой промежуточной репрезентации. Можно выделить две большие группы: неглубокая передача и глубокая передача. При неглубоком переносе машинного перевода промежуточная репрезентация, как правило, основывается или на морфологии или на поверхностном синтаксисе. При глубокой передачи MT промежуточная репрезентация обычно включает в себя что-то похожее на дерево разбора или графическую структуру (см. изображение справа)<br />
<br />
:ПРИМЕР 2 <br />
<br />
Машинный перевод, основанный на переносе обычно работает следующим образом: сначала текст перевода анализируется и снимается морфологическая неоднозначность (а в случае глубокой передачи, синтаксическая) с целью получения промежуточной репрезентации исходного языка. Процесс переноса затем преобразует эту финальную репрезентацию (все еще на языке оригинала) в репрезентацию на том же уровне абстракции в языке перевода. Из репрезентации языка перевода, генерируется язык перевода. <br />
<br />
<br />
===Язык-посредник===<br />
<br />
В машинном переводе, основанного на переносе, правила написаны на основе пара-на-пару, что делает их особенными для языковой пары. В подходе "язык-посредник", промежуточная репрезентация полностью независимым от языка. Есть ряд преимуществ такого подхода, но также и недостатки. Преимущества в том, что есть возможность добавить новый язык в существующую систему MT, необходимо лишь написать анализатор и генератор для нового языка, а не правила переноса между новым языком и всех существующих языков. Недостаток в том что очень трудно определить язык-посредник, который может действительно представлять все нюансы всех естественных языках, и на практике, язык-посредник используются только для ограниченных областей перевода.<br />
<br />
==Проблемы машинного перевода==<br />
<br />
===Анализ===<br />
<br />
<center>'''Форма не полностью определяет содержание.'''</center><br />
<br />
Это также называется проблемой омонимии. Проблема состоит в том, что многие предложения на одном языке могут иметь более чем одну интерпретацию и эти интерпретации могут быть переведены по разному на разные языки. Рассмотрим следующий пример: <br />
<br />
:ПРИМЕР 3<br />
:'''Здесь нужен пример синтаксической неоднозначности на русском или на чувашском языке (чем проще, тем лучше)'''<br />
:Вот друг Саша, которого я вчера встретил.<br />
<br />
===Синтез===<br />
<center>'''Содержание не полностью определяет форму.''' </center><br />
Проблема в том, что в данном языке есть не один способов для передачи одного и того же значения. <br />
<br />
:ПРИМЕР 4<br />
:Эсир мӗнле пурӑнатӑр?<br />
:Мӗнле пурнӑҫсем?<br />
:Мӗнле халсем?<br />
:Мӗнле еҫсем?<br />
<br />
Все эти вопросы требуют одинакового ответа, но их частота и место употребления могут различаться. <br />
В Apertium, на каждое введенное предложение, предлагается один вариант. От создателя системы зависит, какой вариант перевода будет предлагать система. Часто мы рекомендуем чтобы это был наиболее литературный перевод, так как это снижает необходимость в правилах переноса.<br />
<br />
===Перенос===<br />
<center>'''Одно и тоже содержание по разному представлено в разных языках. '''</center><br />
<br />
В языках существуют различные способы передачи одного и того же значения. И эти значения обычно несовместимы между языками. Рассмотрите следующие примеры предложений, которые выражают одно и то же значение: <br />
<br />
:ПРИМЕР 5<br />
<br />
В системе Apertium, применяются правила, которые трансформируют структуру языка источника в структуру целевого языка, используя последовательность лексических форм в качестве промежуточной репрезентации. Более подробная информация в разделе 5: Основы структурного переноса. <br />
<br />
===Описание===<br />
<br />
<center>'''Как отразить информация о процессе перевода на языке компьютера.'''</center><br />
<br />
Последней проблемой является проблема описания. Чтобы создать систему машинного перевода люди со знанием обоих языков должны сесть и систематизировать-кодировать свои знания в таком виде, чтобы компьютер смог их обработать.<br />
<br />
Так как перевод часто является бессознательным процессом, мы переводим не задумываясь о правилах, которыми мы пользуемся. Компьютеры не имеют такой способности, им нужны конкретные инструкции что именно нужно делать. Перевод не получится, если в компьютер не будет занесена информация по переводу.<br />
<br />
Но для многих предложений данная информация необязательна:<br />
<br />
:ПРИМЕР 6<br />
<br />
==Практика==<br />
<br />
===Установка===<br />
<br />
Для руководства по установке Apertium, HFST и грамматике ограничений, смотрите раздаточный материал.<br />
<br />
===Применение===<br />
<br />
Чтобы пользоваться системой Apertium, сначала откройте first open up a terminal. Теперь <code>cd</code> в раздел языковой пары, которую хотите протестировать. <br />
<br />
<pre><br />
$ cd apertium-aa-bb<br />
</pre><br />
<br />
Вы можете протестировать это при помощи следующей команды: <br />
<br />
<pre><br />
$ echo "Text that you want to translate" | apertium -d . aa-bb<br />
</pre><br />
<br />
Например, из турецкого в киргизский:<br />
<br />
<pre><br />
$ echo "En güzel kız evime geldi." | apertium -d . tr-ky<br />
Эң жакшынакай кыз үйүмө келди. <br />
</pre><br />
<br />
===Структура раздела===<br />
<br />
Ниже приведена таблица, в которой дано описание основных файлов с данными, которые присутствуют в типичной языковой паре и ссылки на разделы в которых они описаны.<br />
<br />
<center><br />
{|class=wikitable<br />
! Файл !! Вид !! Описание !! Раздел (ы)<br />
|- <br />
| <code>apertium-tr-ky.ky.lexc</code> || Dictionary || Kyrgyz morphotactic dictionary, used for analysis and generation || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|- <br />
| <code>apertium-tr-ky.ky.twol</code> || Phonological rules || Kyrgyz morphophonological rules || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr.lexc</code> || Dictionary || Turkish morphotactic dictionary, used for analysis and generation || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr.twol</code> || Phonological rules || Turkish morphophonological rules || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr-ky.dix</code> || Dictionary || Turkish&mdash;Kyrgyz bilingual dictionary, used for lexical transfer || [[Машинный перевод для языков России/Session 4|4]]<br />
|-<br />
| <code>apertium-tr-ky.tr.rlx</code> || Tagging rules || Turkish constraint grammar, used for morphological disambiguation || [[Машинный перевод для языков России/Session 3|3]]<br />
|-<br />
| <code>apertium-tr-ky.ky.rlx</code> || Tagging rules || Kyrgyz constraint grammar, used for morphological disambiguation || [[Машинный перевод для языков России/Session 3|3]]<br />
|-<br />
| <code>apertium-tr-ky.tr-ky.t1x</code> || Transfer rules || Turkish→Kyrgyz first-level rule file, for structural transfer || [[Машинный перевод для языков России/Session 5|5]] [[Машинный перевод для языков России/Session 6|6]]<br />
|-<br />
|-<br />
| <code>apertium-tr-ky.ky-tr.t1x</code> || Transfer rules || Kyrgyz→Turkish first-level rule file, for structural transfer || [[Машинный перевод для языков России/Session 5|5]] [[Машинный перевод для языков России/Session 6|6]]<br />
|-<br />
|}<br />
</center><br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 0]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_0&diff=31435Курсы машинного перевода для языков России/Раздел 02012-01-16T20:52:58Z<p>Enjo: </p>
<hr />
<div><center><big>Раздел 0: Обзор</big></center><br />
{{TOCD}}<br />
В данном разделе будет дан краткий обзор такого метода перевода как машинный перевод, основанного на использовании введенных правил и представлена работа открытой платформы свободного машинного перевода Apertium<br />
<br />
Существуют два принципиально отличающихся друг от друга вида машинного перевода: <br />
<br />
* Машинный перевод, основанный на правилах (Rule Based Machine Translation), его также называют символьным машинным переводом; Apertium как раз относится к данному виду и этот раздел посвящен подвиду машинного перевода, основанного на правилах <br />
* Корпусный машинный перевод; при таком переводе для перевода новых предложений переводчик обращается к пулу из ранее переведенных предложений. <br />
<br />
Если кратко представить корпусный МП, то его можно разделить на две главные подгруппы: подгруппа, в основе которой лежат статистические данные, и подгруппа, основанная на примерах. Теоретически, основной принцип работы статистического машинного перевода заключается в следующем: берется набор ранее переведенных предложений (параллельный корпус) и подсчитывается какие символы совпадают наиболее часто. Всем символам, которые совпадают, присваивается признак вероятности. При переводе нового предложения переводчик рассматривает все слова (символы), которым присвоен признак вероятности, их вероятности комбинируется, делается несколько вариантов возможных переводов и затем выбирается вариант перевода с самой высокой степенью вероятности. Первые системы статистического МП учитывали только совпадение слов, но более новые системы могут учитывать совпадения последовательных рядов слов (фраз) и иерархических деревьев. <br />
<br />
В противовес этому, машинный перевод, основанный на анализе примеров, может быть назван переводом по аналогии. В нем также используется параллельные корпуса, но, вместо того чтобы обращаться к признакам вероятности слов, переводчик учится делать анализ на основе примеров. Например, если будет дана пара предложений (A la chica le gustan los gatos(es) → Das Mädchen mag Katzen(de) и A la chica le gustan los elefantes → Das Mädchen mag Elefanten) переводчик может дать следующий пример перевода (A la chica le gustan X → Das Mädchen mag X). При переводе нового предложения, переводчик обращается и анализирует данные части предложения и заменяет их. <br />
<br />
Автоматическое применение большего пула переводных текстов (переводной памяти) к переводному тексту может быть также названо видом машинного перевода с использованием корпуса. На самом деле, границы между статистическим машинным переводом и переводом, которые использует и анализирует примеры достаточно размыты. И в том и в другом методе есть свои недостатки и преимущества. При использовании методов машинного перевода с использованием корпуса, переводной текст обычно выглядит более естественным, но может страдать сам смысл перевода, при использовании систем, которые используют метод, основанный на применении правил, перевод выглядит не таким гладким, но более точно передавать смысл с языка оригинала.<br />
<br />
Системы, основанные на правила, и системы, в которых используются корпус, могут быть объединены различными способами и представлять собой смешанную систему. Например, можно создать смешанную систему, где корпусный машинный перевод помогает найти эквиваленты, а затем применяется метод, основанный на правилах, в случае, если не найдено ни одного совпадающего образца.<br />
<br />
==Виды систем машинного перевода==<br />
<br />
===Прямой===<br />
Прямой, или пословный машинный перевод осуществляется следующим образом: из языка источника считывается по одному слову за один раз, затем слово ищется в двуязычном списке слов произвольной формы. Слова могут быть удалены или не учтены, и, могут быть переведены одним или несколькими словами. Грамматический анализ не проводится, так что даже такие простые ошибки, как соглашение в роде и числе между существительным и определением к нему останется в языке перевода на выходе.<br />
<br />
:ПРИМЕР 1 <br />
<br />
:Heinrich köpeğine bir parça et verir.<br />
:<< TXUVAIX AQUÍ >><br />
:Генрих сетö яй кусöк аслас понлы. <!-- Heinrich gives piece meat his dog.DAT --><br />
:Heinrich antoi lihapalan koiralleen. <!-- Heinrich gives meat.piece.ACC dog.HIS.TO --><br />
:Генрих даёт кусок мяса своей собаке.<br />
<br />
===Перенос===<br />
<br />
Машинный перевод, основанный на переносе, работает таким образом, что, сначала язык-источник преобразовывается в зависимую от языка промежуточную репрезентацию, а затем правила применяются уже к этой промежуточной репрезентации с целью преобразования структуры языка-источника в структуру языка перевода. Перевод осуществляется с этой репрезентации с использованием как двуязычных словарей, так и грамматических правил.<br />
<br />
<br />
Различия могут быть в уровне абстракции этой промежуточной репрезентации. Можно выделить две большие группы: неглубокая передача и глубокая передача. При неглубоком переносе машинного перевода промежуточная репрезентация, как правило, основывается или на морфологии или на поверхностном синтаксисе. При глубокой передачи MT промежуточная репрезентация обычно включает в себя что-то похожее на дерево разбора или графическую структуру (см. изображение справа)<br />
<br />
:ПРИМЕР 2 <br />
<br />
Машинный перевод, основанный на переносе обычно работает следующим образом: сначала текст перевода анализируется и снимается морфологическая неоднозначность (а в случае глубокой передачи, синтаксическая) с целью получения промежуточной репрезентации исходного языка. Процесс переноса затем преобразует эту финальную репрезентацию (все еще на языке оригинала) в репрезентацию на том же уровне абстракции в языке перевода. Из репрезентации языка перевода, генерируется язык перевода. <br />
<br />
<br />
===Язык-посредник===<br />
<br />
В машинном переводе, основанного на переносе, правила написаны на основе пара-на-пару, что делает их особенными для языковой пары. В подходе "язык-посредник", промежуточная репрезентация полностью независимым от языка. Есть ряд преимуществ такого подхода, но также и недостатки. Преимущества в том, что есть возможность добавить новый язык в существующую систему MT, необходимо лишь написать анализатор и генератор для нового языка, а не правила переноса между новым языком и всех существующих языков. Недостаток в том что очень трудно определить язык-посредник, который может действительно представлять все нюансы всех естественных языках, и на практике, язык-посредник используются только для ограниченных областей перевода.<br />
<br />
==Проблемы машинного перевода==<br />
<br />
===Анализ===<br />
<br />
<center>'''Форма не полностью определяет содержание.'''</center><br />
<br />
Это также называется проблемой омонимии. Проблема состоит в том, что многие предложения на одном языке могут иметь более чем одну интерпретацию и эти интерпретации могут быть переведены по разному на разные языки. Рассмотрим следующий пример: <br />
<br />
:ПРИМЕР 3<br />
:'''Здесь нужен пример синтаксической неоднозначности на русском или на чувашском языке (чем проще, тем лучше)'''<br />
:Вот друг Саша, которого я вчера встретил.<br />
<br />
===Синтаксис===<br />
<center>'''Содержание не полностью определяет форму.''' </center><br />
Проблема в том, что в данном языке есть не один способов для передачи одного и того же значения. <br />
<br />
:ПРИМЕР 4<br />
:Эсир мӗнле пурӑнатӑр?<br />
:Мӗнле пурнӑҫсем?<br />
:Мӗнле халсем?<br />
:Мӗнле еҫсем?<br />
<br />
Все эти вопросы требуют одинакового ответа, но их частота и место употребления могут различаться. <br />
В Apertium, на каждое введенное предложение, предлагается один вариант. От создателя системы зависит, какой вариант перевода будет предлагать система. Часто мы рекомендуем чтобы это был наиболее литературный перевод, так как это снижает необходимость в правилах переноса.<br />
<br />
===Перенос===<br />
<center>'''Одно и тоже содержание по разному представлено в разных языках. '''</center><br />
<br />
В языках существуют различные способы передачи одного и того же значения. И эти значения обычно несовместимы между языками. Рассмотрите следующие примеры предложений, которые выражают одно и то же значение: <br />
<br />
:ПРИМЕР 5<br />
<br />
В системе Apertium, применяются правила, которые трансформируют структуру языка источника в структуру целевого языка, используя последовательность лексических форм в качестве промежуточной репрезентации. Более подробная информация в разделе 5: Основы структурного переноса. <br />
<br />
===Описание===<br />
<br />
<center>'''Как отразить информация о процессе перевода на языке компьютера.'''</center><br />
<br />
Последней проблемой является проблема описания. Чтобы создать систему машинного перевода люди со знанием обоих языков должны сесть и систематизировать-кодировать свои знания в таком виде, чтобы компьютер смог их обработать.<br />
<br />
Так как перевод часто является бессознательным процессом, мы переводим не задумываясь о правилах, которыми мы пользуемся. Компьютеры не имеют такой способности, им нужны конкретные инструкции что именно нужно делать. Перевод не получится, если в компьютер не будет занесена информация по переводу.<br />
<br />
Но для многих предложений данная информация необязательна:<br />
<br />
:ПРИМЕР 6<br />
<br />
==Практика==<br />
<br />
===Установка===<br />
<br />
Для руководства по установке Apertium, HFST и грамматике ограничений, смотрите раздаточный материал.<br />
<br />
===Применение===<br />
<br />
Чтобы пользоваться системой Apertium, сначала откройте first open up a terminal. Теперь <code>cd</code> в раздел языковой пары, которую хотите протестировать. <br />
<br />
<pre><br />
$ cd apertium-aa-bb<br />
</pre><br />
<br />
Вы можете протестировать это при помощи следующей команды: <br />
<br />
<pre><br />
$ echo "Text that you want to translate" | apertium -d . aa-bb<br />
</pre><br />
<br />
Например, из турецкого в киргизский:<br />
<br />
<pre><br />
$ echo "En güzel kız evime geldi." | apertium -d . tr-ky<br />
Эң жакшынакай кыз үйүмө келди. <br />
</pre><br />
<br />
===Структура раздела===<br />
<br />
Ниже приведена таблица, в которой дано описание основных файлов с данными, которые присутствуют в типичной языковой паре и ссылки на разделы в которых они описаны.<br />
<br />
<center><br />
{|class=wikitable<br />
! Файл !! Вид !! Описание !! Раздел (ы)<br />
|- <br />
| <code>apertium-tr-ky.ky.lexc</code> || Dictionary || Kyrgyz morphotactic dictionary, used for analysis and generation || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|- <br />
| <code>apertium-tr-ky.ky.twol</code> || Phonological rules || Kyrgyz morphophonological rules || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr.lexc</code> || Dictionary || Turkish morphotactic dictionary, used for analysis and generation || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr.twol</code> || Phonological rules || Turkish morphophonological rules || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr-ky.dix</code> || Dictionary || Turkish&mdash;Kyrgyz bilingual dictionary, used for lexical transfer || [[Машинный перевод для языков России/Session 4|4]]<br />
|-<br />
| <code>apertium-tr-ky.tr.rlx</code> || Tagging rules || Turkish constraint grammar, used for morphological disambiguation || [[Машинный перевод для языков России/Session 3|3]]<br />
|-<br />
| <code>apertium-tr-ky.ky.rlx</code> || Tagging rules || Kyrgyz constraint grammar, used for morphological disambiguation || [[Машинный перевод для языков России/Session 3|3]]<br />
|-<br />
| <code>apertium-tr-ky.tr-ky.t1x</code> || Transfer rules || Turkish→Kyrgyz first-level rule file, for structural transfer || [[Машинный перевод для языков России/Session 5|5]] [[Машинный перевод для языков России/Session 6|6]]<br />
|-<br />
|-<br />
| <code>apertium-tr-ky.ky-tr.t1x</code> || Transfer rules || Kyrgyz→Turkish first-level rule file, for structural transfer || [[Машинный перевод для языков России/Session 5|5]] [[Машинный перевод для языков России/Session 6|6]]<br />
|-<br />
|}<br />
</center><br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 0]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_0&diff=31434Курсы машинного перевода для языков России/Раздел 02012-01-16T20:34:18Z<p>Enjo: </p>
<hr />
<div><center><big>Раздел 0: Обзор</big></center><br />
{{TOCD}}<br />
В данном разделе будет дан краткий обзор такого метода перевода как машинный перевод, основанного на использовании введенных правил и представлена работа открытой платформы свободного машинного перевода Apertium<br />
<br />
Существуют два принципиально отличающихся друг от друга вида машинного перевода: <br />
<br />
* Машинный перевод, основанный на правилах (Rule Based Machine Translation), его также называют символьным машинным переводом; Apertium как раз относится к данному виду и этот раздел посвящен подвиду машинного перевода, основанного на правилах <br />
* Корпусный машинный перевод; при таком переводе для перевода новых предложений переводчик обращается к пулу из ранее переведенных предложений. <br />
<br />
Если кратко представить корпусный МП, то его можно разделить на две главные подгруппы: подгруппа, в основе которой лежат статистические данные, и подгруппа, основанная на примерах. Теоретически, основной принцип работы статистического машинного перевода заключается в следующем: берется набор ранее переведенных предложений (параллельный корпус) и подсчитывается какие символы совпадают наиболее часто. Всем символам, которые совпадают, присваивается признак вероятности. При переводе нового предложения переводчик рассматривает все слова (символы), которым присвоен признак вероятности, их вероятности комбинируется, делается несколько вариантов возможных переводов и затем выбирается вариант перевода с самой высокой степенью вероятности. Первые системы статистического МП учитывали только совпадение слов, но более новые системы могут учитывать совпадения последовательных рядов слов (фраз) и иерархических деревьев. <br />
<br />
В противовес этому, машинный перевод, основанный на анализе примеров, может быть назван переводом по аналогии. В нем также используется параллельные корпуса, но, вместо того чтобы обращаться к признакам вероятности слов, переводчик учится делать анализ на основе примеров. Например, если будет дана пара предложений (A la chica le gustan los gatos(es) → Das Mädchen mag Katzen(de) и A la chica le gustan los elefantes → Das Mädchen mag Elefanten) переводчик может дать следующий пример перевода (A la chica le gustan X → Das Mädchen mag X). При переводе нового предложения, переводчик обращается и анализирует данные части предложения и заменяет их. <br />
<br />
Автоматическое применение большего пула переводных текстов (переводной памяти) к переводному тексту может быть также названо видом машинного перевода с использованием корпуса. На самом деле, границы между статистическим машинным переводом и переводом, которые использует и анализирует примеры достаточно размыты. И в том и в другом методе есть свои недостатки и преимущества. При использовании методов машинного перевода с использованием корпуса, переводной текст обычно выглядит более естественным, но может страдать сам смысл перевода, при использовании систем, которые используют метод, основанный на применении правил, перевод выглядит не таким гладким, но более точно передавать смысл с языка оригинала.<br />
<br />
Системы, основанные на правила, и системы, в которых используются корпус, могут быть объединены различными способами и представлять собой смешанную систему. Например, можно создать смешанную систему, где корпусный машинный перевод помогает найти эквиваленты, а затем применяется метод, основанный на правилах, в случае, если не найдено ни одного совпадающего образца.<br />
<br />
==Виды систем машинного перевода==<br />
<br />
===Прямой===<br />
Прямой, или пословный машинный перевод осуществляется следующим образом: из языка источника считывается по одному слову за один раз, затем слово ищется в двуязычном списке слов произвольной формы. Слова могут быть удалены или не учтены, и, могут быть переведены одним или несколькими словами. Грамматический анализ не проводится, так что даже такие простые ошибки, как соглашение в роде и числе между существительным и определением к нему останется в языке перевода на выходе.<br />
<br />
:ПРИМЕР 1 <br />
<br />
:Heinrich köpeğine bir parça et verir.<br />
:<< TXUVAIX AQUÍ >><br />
:Генрих сетö яй кусöк аслас понлы. <!-- Heinrich gives piece meat his dog.DAT --><br />
:Heinrich antoi lihapalan koiralleen. <!-- Heinrich gives meat.piece.ACC dog.HIS.TO --><br />
:Генрих даёт кусок мяса своей собаке.<br />
<br />
===Перенос===<br />
<br />
Машинный перевод, основанный на переносе, работает таким образом, что, сначала язык-источник преобразовывается в зависимую от языка промежуточную репрезентацию, а затем правила применяются уже к этой промежуточной репрезентации с целью преобразования структуры языка-источника в структуру языка перевода. Перевод осуществляется с этой репрезентации с использованием как двуязычных словарей, так и грамматических правил.<br />
<br />
<br />
There can be differences in the level of abstraction of the intermediate representation. We can distinguish two broad groups, shallow transfer, and deep transfer. In shallow-transfer MT the intermediate representation is usually either based on morphology or shallow syntax. In deep-transfer MT the intermediate representation usually includes some kind of parse tree or graph structure (see images on the right). <br />
Различия могут быть в уровне абстракции этой промежуточной репрезентации. Можно выделить две большие группы: неглубокая передача и глубокая передача. При неглубоком переносе машинного перевода промежуточная репрезентация, как правило, основывается или на морфологии или на поверхностном синтаксисе. При глубокой передачи MT промежуточная репрезентация обычно включает в себя что-то похожее на дерево разбора или графическую структуру (см. изображение справа)<br />
<br />
:ПРИМЕР 2 <br />
<br />
Машинный перевод, основанный на переносе обычно работает следующим образом: сначала текст перевода анализируется и снимается морфологическая неоднозначность (а в случае глубокой передачи, синтаксическая) с целью получения промежуточной репрезентации исходного языка. Процесс переноса затем преобразует эту финальную репрезентацию (все еще на языке оригинала) в репрезентацию на том же уровне абстракции в языке перевода. Из репрезентации языка перевода, генерируется язык перевода. <br />
<br />
<br />
===Межязыковой===<br />
<br />
In transfer-based machine translation, rules are written on a pair-by-pair basis, making them specific to a language pair. In the interlingua approach, the intermediate representation is entirely language independent. There are a number of benefits to this approach, but also disadvantages. The benefits are that in order to add a new language to an existing MT system, it is only necessary to write an analyser and generator for the new language, and not transfer rules between the new language and all the existing languages. The drawbacks are that it is very hard to define an interlingua which can truely represent all nuances of all natural languages, and in practice, interlingua systems are only used for limited translation domains. <br />
В машинном переводе, основанного на переносе, правила написаны на основе пара-на-пару, что делает их специфичны для языковой пары. В подходе посредник, промежуточное представление полностью независимым от языка. Есть ряд преимуществ такого подхода, но также и недостатки.Выгоды, что для того, чтобы добавить новый язык в существующие системы MT, необходимо лишь написать анализатор и генератор для нового языка, а не правила переноса между новым языком и всех существующих языков.Недостатки, что это очень трудно определить язык-посредник, который может действительно представлять все нюансы всех естественных языках, и на практике, посредник системы используются только для ограниченной области перевода.<br />
<br />
==Проблемы машинного перевода==<br />
<br />
===Анализ===<br />
<br />
<center>'''Form does not entirely determine content.'''</center><br />
<br />
Это также называется проблемой омонимии. Проблема состоит в том, что многие предложения на одном языке могут иметь более чем одну интерпретацию и эти интерпретации могут быть переведены по разному на разные языки. Рассмотрите следующий пример: <br />
<br />
:ПРИМЕР 3<br />
:'''Здесь нужен пример синтаксической неоднозначности на русском или на чувашском языке (чем проще, тем лучше)'''<br />
:Вот друг Саша, которого я вчера встретил.<br />
<br />
===Synthesis===<br />
<center>'''Content does not entirely determine form.''' </center><br />
This is the problem that in a given language there is usually more than one way to communicate the same meaning for any given meaning. <br />
<br />
:EXEMPLE 4<br />
:Эсир мӗнле пурӑнатӑр?<br />
:Мӗнле пурнӑҫсем?<br />
:Мӗнле халсем?<br />
:Мӗнле еҫсем?<br />
<br />
All of these questions demand the same answer (how are you), but they may be more or less frequently used, or emphasise different things. <br />
In Apertium, for a given input sentence, one output sentence is produced. It is up to the designer of the translation system to choose which translation they want the system to produce. Often we recommend the most literal translation possible, as this reduces the necessity of transfer rules.<br />
<br />
===Transfer===<br />
<center>'''The same content is represented differently in different languages. '''</center><br />
<br />
В языках существуют различные способы передачи одного и того же значения. И эти значения обычно несовместимы между языками. Рассмотрите следующие примеры предложений, которые выражают одно и то же значение: <br />
<br />
:ПРИМЕР 5<br />
<br />
В системе Apertium, применяются правила, которые трансформируют структуру языка источника в структуру целевого языка, используя последовательность лексических форм в качестве intermediate representation. Более подробная информация в разделе 5: Structural transfer basics. <br />
<br />
===Описание===<br />
<br />
<center>'''Representing knowledge about the translation process in machine-readable form.'''</center><br />
<br />
Последней проблемой является проблема описания. Чтобы создать систему машинного перевода люди со знанием обоих языков должны сесть и систематизировать-кодировать свои знания в таком виде, чтобы компьютер смог их обработать.<br />
<br />
While translation is often an unconscious process, we translate without reflecting on the rules that we use to translate, the machine does not have this unconsciousness, and must be told exactly what operations to perform. If these operations rely on information that the machine does not have, or cannot have, then a machine translation will not be possible.<br />
Так как перевод часто является бессознательным процессом, мы переводим не задумываясь о правилах, которыми мы пользуемся. Компьютеры не имеют такой способности, им нужны конкретные инструкции что именно нужно делать. Перевод не получится, если в компьютер не будет занесена информация по переводу.<br />
<br />
Но для многих предложений данная информация необязательна:<br />
<br />
:ПРИМЕР 6<br />
<br />
==Практика==<br />
<br />
===Установка===<br />
<br />
Для руководства по установке Apertium, HFST и Constraint grammar, смотрите раздаточный материал.<br />
<br />
===Применение===<br />
<br />
Чтобы пользоваться системой Apertium, сначала откройте first open up a terminal. Now <code>cd</code> into the directory of the language pair you want to test. <br />
<br />
<pre><br />
$ cd apertium-aa-bb<br />
</pre><br />
<br />
Вы можете протестировать это при помощи следующей команды: <br />
<br />
<pre><br />
$ echo "Text that you want to translate" | apertium -d . aa-bb<br />
</pre><br />
<br />
Например, из турецкого в киргизский:<br />
<br />
<pre><br />
$ echo "En güzel kız evime geldi." | apertium -d . tr-ky<br />
Эң жакшынакай кыз үйүмө келди. <br />
</pre><br />
<br />
===Directory layout===<br />
<br />
Ниже приведена таблица, в которой дано описание основных файлов с данными, которые присутствуют в типичной языковой паре и ссылки на разделы в которых они описаны.<br />
Below is a table which gives a description of the main data files that can be found in a typical language pair, and links to the sessions where they are described.<br />
<br />
<center><br />
{|class=wikitable<br />
! File !! Type !! Description !! Session(s)<br />
|- <br />
| <code>apertium-tr-ky.ky.lexc</code> || Dictionary || Kyrgyz morphotactic dictionary, used for analysis and generation || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|- <br />
| <code>apertium-tr-ky.ky.twol</code> || Phonological rules || Kyrgyz morphophonological rules || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr.lexc</code> || Dictionary || Turkish morphotactic dictionary, used for analysis and generation || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr.twol</code> || Phonological rules || Turkish morphophonological rules || [[Машинный перевод для языков России/Session 1|1]] [[Машинный перевод для языков России/Session 2|2]]<br />
|-<br />
| <code>apertium-tr-ky.tr-ky.dix</code> || Dictionary || Turkish&mdash;Kyrgyz bilingual dictionary, used for lexical transfer || [[Машинный перевод для языков России/Session 4|4]]<br />
|-<br />
| <code>apertium-tr-ky.tr.rlx</code> || Tagging rules || Turkish constraint grammar, used for morphological disambiguation || [[Машинный перевод для языков России/Session 3|3]]<br />
|-<br />
| <code>apertium-tr-ky.ky.rlx</code> || Tagging rules || Kyrgyz constraint grammar, used for morphological disambiguation || [[Машинный перевод для языков России/Session 3|3]]<br />
|-<br />
| <code>apertium-tr-ky.tr-ky.t1x</code> || Transfer rules || Turkish→Kyrgyz first-level rule file, for structural transfer || [[Машинный перевод для языков России/Session 5|5]] [[Машинный перевод для языков России/Session 6|6]]<br />
|-<br />
|-<br />
| <code>apertium-tr-ky.ky-tr.t1x</code> || Transfer rules || Kyrgyz→Turkish first-level rule file, for structural transfer || [[Машинный перевод для языков России/Session 5|5]] [[Машинный перевод для языков России/Session 6|6]]<br />
|-<br />
|}<br />
</center><br />
<br />
<br />
[[Category:Машинный_перевод_для_языков_России|Session 0]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31392Курсы машинного перевода для языков России/Раздел 82012-01-14T20:50:06Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительная доля систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, тщательного планируя и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из практики ==<br />
<br />
Следующие реальные примеры отражают 4 успешных но различных стиля создания систем The following case studies highlight four different successful development styles.<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code> разработанного в Университете d'Alacant. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев) которые разработал как движок так и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, и выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск Nynorsk) и норвежский Bokmål ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для около 580,000 норвежцев.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
Переводчик с языка Нюнорск на Bokmål - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трунд Тростеруд, используя имеющиеся данные, такие как Norsk Ordbank (список полных слов на языках нюнорск и Bokmål) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершено, но проект был подхвачен в 2009 году во время летних соревнований по коду Google Кевином Унхаммеров, студентом компьютерной лингвистики Университета Бергена. В течение трех месяцев, Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Две недели затем были потрачены на проверку правильности работы задач, например, на проверку, что только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, например, из корпуса около 10 неизвестных слов из 100 в среднем. Ошибочное слово - около 17%, что означает, из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системы для перевода пары нюнорск-букмол (Nynorsk-Bokmål). На система сегодня приходится более трети всех переводов <br />
осуществляющихся на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
Работа над бретоно - французским переводчиком была начата в 2008 году Фрэнсисом Таерзом в его свободное время. После трех месяцев, систем подтверждения концепции, используя правила переноса из пары французский - испанский была представлена Офис ар Брежонег в декабре. Было решено, что будет найдено финансирование для доработки в течение месяца прототипа системы, которая была бы полезна для усвоения целей.<br />
<br />
В конце концов, финансирование поездки носителя бретонского языка в Алакант была организована Офис ар Брежонег, университет d'Alacant оплатил месячную зарплату бретонского носителя и компания инженерной лингвистики Промпзит оплатила работу Фрэнсиса Таерза. Еще на два месяца. В общей сложности стоимость проекта составила около € 3000. Первая версия переводчика был выпущена в мае 2009 года.<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
Первая версия имела охват около 85%, и высокий процент ошибочных слов, что все же позволяло переводчику быть полезным для ассимиляции. Сегодня система [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] на главной странице Офис ар Brezhoneg, и обновляется сотрудниками Офис, в том числе его директором, Фулупом Якезом.<br />
<br />
=== Испанский и арагонский ===<br />
:''Среднесрочный волонтерский проект без государственного финансирования, два разработчика. На арагонском говорит около 10,000 человек.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
Работа над испанско-арагонским переводчиком была начата разработчиком Apertium Джимом O'Реганом, по просьбе носителя арагонского языка Хуан Пабло Мартинеса. Три недели первоначальных усилий растянутых в течение года и последняя интенсивная неделя работы привели к выпуску первой версии прототипа, переводчика с арагонского на испанский язык только.<br />
<br />
Первая двунаправленная версия была завершена Хуаном Пабло после еще 6 недель работы, растянутых на год. Единственный доступный ресурс в начале этой работы на арагонском языке были арагонская версия Википедии и несколько шаблонов глаголов в английском издании Викисловаря. Арагонско-испанский словарь был создан с нуля, но морфологический анализатор испанского языка и маркировщик частей речи были взяты из испанско-каталонской пары. Создание системы никак не финансировалось.<br />
<br />
== Способствующие факторы ==<br />
<br />
=== Существующие ресурсы ===<br />
<br />
Когда языковые ресурсы, такие как корпуса, словари, грамматики, морфологические анализаторы, списки лемм и т.д. находятся в свободном доступе / с лицензией на возможность свободного использования они могут быть использованы повторно и сократить время разработки. Тем не менее, количество времени, необходимого для переработки не следует недооценивать.<br />
<br />
Морфологический преобразователь, предназначенный для проверки орфографии, может быть очень хорошим для проверки орфографии, но его может быть не так-то легко адаптировать для анализа / генерации в системе машинного перевода. Различные применения имеют различные требования, и это должно быть учтено при принятии решения повторного использования существующих ресурсов, стоит ли адаптировать имеющийся ресурс или создать его с нуля.<br />
<br />
=== Цели ===<br />
<br />
При запуске проекта, важно ответить для себя на следующие вопросы и обозначить цели, например,<br />
<br />
* Кто является целевой аудиторией? <br />
** Система будет предназначена для пользования профессиональными переводчиками, переводчиками-любителями или просто обывателями ?<br />
* Для чего будет использоваться система? <br />
** Assimilation: получить общее представление о чем текст <br />
** Dissemination: получить примерный перевод<br />
** Domain: будет ли система использоваться для перевода новостей, энциклопедической информации, юридических текстов, погоды и т.д.?<br />
* Какие существующие языковые ресурсы могут быть повторно использованы?<br />
** Есть ли уже в наличии хорошие бесплатные словари? <br />
* Сколько у нас есть времени для построения системы?<br />
** возможно 6 месяцев недостаточно чтобы создать идеальную многоцелевую систему машинного перевода дл всех языковых пар средней Волги....,<br />
*** ... но этого будет достаточно чтобы разработать прототип системы для перевода прогноза погоды.<br />
<br />
Если система будет предназначаться для перевода текстов с государственной информацией для распространения, она обязательно будет иметь характеристики, отличные от системы для перевода статей в Википедии.<br />
<br />
Создание системы с высоким охватом словаря, открытой системы для усвоения и распространения данных это хорошая идея, но практически это невозможно при ограниченных ресурсах.<br />
<br />
=== Время ===<br />
Количество времени, необходимого для создания новой языковой пары на платформе Apertium<br />
во многом зависит от целей проекта, существующих ресурсов и опыты разработчиков. Прототип или proof of concept system может быть создана в период от 10 дней до 3 месяцев. В то время как полноценная работающая система может занять от 3 месяцев (как в случае пары нюнорск-букмол) до нескольких лет.<br />
<br />
В следующей таблице приведены данные развития языковых пар в Apertium за последние шесть лет.<br />
<br />
<br />
{|class="wikitable"<br />
! Год !! Всего пар !! Новые пары !! Языковые пары<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Финансирование ===<br />
<br />
Как мы увидели на конкретных примерах, языковые пары в Apertium создавались и финансировались разными способами. В таблице приведены способы финансирования "стабильных" систем машинного перевода в Apertium. Самые популярные выделены жирным.<br />
<br />
{|class="wikitable"<br />
! Спонсор !! Вид !! Языковая пара(ы)<br />
|-<br />
| Google Лето кода || Конкурс || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Волонтеры || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Местное правительство || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Диссертация || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Образовательное учреждение || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Министерство промышленности, торговли и туризма || Правительство страны || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Организация || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Организация || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Образовательное учреждение || es-ast<br />
|-<br />
| Prompsit || Организация || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Организация || fr-es<br />
|-<br />
| Исследовательский совет Исландии || Правительство страны || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi общественная организация || '''br-fr'''<br />
|-<br />
| Европейская ассоциация машинного перевода || Некоммерческая организация || eu-en<br />
|-<br />
|}<br />
<br />
==Практика==<br />
<br />
* Найдите существующие языковые ресурсы для вашей языковой пары и отметьте, какими документами они регламентируются.<br />
* Разработайте реалистичный рабочий план для разработки нового переводчика для данной языковой пары в системе Apertium принимая во внимание:<br />
** Существующие ресурсы<br />
** Цель переводчика<br />
** Человеческий ресурс<br />
** Политическую финансовую и общественную поддержку<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31391Курсы машинного перевода для языков России/Раздел 82012-01-14T20:49:10Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительная доля систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, тщательного планируя и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из жизни Case studies ==<br />
<br />
Следующие реальные примеры отражают 4 успешных но различных стиля создания систем The following case studies highlight four different successful development styles.<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code> разработанного в Университете d'Alacant. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев) которые разработал как движок так и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, и выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск Nynorsk) и норвежский Bokmål ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для около 580,000 норвежцев.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
Переводчик с языка Нюнорск на Bokmål - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трунд Тростеруд, используя имеющиеся данные, такие как Norsk Ordbank (список полных слов на языках нюнорск и Bokmål) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершено, но проект был подхвачен в 2009 году во время летних соревнований по коду Google Кевином Унхаммеров, студентом компьютерной лингвистики Университета Бергена. В течение трех месяцев, Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Две недели затем были потрачены на проверку правильности работы задач, например, на проверку, что только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, например, из корпуса около 10 неизвестных слов из 100 в среднем. Ошибочное слово - около 17%, что означает, из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системы для перевода пары нюнорск-букмол (Nynorsk-Bokmål). На система сегодня приходится более трети всех переводов <br />
осуществляющихся на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
Работа над бретоно - французским переводчиком была начата в 2008 году Фрэнсисом Таерзом в его свободное время. После трех месяцев, систем подтверждения концепции, используя правила переноса из пары французский - испанский была представлена Офис ар Брежонег в декабре. Было решено, что будет найдено финансирование для доработки в течение месяца прототипа системы, которая была бы полезна для усвоения целей.<br />
<br />
В конце концов, финансирование поездки носителя бретонского языка в Алакант была организована Офис ар Брежонег, университет d'Alacant оплатил месячную зарплату бретонского носителя и компания инженерной лингвистики Промпзит оплатила работу Фрэнсиса Таерза. Еще на два месяца. В общей сложности стоимость проекта составила около € 3000. Первая версия переводчика был выпущена в мае 2009 года.<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
Первая версия имела охват около 85%, и высокий процент ошибочных слов, что все же позволяло переводчику быть полезным для ассимиляции. Сегодня система [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] на главной странице Офис ар Brezhoneg, и обновляется сотрудниками Офис, в том числе его директором, Фулупом Якезом.<br />
<br />
=== Испанский и арагонский ===<br />
:''Среднесрочный волонтерский проект без государственного финансирования, два разработчика. На арагонском говорит около 10,000 человек.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
Работа над испанско-арагонским переводчиком была начата разработчиком Apertium Джимом O'Реганом, по просьбе носителя арагонского языка Хуан Пабло Мартинеса. Три недели первоначальных усилий растянутых в течение года и последняя интенсивная неделя работы привели к выпуску первой версии прототипа, переводчика с арагонского на испанский язык только.<br />
<br />
Первая двунаправленная версия была завершена Хуаном Пабло после еще 6 недель работы, растянутых на год. Единственный доступный ресурс в начале этой работы на арагонском языке были арагонская версия Википедии и несколько шаблонов глаголов в английском издании Викисловаря. Арагонско-испанский словарь был создан с нуля, но морфологический анализатор испанского языка и маркировщик частей речи были взяты из испанско-каталонской пары. Создание системы никак не финансировалось.<br />
<br />
== Способствующие факторы ==<br />
<br />
=== Существующие ресурсы ===<br />
<br />
Когда языковые ресурсы, такие как корпуса, словари, грамматики, морфологические анализаторы, списки лемм и т.д. находятся в свободном доступе / с лицензией на возможность свободного использования они могут быть использованы повторно и сократить время разработки. Тем не менее, количество времени, необходимого для переработки не следует недооценивать.<br />
<br />
Морфологический преобразователь, предназначенный для проверки орфографии, может быть очень хорошим для проверки орфографии, но его может быть не так-то легко адаптировать для анализа / генерации в системе машинного перевода. Различные применения имеют различные требования, и это должно быть учтено при принятии решения повторного использования существующих ресурсов, стоит ли адаптировать имеющийся ресурс или создать его с нуля.<br />
<br />
=== Цели ===<br />
<br />
При запуске проекта, важно ответить для себя на следующие вопросы и обозначить цели, например,<br />
<br />
* Кто является целевой аудиторией? <br />
** Система будет предназначена для пользования профессиональными переводчиками, переводчиками-любителями или просто обывателями ?<br />
* Для чего будет использоваться система? <br />
** Assimilation: получить общее представление о чем текст <br />
** Dissemination: получить примерный перевод<br />
** Domain: будет ли система использоваться для перевода новостей, энциклопедической информации, юридических текстов, погоды и т.д.?<br />
* Какие существующие языковые ресурсы могут быть повторно использованы?<br />
** Есть ли уже в наличии хорошие бесплатные словари? <br />
* Сколько у нас есть времени для построения системы?<br />
** возможно 6 месяцев недостаточно чтобы создать идеальную многоцелевую систему машинного перевода дл всех языковых пар средней Волги....,<br />
*** ... но этого будет достаточно чтобы разработать прототип системы для перевода прогноза погоды.<br />
<br />
Если система будет предназначаться для перевода текстов с государственной информацией для распространения, она обязательно будет иметь характеристики, отличные от системы для перевода статей в Википедии.<br />
<br />
Создание системы с высоким охватом словаря, открытой системы для усвоения и распространения данных это хорошая идея, но практически это невозможно при ограниченных ресурсах.<br />
<br />
=== Время ===<br />
Количество времени, необходимого для создания новой языковой пары на платформе Apertium<br />
во многом зависит от целей проекта, существующих ресурсов и опыты разработчиков. Прототип или proof of concept system может быть создана в период от 10 дней до 3 месяцев. В то время как полноценная работающая система может занять от 3 месяцев (как в случае пары нюнорск-букмол) до нескольких лет.<br />
<br />
В следующей таблице приведены данные развития языковых пар в Apertium за последние шесть лет.<br />
<br />
<br />
{|class="wikitable"<br />
! Год !! Всего пар !! Новые пары !! Языковые пары<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Финансирование ===<br />
<br />
Как мы увидели на конкретных примерах, языковые пары в Apertium создавались и финансировались разными способами. В таблице приведены способы финансирования "стабильных" систем машинного перевода в Apertium. Самые популярные выделены жирным.<br />
<br />
{|class="wikitable"<br />
! Спонсор !! Вид !! Языковая пара(ы)<br />
|-<br />
| Google Лето кода || Конкурс || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Волонтеры || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Местное правительство || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Диссертация || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Образовательное учреждение || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Министерство промышленности, торговли и туризма || Правительство страны || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Организация || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Организация || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Образовательное учреждение || es-ast<br />
|-<br />
| Prompsit || Организация || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Организация || fr-es<br />
|-<br />
| Исследовательский совет Исландии || Правительство страны || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi общественная организация || '''br-fr'''<br />
|-<br />
| Европейская ассоциация машинного перевода || Некоммерческая организация || eu-en<br />
|-<br />
|}<br />
<br />
==Практика==<br />
<br />
* Найдите существующие языковые ресурсы для вашей языковой пары и отметьте, какими документами они регламентируются.<br />
* Разработайте реалистичный рабочий план для разработки нового переводчика для данной языковой пары в системе Apertium принимая во внимание:<br />
** Существующие ресурсы<br />
** Цель переводчика<br />
** Человеческий ресурс<br />
** Политическую финансовую и общественную поддержку<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31390Курсы машинного перевода для языков России/Раздел 82012-01-14T20:01:07Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительная доля систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, тщательного планируя и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из жизни Case studies ==<br />
<br />
Следующие реальные примеры отражают 4 успешных но различных стиля создания систем The following case studies highlight four different successful development styles.<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code> разработанного в Университете d'Alacant. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев) которые разработал как движок так и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, и выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск Nynorsk) и норвежский Bokmål ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для около 580,000 норвежцев.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
Переводчик с языка Нюнорск на Bokmål - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трунд Тростеруд, используя имеющиеся данные, такие как Norsk Ordbank (список полных слов на языках нюнорск и Bokmål) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершено, но проект был подхвачен в 2009 году во время летних соревнований по коду Google Кевином Унхаммеров, студентом компьютерной лингвистики Университета Бергена. В течение трех месяцев, Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Две недели затем были потрачены на проверку правильности работы задач, например, на проверку, что только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, например, из корпуса около 10 неизвестных слов из 100 в среднем. Ошибочное слово - около 17%, что означает, из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системы для перевода пары нюнорск-букмол (Nynorsk-Bokmål). На система сегодня приходится более трети всех переводов <br />
осуществляющихся на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
Работа над бретоно - французским переводчиком была начата в 2008 году Фрэнсисом Таерзом в его свободное время. После трех месяцев, систем подтверждения концепции, используя правила переноса из пары французский - испанский была представлена Офис ар Брежонег в декабре. Было решено, что будет найдено финансирование для доработки в течение месяца прототипа системы, которая была бы полезна для усвоения целей.<br />
<br />
В конце концов, финансирование поездки носителя бретонского языка в Алакант была организована Офис ар Брежонег, университет d'Alacant оплатил месячную зарплату бретонского носителя и компания инженерной лингвистики Промпзит оплатила работу Фрэнсиса Таерза. Еще на два месяца. В общей сложности стоимость проекта составила около € 3000. Первая версия переводчика был выпущена в мае 2009 года.<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
Первая версия имела охват около 85%, и высокий процент ошибочных слов, что все же позволяло переводчику быть полезным для ассимиляции. Сегодня система [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] на главной странице Офис ар Brezhoneg, и обновляется сотрудниками Офис, в том числе его директором, Фулупом Якезом.<br />
<br />
=== Испанский и арагонский ===<br />
:''Среднесрочный волонтерский проект без государственного финансирования, два разработчика. На арагонском говорит около 10,000 человек.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
Работа над испанско-арагонским переводчиком была начата разработчиком Apertium Джимом O'Реганом, по просьбе носителя арагонского языка Хуан Пабло Мартинеса. Три недели первоначальных усилий растянутых в течение года и последняя интенсивная неделя работы привели к выпуску первой версии прототипа, переводчика с арагонского на испанский язык только.<br />
<br />
The first bidirectional version was completed after another 6 weeks of work by Juan Pablo, spread over the course of another year. The only available resource at the beginning of this work for Aragonese was the Aragonese edition of Wikipedia and a handful of verb templates on the English edition of Wiktionary. The Aragonese--Spanish dictionary was created by hand, but the Spanish morphological analyser/generator and part-of-speech tagger were taken from the Spanish--Catalan pair. No funding was received from any source towards the creation of the system.<br />
<br />
Первая двунаправленная версия была завершена Хуаном Пабло после еще 6 недель работы, растянутых на год. Единственный доступный ресурс в начале этой работы на арагонском языке были арагонская версия Википедии и несколько шаблонов глаголов в английском издании Викисловаря. Арагонско-испанский словарь был создан с нуля, но морфологический анализатор испанского языка и маркировщик частей речи были взяты из испанско-каталонской пары. Создание системы никак не финансировалось.<br />
<br />
== Contributing factors ==<br />
<br />
=== Existing resources ===<br />
<br />
When linguistic resources, for example corpora, dictionaries, grammars, morphological analysers, lists of lemmata etc. are available under free/open-source licences they can be reused and save development time. However, the amount of time taken for adaptation should not be underestimated.<br />
<br />
A morphological transducer designed for spell checking might make a great spell checker, but it might not be so easy to adapt it for analysis/generation in a machine translation system. Different applications have different requirements, and this should be taken into account when deciding to reuse an existing resource, to adapt it, or to start from scratch.<br />
<br />
=== Objectives ===<br />
<br />
It is important when starting a project to ask questions and clearly define <br />
objectives, for example, <br />
<br />
* Who is the target audience ? <br />
** Do we want the system to be used by professional translators, by lay-translators, by ordinary members of the public ?<br />
* What is the system intended to be used for ? <br />
** Assimilation: For giving an idea of what a text is about <br />
** Dissemination: For producing draft translations<br />
** Domain: Will it be used for news texts, encyclopaedic texts, legal texts, the weather, etc. ?<br />
* What existing linguistic resources can be reused ?<br />
** Are there already good, free dictionaries available ? <br />
* How long do we have to build the system ?<br />
** Six months is probably not enough enough time to build your ideal wide-domain interlingua MT system between all the languages of the Middle Volga, ...<br />
*** ... but it might be enough to build some prototype systems for translating the weather forecast.<br />
<br />
If a system is being planned to translate governmental texts for dissemination,<br />
then it will necessarily have different features than if it is planned to translate <br />
Wikipedia articles for assimilation.<br />
<br />
Making a high-coverage, open domain system for assimilation and dissemination is a <br />
nice idea, but practically is not possible given limited resources.<br />
<br />
=== Time ===<br />
<br />
The amount of time taken to make a new language pair based on the Apertium platform<br />
depends greatly on the objectives of the project, the existing resources available<br />
and the experience of the developers. A prototype or proof of concept system can be <br />
created in anywhere from 10 days to 3 months. Whereas a production system can <br />
take from 3 months (as in the case of Nynorsk-Bokmål) to several years.<br />
<br />
The following table summarises the development of language pairs in Apertium over the last six years.<br />
<br />
{|class="wikitable"<br />
! Year !! Total pairs !! New pairs !! Language pairs<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Funding ===<br />
<br />
As we saw in the case studies, Apertium language pairs have been funded and created in many different ways. The following table summarises the ways in which development on the "stable" machine translation systems in Apertium was funding. The most used systems online are highlighted in bold face.<br />
<br />
{|class="wikitable"<br />
! Funder !! Type !! Language pair(s)<br />
|-<br />
| Google Summer of Code || Competition || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Volunteers || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Regional government || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Thesis / Dissertation || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Educational institution || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Ministry of Industry, Commerce and Tourism || National government || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Company || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Company || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Educational institution || es-ast<br />
|-<br />
| Prompsit || Company || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Company || fr-es<br />
|-<br />
| Icelandic Research Council || National government || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi non-governmental organisation || '''br-fr'''<br />
|-<br />
| European Assoc. Machine Translation || Non-governmental organisation || eu-en<br />
|-<br />
|}<br />
<br />
==Practical==<br />
<br />
* Search for existing linguistic resources for your language pair, making a note of the licence they are under.<br />
* Define a realistic work/time-plan for making a new translator for a given language pair with Apertium taking into account:<br />
** Existing resources<br />
** What the translator will be used for<br />
** Man power<br />
** Political, financial and community support<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31389Курсы машинного перевода для языков России/Раздел 82012-01-14T19:21:27Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительная доля систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, тщательного планируя и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из жизни Case studies ==<br />
<br />
Следующие реальные примеры отражают 4 успешных но различных стиля создания систем The following case studies highlight four different successful development styles.<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code> разработанного в Университете d'Alacant. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев) которые разработал как движок так и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, и выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск Nynorsk) и норвежский Bokmål ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для около 580,000 норвежцев.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
Переводчик с языка Нюнорск на Bokmål - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трунд Тростеруд, используя имеющиеся данные, такие как Norsk Ordbank (список полных слов на языках нюнорск и Bokmål) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
Начальная версия не была завершено, но проект был подхвачен в 2009 году во время летних соревнований по коду Google Кевином Унхаммеров, студентом компьютерной лингвистики Университета Бергена. В течение трех месяцев, Кевин полностью переделал преобразование обоих списков Ordbank, грамматику ограничений и написал серию правила переноса.<br />
<br />
Он потратил 2 недели на преобразование списков Ordbank в формат Apertium, затем еще неделю на преобразование маркировщика Осло-Берген. Три недели на правила переноса, а потом еще три недели на расширение словарей. Две недели затем были потрачены на проверку правильности работы задач, например, на проверку, что только слова из всех трех словарей были включены. И последняя неделя была посвящена оценке.<br />
<br />
Итоговый охват системы составляет около 90%, например, из корпуса около 10 неизвестных слов из 100 в среднем. Ошибочное слово - около 17%, что означает, из 100 слов 17 должны быть изменены для получения адекватного перевода. Эта система выдерживает конкуренцию с другими имеющимися системы для перевода пары нюнорск-букмол (Nynorsk-Bokmål). На система сегодня приходится более трети всех переводов <br />
осуществляющихся на сайте Apertium.<br />
<br />
=== Бретонский и французский ===<br />
<br />
:''Среднесрочный волонтерский проект при очень коротком государственном и частном финансировании, несколько разработчиков. На бретонском говорят около 200,000 людей.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
The first version had a coverage of around 85%, and a word error rate which, although high, still meant that the translator was useful for assimilation. The system is today [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] on the homepage of Ofis ar Brezhoneg, and updated by staff of the Ofis, including its director, Fulup Jakez.<br />
<br />
=== Spanish and Aragonese ===<br />
:''Medium-term volunteer effort with no public funding and two developers. Aragonese has around 10,000 speakers.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
<br />
The first bidirectional version was completed after another 6 weeks of work by Juan Pablo, spread over the course of another year. The only available resource at the beginning of this work for Aragonese was the Aragonese edition of Wikipedia and a handful of verb templates on the English edition of Wiktionary. The Aragonese--Spanish dictionary was created by hand, but the Spanish morphological analyser/generator and part-of-speech tagger were taken from the Spanish--Catalan pair. No funding was received from any source towards the creation of the system.<br />
<br />
== Contributing factors ==<br />
<br />
=== Existing resources ===<br />
<br />
When linguistic resources, for example corpora, dictionaries, grammars, morphological analysers, lists of lemmata etc. are available under free/open-source licences they can be reused and save development time. However, the amount of time taken for adaptation should not be underestimated.<br />
<br />
A morphological transducer designed for spell checking might make a great spell checker, but it might not be so easy to adapt it for analysis/generation in a machine translation system. Different applications have different requirements, and this should be taken into account when deciding to reuse an existing resource, to adapt it, or to start from scratch.<br />
<br />
=== Objectives ===<br />
<br />
It is important when starting a project to ask questions and clearly define <br />
objectives, for example, <br />
<br />
* Who is the target audience ? <br />
** Do we want the system to be used by professional translators, by lay-translators, by ordinary members of the public ?<br />
* What is the system intended to be used for ? <br />
** Assimilation: For giving an idea of what a text is about <br />
** Dissemination: For producing draft translations<br />
** Domain: Will it be used for news texts, encyclopaedic texts, legal texts, the weather, etc. ?<br />
* What existing linguistic resources can be reused ?<br />
** Are there already good, free dictionaries available ? <br />
* How long do we have to build the system ?<br />
** Six months is probably not enough enough time to build your ideal wide-domain interlingua MT system between all the languages of the Middle Volga, ...<br />
*** ... but it might be enough to build some prototype systems for translating the weather forecast.<br />
<br />
If a system is being planned to translate governmental texts for dissemination,<br />
then it will necessarily have different features than if it is planned to translate <br />
Wikipedia articles for assimilation.<br />
<br />
Making a high-coverage, open domain system for assimilation and dissemination is a <br />
nice idea, but practically is not possible given limited resources.<br />
<br />
=== Time ===<br />
<br />
The amount of time taken to make a new language pair based on the Apertium platform<br />
depends greatly on the objectives of the project, the existing resources available<br />
and the experience of the developers. A prototype or proof of concept system can be <br />
created in anywhere from 10 days to 3 months. Whereas a production system can <br />
take from 3 months (as in the case of Nynorsk-Bokmål) to several years.<br />
<br />
The following table summarises the development of language pairs in Apertium over the last six years.<br />
<br />
{|class="wikitable"<br />
! Year !! Total pairs !! New pairs !! Language pairs<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Funding ===<br />
<br />
As we saw in the case studies, Apertium language pairs have been funded and created in many different ways. The following table summarises the ways in which development on the "stable" machine translation systems in Apertium was funding. The most used systems online are highlighted in bold face.<br />
<br />
{|class="wikitable"<br />
! Funder !! Type !! Language pair(s)<br />
|-<br />
| Google Summer of Code || Competition || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Volunteers || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Regional government || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Thesis / Dissertation || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Educational institution || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Ministry of Industry, Commerce and Tourism || National government || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Company || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Company || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Educational institution || es-ast<br />
|-<br />
| Prompsit || Company || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Company || fr-es<br />
|-<br />
| Icelandic Research Council || National government || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi non-governmental organisation || '''br-fr'''<br />
|-<br />
| European Assoc. Machine Translation || Non-governmental organisation || eu-en<br />
|-<br />
|}<br />
<br />
==Practical==<br />
<br />
* Search for existing linguistic resources for your language pair, making a note of the licence they are under.<br />
* Define a realistic work/time-plan for making a new translator for a given language pair with Apertium taking into account:<br />
** Existing resources<br />
** What the translator will be used for<br />
** Man power<br />
** Political, financial and community support<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31388Курсы машинного перевода для языков России/Раздел 82012-01-14T19:05:34Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительная доля систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя наличие денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, тщательного планируя и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из жизни Case studies ==<br />
<br />
Следующие реальные примеры отражают 4 успешных но различных стиля создания систем The following case studies highlight four different successful development styles.<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code> разработанного в Университете d'Alacant. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев) которые разработал как движок так и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
Переводчик очень высокого качества, и выдерживает сравнение с коммерческими проектами - более 95% охвата словаря (около 5 неизвестных слов из 100), и процент ошибочных слов между 3-7% (из 100 слов около 3 - 7 нужно заменить для получения адекватного перевода). Это второй по популярности переводчик на сайте Apertium, и основной машинный переводчик для ряда университетов в Испании при работе с этой языковой парой.<br />
<br />
=== Новонорвежский язык (нюнорск Nynorsk) и норвежский Bokmål ===<br />
<br />
:''Краткосрочное финансирование на конкурсной основе, один разработчик. Нюнорск - считается предпочитаемым литературным языком для около 580,000 норвежцев.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
Переводчик с языка Нюнорск на Bokmål - самый популярный на нашем сайте. Его начали разрабатывать в 2008 году Фрэнсис Таерз и Трунд Тростеруд, используя имеющиеся данные, такие как Norsk Ordbank (список полных слов на языках нюнорск и Bokmål) и маркировщик слов Осло-Берген (грамматика ограничений, основанная на инструменте разрешения неоднозначности для обоих видов норвежского языка).<br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
<br />
He spent 2 weeks converting the Ordbank to Apertium format, then another week converting the Oslo-Bergen tagger. Three weeks on transfer rules, and then another three weeks expanding the dictionaries. Two weeks were then spent on "cleaning up" tasks, e.g. making sure that only words that were in all three dictionaries were included. Then the final week on evaluation. <br />
<br />
The final coverage of the system was around 90%, e.g. over a set of corpora 10 unknown words out of 100 on average. The word-error rate was around 17%, meaning that out of 100 words, 17 have to be changed in order to get an adequate translation. This is competitive with the other available system for translation Nynorsk-Bokmål. The system today accounts for over a third of all translations carried out on the Apertium website.<br />
<br />
Оригинальная реализация не была завершена, но проект был рассмотрен еще раз в 2009 году во время летних Google Кодекса конкуренции, Кевин Unhammer, студент мастеров в компьютерной лингвистике в Университете Бергена. В течение трех месяцев, Кевин полностью переделан преобразования обоих Ordbank и ограничения грамматики и написал серию правила переноса.<br />
<br />
Он провел 2 недели преобразования Ordbank к Apertium формат, затем еще неделю преобразования Осло-Берген Tagger. Три недели о передаче правила, а потом еще три недели расширения словарей. Две недели были затем провел на "очистку" задач, например, убедившись, что только слова, которые были во всех трех словарей были включены. Затем последнюю неделю об оценке.<br />
<br />
Окончательный охват системы составляет около 90%, например, по набору корпусов 10 неизвестных слов из 100 в среднем.Слово-ошибка составила около 17%, а это означает, что из 100 слов, 17 должны быть изменены для того, чтобы получить адекватный перевод. Это конкурировать с другими имеющимися системы для перевода нюнорск-букмол.Система сегодня приходится более трети всех переводов осуществляется на Apertium сайте.<br />
=== Breton and French ===<br />
<br />
:''Medium-term volunteer effort with very-short term public/private funding and several developers. Breton is spoken by around 200,000 people.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
The first version had a coverage of around 85%, and a word error rate which, although high, still meant that the translator was useful for assimilation. The system is today [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] on the homepage of Ofis ar Brezhoneg, and updated by staff of the Ofis, including its director, Fulup Jakez.<br />
<br />
=== Spanish and Aragonese ===<br />
:''Medium-term volunteer effort with no public funding and two developers. Aragonese has around 10,000 speakers.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
<br />
The first bidirectional version was completed after another 6 weeks of work by Juan Pablo, spread over the course of another year. The only available resource at the beginning of this work for Aragonese was the Aragonese edition of Wikipedia and a handful of verb templates on the English edition of Wiktionary. The Aragonese--Spanish dictionary was created by hand, but the Spanish morphological analyser/generator and part-of-speech tagger were taken from the Spanish--Catalan pair. No funding was received from any source towards the creation of the system.<br />
<br />
== Contributing factors ==<br />
<br />
=== Existing resources ===<br />
<br />
When linguistic resources, for example corpora, dictionaries, grammars, morphological analysers, lists of lemmata etc. are available under free/open-source licences they can be reused and save development time. However, the amount of time taken for adaptation should not be underestimated.<br />
<br />
A morphological transducer designed for spell checking might make a great spell checker, but it might not be so easy to adapt it for analysis/generation in a machine translation system. Different applications have different requirements, and this should be taken into account when deciding to reuse an existing resource, to adapt it, or to start from scratch.<br />
<br />
=== Objectives ===<br />
<br />
It is important when starting a project to ask questions and clearly define <br />
objectives, for example, <br />
<br />
* Who is the target audience ? <br />
** Do we want the system to be used by professional translators, by lay-translators, by ordinary members of the public ?<br />
* What is the system intended to be used for ? <br />
** Assimilation: For giving an idea of what a text is about <br />
** Dissemination: For producing draft translations<br />
** Domain: Will it be used for news texts, encyclopaedic texts, legal texts, the weather, etc. ?<br />
* What existing linguistic resources can be reused ?<br />
** Are there already good, free dictionaries available ? <br />
* How long do we have to build the system ?<br />
** Six months is probably not enough enough time to build your ideal wide-domain interlingua MT system between all the languages of the Middle Volga, ...<br />
*** ... but it might be enough to build some prototype systems for translating the weather forecast.<br />
<br />
If a system is being planned to translate governmental texts for dissemination,<br />
then it will necessarily have different features than if it is planned to translate <br />
Wikipedia articles for assimilation.<br />
<br />
Making a high-coverage, open domain system for assimilation and dissemination is a <br />
nice idea, but practically is not possible given limited resources.<br />
<br />
=== Time ===<br />
<br />
The amount of time taken to make a new language pair based on the Apertium platform<br />
depends greatly on the objectives of the project, the existing resources available<br />
and the experience of the developers. A prototype or proof of concept system can be <br />
created in anywhere from 10 days to 3 months. Whereas a production system can <br />
take from 3 months (as in the case of Nynorsk-Bokmål) to several years.<br />
<br />
The following table summarises the development of language pairs in Apertium over the last six years.<br />
<br />
{|class="wikitable"<br />
! Year !! Total pairs !! New pairs !! Language pairs<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Funding ===<br />
<br />
As we saw in the case studies, Apertium language pairs have been funded and created in many different ways. The following table summarises the ways in which development on the "stable" machine translation systems in Apertium was funding. The most used systems online are highlighted in bold face.<br />
<br />
{|class="wikitable"<br />
! Funder !! Type !! Language pair(s)<br />
|-<br />
| Google Summer of Code || Competition || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Volunteers || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Regional government || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Thesis / Dissertation || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Educational institution || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Ministry of Industry, Commerce and Tourism || National government || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Company || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Company || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Educational institution || es-ast<br />
|-<br />
| Prompsit || Company || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Company || fr-es<br />
|-<br />
| Icelandic Research Council || National government || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi non-governmental organisation || '''br-fr'''<br />
|-<br />
| European Assoc. Machine Translation || Non-governmental organisation || eu-en<br />
|-<br />
|}<br />
<br />
==Practical==<br />
<br />
* Search for existing linguistic resources for your language pair, making a note of the licence they are under.<br />
* Define a realistic work/time-plan for making a new translator for a given language pair with Apertium taking into account:<br />
** Existing resources<br />
** What the translator will be used for<br />
** Man power<br />
** Political, financial and community support<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31387Курсы машинного перевода для языков России/Раздел 82012-01-14T18:49:03Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Основная задача данного раздела показать, что создание новой системы перевода с системой Apertium не обязательно должно стоить несколько миллионов евро и занимать несколько лет. Значительная доля систем Apertium была разработана несколькими людьми всего за несколько месяцев за счет использования существующих ресурсов, и подвижного движка системы.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
Хотя много денег и времени часто является предпосылкой для создания лучшей системы машинного перевода, многое можно сделать имея реалистичные ожидания, тщательного планируя и эффективно используя вклад добровольцев-разработчиков.<br />
<br />
== Примеры из жизни Case studies ==<br />
<br />
Следующие реальные примеры отражают 4 успешных но различных стиля создания систем The following case studies highlight four different successful development styles.<br />
<br />
=== Испанский и каталонский ===<br />
<br />
:''Долгосрочное государственное финансирование, несколько разработчиков. На каталонском говорят около девяти миллионов человек.''<br />
<br />
Переводчик с испанского на каталонский является старейшим переводчиком в Apertium. Он был переписан и расширен на основе переводчика <code>interNOSTRUM</code> разработанного в Университете d'Alacant. В общей сложности, он создавался в течение 12 лет. Начальная версия <code>interNOSTRUM</code> была выпущена в начале 2000 года и заняла около 72 человеко-месяцев (четыре человека, 18 месяцев) которые разработал как движок так и лингвистические данные. Он широко использовался, насчитывая около тысячи запросов в день.<br />
<br />
В 2004 году Apertium, при финансовой поддержке Министерства науки, промышленности и торговли Испании, запустил проект по переписки кода для общего доступа, а также по преобразованию лингвистических данных. После одного человеко-года, была выпущена первая версия испано-каталонского переводчика.<br />
<br />
The quality of the translator is very high, and compares with commercial systems -- over 95% coverage (around 5 unknown words out of 100 words), and between 3-7% word-error rate (out of 100 words, between 3-7 need to be changed in order to get an adequate translation). It is the second most used translator on the Apertium website, and is the main machine translation system of a number of universities in Spain for this language pair.<br />
Качество переводчик очень высока, и сравнивает с коммерческими системами - более 95% заполнении (около 5 неизвестных слов из 100 слов), а также между 3-7% слов ошибок (из 100 слов, в период с 3 - 7 должны быть изменены для того, чтобы получить адекватный перевод). Это второй наиболее часто используемых переводчик на Apertium сайт, и является основной системой машинного перевода ряда университетов в Испании для этой языковой пары.<br />
=== Norwegian Nynorsk and Norwegian Bokmål ===<br />
<br />
:''Short-term funding from a competition, one developer. Nynorsk is the "preferred standard" of approximately 580,000 Norwegians.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
<br />
He spent 2 weeks converting the Ordbank to Apertium format, then another week converting the Oslo-Bergen tagger. Three weeks on transfer rules, and then another three weeks expanding the dictionaries. Two weeks were then spent on "cleaning up" tasks, e.g. making sure that only words that were in all three dictionaries were included. Then the final week on evaluation. <br />
<br />
The final coverage of the system was around 90%, e.g. over a set of corpora 10 unknown words out of 100 on average. The word-error rate was around 17%, meaning that out of 100 words, 17 have to be changed in order to get an adequate translation. This is competitive with the other available system for translation Nynorsk-Bokmål. The system today accounts for over a third of all translations carried out on the Apertium website.<br />
<br />
=== Breton and French ===<br />
<br />
:''Medium-term volunteer effort with very-short term public/private funding and several developers. Breton is spoken by around 200,000 people.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
The first version had a coverage of around 85%, and a word error rate which, although high, still meant that the translator was useful for assimilation. The system is today [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] on the homepage of Ofis ar Brezhoneg, and updated by staff of the Ofis, including its director, Fulup Jakez.<br />
<br />
=== Spanish and Aragonese ===<br />
:''Medium-term volunteer effort with no public funding and two developers. Aragonese has around 10,000 speakers.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
<br />
The first bidirectional version was completed after another 6 weeks of work by Juan Pablo, spread over the course of another year. The only available resource at the beginning of this work for Aragonese was the Aragonese edition of Wikipedia and a handful of verb templates on the English edition of Wiktionary. The Aragonese--Spanish dictionary was created by hand, but the Spanish morphological analyser/generator and part-of-speech tagger were taken from the Spanish--Catalan pair. No funding was received from any source towards the creation of the system.<br />
<br />
== Contributing factors ==<br />
<br />
=== Existing resources ===<br />
<br />
When linguistic resources, for example corpora, dictionaries, grammars, morphological analysers, lists of lemmata etc. are available under free/open-source licences they can be reused and save development time. However, the amount of time taken for adaptation should not be underestimated.<br />
<br />
A morphological transducer designed for spell checking might make a great spell checker, but it might not be so easy to adapt it for analysis/generation in a machine translation system. Different applications have different requirements, and this should be taken into account when deciding to reuse an existing resource, to adapt it, or to start from scratch.<br />
<br />
=== Objectives ===<br />
<br />
It is important when starting a project to ask questions and clearly define <br />
objectives, for example, <br />
<br />
* Who is the target audience ? <br />
** Do we want the system to be used by professional translators, by lay-translators, by ordinary members of the public ?<br />
* What is the system intended to be used for ? <br />
** Assimilation: For giving an idea of what a text is about <br />
** Dissemination: For producing draft translations<br />
** Domain: Will it be used for news texts, encyclopaedic texts, legal texts, the weather, etc. ?<br />
* What existing linguistic resources can be reused ?<br />
** Are there already good, free dictionaries available ? <br />
* How long do we have to build the system ?<br />
** Six months is probably not enough enough time to build your ideal wide-domain interlingua MT system between all the languages of the Middle Volga, ...<br />
*** ... but it might be enough to build some prototype systems for translating the weather forecast.<br />
<br />
If a system is being planned to translate governmental texts for dissemination,<br />
then it will necessarily have different features than if it is planned to translate <br />
Wikipedia articles for assimilation.<br />
<br />
Making a high-coverage, open domain system for assimilation and dissemination is a <br />
nice idea, but practically is not possible given limited resources.<br />
<br />
=== Time ===<br />
<br />
The amount of time taken to make a new language pair based on the Apertium platform<br />
depends greatly on the objectives of the project, the existing resources available<br />
and the experience of the developers. A prototype or proof of concept system can be <br />
created in anywhere from 10 days to 3 months. Whereas a production system can <br />
take from 3 months (as in the case of Nynorsk-Bokmål) to several years.<br />
<br />
The following table summarises the development of language pairs in Apertium over the last six years.<br />
<br />
{|class="wikitable"<br />
! Year !! Total pairs !! New pairs !! Language pairs<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Funding ===<br />
<br />
As we saw in the case studies, Apertium language pairs have been funded and created in many different ways. The following table summarises the ways in which development on the "stable" machine translation systems in Apertium was funding. The most used systems online are highlighted in bold face.<br />
<br />
{|class="wikitable"<br />
! Funder !! Type !! Language pair(s)<br />
|-<br />
| Google Summer of Code || Competition || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Volunteers || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Regional government || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Thesis / Dissertation || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Educational institution || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Ministry of Industry, Commerce and Tourism || National government || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Company || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Company || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Educational institution || es-ast<br />
|-<br />
| Prompsit || Company || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Company || fr-es<br />
|-<br />
| Icelandic Research Council || National government || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi non-governmental organisation || '''br-fr'''<br />
|-<br />
| European Assoc. Machine Translation || Non-governmental organisation || eu-en<br />
|-<br />
|}<br />
<br />
==Practical==<br />
<br />
* Search for existing linguistic resources for your language pair, making a note of the licence they are under.<br />
* Define a realistic work/time-plan for making a new translator for a given language pair with Apertium taking into account:<br />
** Existing resources<br />
** What the translator will be used for<br />
** Man power<br />
** Political, financial and community support<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31383Курсы машинного перевода для языков России/Раздел 82012-01-14T14:29:54Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Главная задача данного раздела The main idea of this session is to show that making a new translation system with Apertium need not be a multi-million euro undertaking spanning several years. A good proportion of the systems developed with Apertium have taken only a few person months to develop, taking advantage of existing resources, and the extensible nature of the engine.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
<br />
== Case studies ==<br />
<br />
The following case studies highlight four different successful development styles.<br />
<br />
=== Spanish and Catalan ===<br />
<br />
:''Long-term public funding, several developers. Catalan has around nine million speakers.''<br />
<br />
The Spanish to Catalan translator is the oldest translator in Apertium. It is a rewrite / expansion of the <code>interNOSTRUM</code> translator that was developed at the Universitat d'Alacant. In total, it has been developed over a period of around 12 years. The original <code>interNOSTRUM</code> was released in early 2000 and took around 72 person-months (four people, 18 months) to develop (both engine, and linguistic data). It was widely used, with thousands of requests per day.<br />
<br />
In 2004, the Apertium project was started with funding from the Ministry of Science, Industry and Commerce of the Spanish State to rewrite the code as open-source, and to convert the linguistic data. After one person year, the first version of the Spanish--Catalan translator was released. <br />
<br />
The quality of the translator is very high, and compares with commercial systems -- over 95% coverage (around 5 unknown words out of 100 words), and between 3-7% word-error rate (out of 100 words, between 3-7 need to be changed in order to get an adequate translation). It is the second most used translator on the Apertium website, and is the main machine translation system of a number of universities in Spain for this language pair.<br />
<br />
=== Norwegian Nynorsk and Norwegian Bokmål ===<br />
<br />
:''Short-term funding from a competition, one developer. Nynorsk is the "preferred standard" of approximately 580,000 Norwegians.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
<br />
He spent 2 weeks converting the Ordbank to Apertium format, then another week converting the Oslo-Bergen tagger. Three weeks on transfer rules, and then another three weeks expanding the dictionaries. Two weeks were then spent on "cleaning up" tasks, e.g. making sure that only words that were in all three dictionaries were included. Then the final week on evaluation. <br />
<br />
The final coverage of the system was around 90%, e.g. over a set of corpora 10 unknown words out of 100 on average. The word-error rate was around 17%, meaning that out of 100 words, 17 have to be changed in order to get an adequate translation. This is competitive with the other available system for translation Nynorsk-Bokmål. The system today accounts for over a third of all translations carried out on the Apertium website.<br />
<br />
=== Breton and French ===<br />
<br />
:''Medium-term volunteer effort with very-short term public/private funding and several developers. Breton is spoken by around 200,000 people.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
The first version had a coverage of around 85%, and a word error rate which, although high, still meant that the translator was useful for assimilation. The system is today [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] on the homepage of Ofis ar Brezhoneg, and updated by staff of the Ofis, including its director, Fulup Jakez.<br />
<br />
=== Spanish and Aragonese ===<br />
:''Medium-term volunteer effort with no public funding and two developers. Aragonese has around 10,000 speakers.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
<br />
The first bidirectional version was completed after another 6 weeks of work by Juan Pablo, spread over the course of another year. The only available resource at the beginning of this work for Aragonese was the Aragonese edition of Wikipedia and a handful of verb templates on the English edition of Wiktionary. The Aragonese--Spanish dictionary was created by hand, but the Spanish morphological analyser/generator and part-of-speech tagger were taken from the Spanish--Catalan pair. No funding was received from any source towards the creation of the system.<br />
<br />
== Contributing factors ==<br />
<br />
=== Existing resources ===<br />
<br />
When linguistic resources, for example corpora, dictionaries, grammars, morphological analysers, lists of lemmata etc. are available under free/open-source licences they can be reused and save development time. However, the amount of time taken for adaptation should not be underestimated.<br />
<br />
A morphological transducer designed for spell checking might make a great spell checker, but it might not be so easy to adapt it for analysis/generation in a machine translation system. Different applications have different requirements, and this should be taken into account when deciding to reuse an existing resource, to adapt it, or to start from scratch.<br />
<br />
=== Objectives ===<br />
<br />
It is important when starting a project to ask questions and clearly define <br />
objectives, for example, <br />
<br />
* Who is the target audience ? <br />
** Do we want the system to be used by professional translators, by lay-translators, by ordinary members of the public ?<br />
* What is the system intended to be used for ? <br />
** Assimilation: For giving an idea of what a text is about <br />
** Dissemination: For producing draft translations<br />
** Domain: Will it be used for news texts, encyclopaedic texts, legal texts, the weather, etc. ?<br />
* What existing linguistic resources can be reused ?<br />
** Are there already good, free dictionaries available ? <br />
* How long do we have to build the system ?<br />
** Six months is probably not enough enough time to build your ideal wide-domain interlingua MT system between all the languages of the Middle Volga, ...<br />
*** ... but it might be enough to build some prototype systems for translating the weather forecast.<br />
<br />
If a system is being planned to translate governmental texts for dissemination,<br />
then it will necessarily have different features than if it is planned to translate <br />
Wikipedia articles for assimilation.<br />
<br />
Making a high-coverage, open domain system for assimilation and dissemination is a <br />
nice idea, but practically is not possible given limited resources.<br />
<br />
=== Time ===<br />
<br />
The amount of time taken to make a new language pair based on the Apertium platform<br />
depends greatly on the objectives of the project, the existing resources available<br />
and the experience of the developers. A prototype or proof of concept system can be <br />
created in anywhere from 10 days to 3 months. Whereas a production system can <br />
take from 3 months (as in the case of Nynorsk-Bokmål) to several years.<br />
<br />
The following table summarises the development of language pairs in Apertium over the last six years.<br />
<br />
{|class="wikitable"<br />
! Year !! Total pairs !! New pairs !! Language pairs<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Funding ===<br />
<br />
As we saw in the case studies, Apertium language pairs have been funded and created in many different ways. The following table summarises the ways in which development on the "stable" machine translation systems in Apertium was funding. The most used systems online are highlighted in bold face.<br />
<br />
{|class="wikitable"<br />
! Funder !! Type !! Language pair(s)<br />
|-<br />
| Google Summer of Code || Competition || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Volunteers || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Regional government || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Thesis / Dissertation || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Educational institution || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Ministry of Industry, Commerce and Tourism || National government || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Company || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Company || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Educational institution || es-ast<br />
|-<br />
| Prompsit || Company || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Company || fr-es<br />
|-<br />
| Icelandic Research Council || National government || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi non-governmental organisation || '''br-fr'''<br />
|-<br />
| European Assoc. Machine Translation || Non-governmental organisation || eu-en<br />
|-<br />
|}<br />
<br />
==Practical==<br />
<br />
* Search for existing linguistic resources for your language pair, making a note of the licence they are under.<br />
* Define a realistic work/time-plan for making a new translator for a given language pair with Apertium taking into account:<br />
** Existing resources<br />
** What the translator will be used for<br />
** Man power<br />
** Political, financial and community support<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_8&diff=31382Курсы машинного перевода для языков России/Раздел 82012-01-14T14:29:25Z<p>Enjo: Created page with '{{TOCD}} The main idea of this session is to show that making a new translation system with Apertium need not be a multi-million euro undertaking spanning several years. A good …'</p>
<hr />
<div>{{TOCD}}<br />
<br />
The main idea of this session is to show that making a new translation system with Apertium need not be a multi-million euro undertaking spanning several years. A good proportion of the systems developed with Apertium have taken only a few person months to develop, taking advantage of existing resources, and the extensible nature of the engine.<br />
<br />
While more time and money is often an effective way of making a better machine translation system, a lot can be said for realistic expectations, careful planning and effective contributions by volunteer developers. <br />
<br />
== Case studies ==<br />
<br />
The following case studies highlight four different successful development styles.<br />
<br />
=== Spanish and Catalan ===<br />
<br />
:''Long-term public funding, several developers. Catalan has around nine million speakers.''<br />
<br />
The Spanish to Catalan translator is the oldest translator in Apertium. It is a rewrite / expansion of the <code>interNOSTRUM</code> translator that was developed at the Universitat d'Alacant. In total, it has been developed over a period of around 12 years. The original <code>interNOSTRUM</code> was released in early 2000 and took around 72 person-months (four people, 18 months) to develop (both engine, and linguistic data). It was widely used, with thousands of requests per day.<br />
<br />
In 2004, the Apertium project was started with funding from the Ministry of Science, Industry and Commerce of the Spanish State to rewrite the code as open-source, and to convert the linguistic data. After one person year, the first version of the Spanish--Catalan translator was released. <br />
<br />
The quality of the translator is very high, and compares with commercial systems -- over 95% coverage (around 5 unknown words out of 100 words), and between 3-7% word-error rate (out of 100 words, between 3-7 need to be changed in order to get an adequate translation). It is the second most used translator on the Apertium website, and is the main machine translation system of a number of universities in Spain for this language pair.<br />
<br />
=== Norwegian Nynorsk and Norwegian Bokmål ===<br />
<br />
:''Short-term funding from a competition, one developer. Nynorsk is the "preferred standard" of approximately 580,000 Norwegians.''<br />
<br />
The Nynorsk to Bokmål translator is the most-used translator on our webpage. It was started in 2008 by Francis Tyers and Trond Trosterud, using existing resources such as the Norsk Ordbank (a large full-form list of words in Nynorsk and Bokmål) and the Oslo-Bergen tagger (a constraint grammar based disambiguator for both varieties of Norwegian). <br />
<br />
The original implementation was never completed, but the project was taken up again in 2009 during the Google Summer of Code competition by Kevin Unhammer, a masters' student in computational linguistics at the University of Bergen. Over a period of three months, Kevin completely remade the conversion of both the Ordbank, and the constraint grammar, and wrote a series of transfer rules.<br />
<br />
He spent 2 weeks converting the Ordbank to Apertium format, then another week converting the Oslo-Bergen tagger. Three weeks on transfer rules, and then another three weeks expanding the dictionaries. Two weeks were then spent on "cleaning up" tasks, e.g. making sure that only words that were in all three dictionaries were included. Then the final week on evaluation. <br />
<br />
The final coverage of the system was around 90%, e.g. over a set of corpora 10 unknown words out of 100 on average. The word-error rate was around 17%, meaning that out of 100 words, 17 have to be changed in order to get an adequate translation. This is competitive with the other available system for translation Nynorsk-Bokmål. The system today accounts for over a third of all translations carried out on the Apertium website.<br />
<br />
=== Breton and French ===<br />
<br />
:''Medium-term volunteer effort with very-short term public/private funding and several developers. Breton is spoken by around 200,000 people.''<br />
<br />
Work on the Breton--French translator was started in 2008 by Francis Tyers in his spare time. After three months, a proof-of-concept system, using transfer rules from the French--Spanish pair was presented at Ofis ar Brezhoneg in December. It was decided that funding would be found to support another month of development to finish a prototype system which would be useful for assimilation purposes.<br />
<br />
In the end, funding for the travel of a Breton speaker to Alacant was arranged by Ofis ar Brezhoneg, the Universitat d'Alacant paid for a month's wages of the Breton speaker, and Prompsit Language Engineering paid for a month of Francis Tyers' time. A further two months. In total, the monetary cost was around €3,000. The first version of the translator was released in May of 2009. <br />
<br />
The first version had a coverage of around 85%, and a word error rate which, although high, still meant that the translator was useful for assimilation. The system is today [http://www.ofis-bzh.org/fr/ressources_linguistiques/index-troerofis.php available] on the homepage of Ofis ar Brezhoneg, and updated by staff of the Ofis, including its director, Fulup Jakez.<br />
<br />
=== Spanish and Aragonese ===<br />
:''Medium-term volunteer effort with no public funding and two developers. Aragonese has around 10,000 speakers.''<br />
<br />
Work on the Spanish-Aragonese translator was begun by Apertium-developer Jim O'Regan, at the request of Aragonese-speaker Juan Pablo Martínez. After three weeks of initial effort, spread over the course of a year, a final week of concentrated effort lead to the release of the first prototype version, translating from Aragonese to Spanish only.<br />
<br />
The first bidirectional version was completed after another 6 weeks of work by Juan Pablo, spread over the course of another year. The only available resource at the beginning of this work for Aragonese was the Aragonese edition of Wikipedia and a handful of verb templates on the English edition of Wiktionary. The Aragonese--Spanish dictionary was created by hand, but the Spanish morphological analyser/generator and part-of-speech tagger were taken from the Spanish--Catalan pair. No funding was received from any source towards the creation of the system.<br />
<br />
== Contributing factors ==<br />
<br />
=== Existing resources ===<br />
<br />
When linguistic resources, for example corpora, dictionaries, grammars, morphological analysers, lists of lemmata etc. are available under free/open-source licences they can be reused and save development time. However, the amount of time taken for adaptation should not be underestimated.<br />
<br />
A morphological transducer designed for spell checking might make a great spell checker, but it might not be so easy to adapt it for analysis/generation in a machine translation system. Different applications have different requirements, and this should be taken into account when deciding to reuse an existing resource, to adapt it, or to start from scratch.<br />
<br />
=== Objectives ===<br />
<br />
It is important when starting a project to ask questions and clearly define <br />
objectives, for example, <br />
<br />
* Who is the target audience ? <br />
** Do we want the system to be used by professional translators, by lay-translators, by ordinary members of the public ?<br />
* What is the system intended to be used for ? <br />
** Assimilation: For giving an idea of what a text is about <br />
** Dissemination: For producing draft translations<br />
** Domain: Will it be used for news texts, encyclopaedic texts, legal texts, the weather, etc. ?<br />
* What existing linguistic resources can be reused ?<br />
** Are there already good, free dictionaries available ? <br />
* How long do we have to build the system ?<br />
** Six months is probably not enough enough time to build your ideal wide-domain interlingua MT system between all the languages of the Middle Volga, ...<br />
*** ... but it might be enough to build some prototype systems for translating the weather forecast.<br />
<br />
If a system is being planned to translate governmental texts for dissemination,<br />
then it will necessarily have different features than if it is planned to translate <br />
Wikipedia articles for assimilation.<br />
<br />
Making a high-coverage, open domain system for assimilation and dissemination is a <br />
nice idea, but practically is not possible given limited resources.<br />
<br />
=== Time ===<br />
<br />
The amount of time taken to make a new language pair based on the Apertium platform<br />
depends greatly on the objectives of the project, the existing resources available<br />
and the experience of the developers. A prototype or proof of concept system can be <br />
created in anywhere from 10 days to 3 months. Whereas a production system can <br />
take from 3 months (as in the case of Nynorsk-Bokmål) to several years.<br />
<br />
The following table summarises the development of language pairs in Apertium over the last six years.<br />
<br />
{|class="wikitable"<br />
! Year !! Total pairs !! New pairs !! Language pairs<br />
|-<br />
| 2005 || 3 || 3 || es-ca, es-gl, es-pt<br />
|-<br />
| 2006 || 6 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca<br />
|-<br />
| 2007 || 8 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es<br />
|-<br />
| 2008 || 18 || 10 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca<br />
|-<br />
| 2009 || 21 || 3 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr<br />
|-<br />
| 2010 || 23 || 2 || es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg<br />
|-<br />
| 2011 || 33 || 10 ||es-ca, es-gl, es-pt, en-ca, fr-ca, oc-ca, es-ro, fr-es, oc-es, en-gl, cy-en, eo-ca, eo-es, eu-es, pt-gl, eo-en, en-es, pt-ca, nn-nb, sv-da, br-fr, es-ast, mk-bg, is-en, ca-it, eo-fr, mk-en, es-an, eu-en, es-it, sh-mk, tr-az, tr-ky<br />
|-<br />
|}<br />
<br />
=== Funding ===<br />
<br />
As we saw in the case studies, Apertium language pairs have been funded and created in many different ways. The following table summarises the ways in which development on the "stable" machine translation systems in Apertium was funding. The most used systems online are highlighted in bold face.<br />
<br />
{|class="wikitable"<br />
! Funder !! Type !! Language pair(s)<br />
|-<br />
| Google Summer of Code || Competition || mk-bg, '''nn-nb''', sh-mk, sv-da, tr-az, tr-ky<br />
|-<br />
| &mdash; || Volunteers || eo-fr, es-an, mk-en, ca-it, eo-en<br />
|-<br />
| Generalitat de Catalunya || Regional government || oc-ca, oc-es, en-ca, <br />
|-<br />
| &mdash; || Thesis / Dissertation || cy-en, fr-ca, pt-ca<br />
|-<br />
| Universitat d'Alacant || Educational institution || eu-es, (br-fr), '''es-pt'''<br />
|-<br />
| Ministry of Industry, Commerce and Tourism || National government || '''es-ca''', es-gl<br />
|-<br />
| ABC Enciklopedioj || Company || eo-es, eo-ca<br />
|-<br />
| imaxin<nowiki>|</nowiki>software || Company || en-gl, pt-gl<br />
|-<br />
| Universidá d'Uviéu || Educational institution || es-ast<br />
|-<br />
| Prompsit || Company || es-it, (br-fr), (fr-es)<br />
|-<br />
| Eleka Ingenieritza Linguistikoa || Company || fr-es<br />
|-<br />
| Icelandic Research Council || National government || is-en<br />
|-<br />
| Ofis ar Brezhoneg || Quasi non-governmental organisation || '''br-fr'''<br />
|-<br />
| European Assoc. Machine Translation || Non-governmental organisation || eu-en<br />
|-<br />
|}<br />
<br />
==Practical==<br />
<br />
* Search for existing linguistic resources for your language pair, making a note of the licence they are under.<br />
* Define a realistic work/time-plan for making a new translator for a given language pair with Apertium taking into account:<br />
** Existing resources<br />
** What the translator will be used for<br />
** Man power<br />
** Political, financial and community support<br />
<br />
[[Category:Машинный перевод для языков России|Session 8]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31381Курсы машинного перевода для языков России/Раздел 72012-01-14T14:26:32Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные аспекты создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы рассмотрим вопрос важности согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является In contrast to many other types of systems for natural language processing — such as morphological analysers and part-of-speech taggers, a machine translation system designed and developed with Apertium is a '''self-contained system'''. При введении разных вводных данных, результат обработки должен быть одним, предсказуемым и определеннымFor any input, it should have one, predictable, deterministic output.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в transfer lexicon, и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне lemmas, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом заключается принципиальное различие между различными статусами языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это можно показать на примере перевода предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: This is demonstrated if we try and translate the sentence in Turkish below with two distinct translators in Apertium:<br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и формировании. <br />
<br />
* Если это недостающая лемма из двуязычного словаря, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' не появляется в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но не существует леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Также если есть и лемма и тэг с частью речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет надпись <code>@</code>.<br />
* Если словарь языка перевода не содержит данную лемму, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но произошла ошибка соответствия в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется but there is a mismatch in the morphological tags between the output of transfer and the morphological dictionary, then a <code>#</code> will be produced. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запускать в работу любой переводчик, должны быть проведены все тесты словарей (в обиходе это называют и не должно быть никаких диагностических символов в результатах перевода. На практике, ошибки иногда остаются. In principle, before any translator is released, a full test of the dictionaries must be performed (colloquially called ''testvoc'' &mdash; from ''<u>test voc</u>abulary''), and no diagnostic symbols must be present in the translation. In practice, sometimes errors may remain.<br />
<br />
<br />
ОднОдна изOne of the reasons that Apertium avoids modelling unrestricted derivational processes is because they may not be equivalent in both languages. If they are not equivalent, and the transfer rules are not in place, then debugging and testing the translator is much more difficult. Also, if the morphological transducers are cyclic (allow unrestricted derivation) it is impossible to perform a vocabulary test.<br />
Одна из причин почему Apertium избегает моделирования неограниченных деривационных процессов в том, что могут быть не эквивалентными в обоих языках. Если они не эквивалентны, и правила переноса оказываются смещенными, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают неограниченное словообразование) невозможно выполнять тестирование лексики.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. Quality—you know what it is, yet you don’t know what it is. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше чем другие, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые шестеренки и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как понятие качества трудно для определения и измерения, мы можем попробовать ответить на этот интересный философский вопрос, отвечая на конкретные вопросы. Например:<br />
<br />
* How much of the two languages is covered by the dictionaries of the system in the desired domain ? <br />
* Is the morphological disambiguation performed well enough to choose both the right translations of words, and make the transfer rules effective ? <br />
* Are there inconsistencies in the dictionaries leading to diagnostic symbols ?<br />
* Is the system laid out in a way that makes it easy, or feasible to modify ?<br />
* Какая часть из двух языков представлена в словарях системы в нужном домене?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно так хорошо что обеспечивает правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словари, ведущие к диагностическим символам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Качество перевода====<br />
<br />
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть такими:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
* Получить примерный перевод:<br />
** Согласно человеку, работающему с переводами, это быстрее и эффективнее изменять проект перевода, предложенной системой или переводить с нуля?<br />
* Получить перевод для знакомства с содержанием текста:<br />
** Может ли система делать переводы, достаточно понятные и быстрые, для определенных случаев, которые бы не нуждались в редактировании человеком?<br />
<br />
===Оценка===<br />
<br />
====Размер словаря Vocabulary coverage====<br />
<br />
The coverage of a system is an indication of how much of the vocabulary it covers in a given corpus or domain. For an idea of what this means, we will try translating a sentence from Turkish to Bashkir with different levels of coverage:<br />
Размер системы - это показатель объема словаря от данного языкового корпуса или домена, с которым работает система. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные размеры словаря:<br />
{|class=wikitable<br />
! Предложение !! Размер <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Как правило, объем словаря можно оценить на примере набора предложений или корпусу, а не по одному предложению. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, или это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, кроме как в случае родственных языков. Однако, как правило, достаточно, чтобы сделать понятныее переводы.<br />
<br />
====Уровень ошибок Error rate====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем случае, при том, что остальная часть перевода является правильным. Но более точный показатель того, сколько слов вам придется заменить при использовании переводчика можно получить при помощи подсчета ошибок по итогам перевода (часто сокращенно {{SC | WER}}). Этот показатель отражает все изменения (вставки, удаления, замены)и дается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.<br />
<br />
Снова возьмем вышеприведенный пример:<br />
<br />
<br />
{|class=wikitable<br />
! !! !! Изменения !! {{sc|wer}}<br />
|-<br />
| '''Оригинал''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Машинный перевод''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Отредактированный''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
Как и в случае изучения объема словаря, оценка ошибок, как правило, проводится на наборе предложений. Она показывает сколько слов вам, вероятно, придется изменить в данном предложении.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
После подсчета уровня ошибок и объема словаря на примере соответствующего корпуса целевого перевода можно получить представление о полезности системы машинного перевода для конкретной задачи. Конечно, чтобы определить, насколько полезной является система для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.<br />
<br />
==Практика==<br />
<br />
===Системность Consistency===<br />
<br />
====Testvoc Тестирование словаря====<br />
<br />
Чтобы увидеть как управлять сценарием testvoc и как выглядит результат, перейдите к папке <code>apertium-tt-ba</code>. Убедитесь, что переводчик скомпилирован (например, наберите <code>make</code>), а затем введите подпапку <code>dev/</code>.<br />
<br />
Чтобы выполнить testvoc вам необходимо ввести команду <code>testvoc.sh</code>:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
Весь тест займет около 20&mdash;25 минут, и сгенерирует 3-400M of output.<br />
<br />
===Оценка===<br />
<br />
====Охват====<br />
<br />
Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Охват 93.4% для морфологического анализатора татарского языка для данного примере for the Tatar morphological analyser for the example text.<br />
<br />
====Уровень ошибок Word error rate====<br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
В системе Apertium есть инструмент для подсчета соотношения ошибочных слов между reference translation и машинным переводом. Инструмент называется <code>apertium-eval-translator</code> и его можно найти в базе хранения [[Apertium SVN]]. Цель данной практической сессии - испытать его на системе, которую вы создали.<br />
<br />
Вам понадобится два reference translations. Первым будет "оригинальный" текст на языке перевода, которые был создан без дальнейшего редактирования пост-editting. Вторым будет отредактированный вариант текста машинного перевода. При редактировании текста, постарайтесь внести только минимальные изменения, необходимые для получения адекватного перевода.<br />
<br />
Вот пример с башкирского на татарский. Образец текста находится в файле <code>ba.txt</code>, введите команду:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Проверьте что файл был создан правильно затем введите:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Статистика о введенных файлах<br />
-------------------------------------------------------<br />
Количество слов in reference: 311<br />
Количество слов в тесте: 313<br />
Количество неизвестных слов (отмечены звездочкой) в тесте: <br />
Процент неизвестных слов: 0.00 %<br />
<br />
Результаты после удаления пометок о неизвестных словах (звездочек)Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Процент ошибочных слов (WER): 13.42 %<br />
Количество ошибочных слов Number of position-independent word errors: 42<br />
Процент ошибочных слов Position-independent word error rate (PER): 13.42 %<br />
<br />
Результаты когда указатели на незнакомые слова не удалены Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Статистика по переводу незнакомых слов<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
Это дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .<code>-r</code> дает reference translation, в данном случае <code> tt.txt </ код> это файл, содержащий пример текста на татарском языке. <code>-t</code> выдает текст, например, результат работы системы машинного перевода.<br />
<br />
Теперь скопируйте файл <code>ba-tt.txt</code> назовите <code>tt2.txt</code> и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив <code>tt.txt</code> на <code>tt2.txt</code> и сравните результаты.<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31380Курсы машинного перевода для языков России/Раздел 72012-01-14T13:15:59Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные аспекты создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы рассмотрим вопрос важности согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является In contrast to many other types of systems for natural language processing — such as morphological analysers and part-of-speech taggers, a machine translation system designed and developed with Apertium is a '''self-contained system'''. При введении разных вводных данных, результат обработки должен быть одним, предсказуемым и определеннымFor any input, it should have one, predictable, deterministic output.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в transfer lexicon, и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне lemmas, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом заключается принципиальное различие между различными статусами языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это можно показать на примере перевода предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: This is demonstrated if we try and translate the sentence in Turkish below with two distinct translators in Apertium:<br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и формировании. <br />
<br />
* Если это недостающая лемма из двуязычного словаря, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' не появляется в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но не существует леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Также если есть и лемма и тэг с частью речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет надпись <code>@</code>.<br />
* Если словарь языка перевода не содержит данную лемму, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но произошла ошибка соответствия в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется but there is a mismatch in the morphological tags between the output of transfer and the morphological dictionary, then a <code>#</code> will be produced. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запускать в работу любой переводчик, должны быть проведены все тесты словарей (в обиходе это называют и не должно быть никаких диагностических символов в результатах перевода. На практике, ошибки иногда остаются. In principle, before any translator is released, a full test of the dictionaries must be performed (colloquially called ''testvoc'' &mdash; from ''<u>test voc</u>abulary''), and no diagnostic symbols must be present in the translation. In practice, sometimes errors may remain.<br />
<br />
<br />
ОднОдна изOne of the reasons that Apertium avoids modelling unrestricted derivational processes is because they may not be equivalent in both languages. If they are not equivalent, and the transfer rules are not in place, then debugging and testing the translator is much more difficult. Also, if the morphological transducers are cyclic (allow unrestricted derivation) it is impossible to perform a vocabulary test.<br />
Одна из причин почему Apertium избегает моделирования неограниченных деривационных процессов в том, что могут быть не эквивалентными в обоих языках. Если они не эквивалентны, и правила переноса оказываются смещенными, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают неограниченное словообразование) невозможно выполнять тестирование лексики.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. Quality—you know what it is, yet you don’t know what it is. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше чем другие, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые шестеренки и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как понятие качества трудно для определения и измерения, мы можем попробовать ответить на этот интересный философский вопрос, отвечая на конкретные вопросы. Например:<br />
<br />
* How much of the two languages is covered by the dictionaries of the system in the desired domain ? <br />
* Is the morphological disambiguation performed well enough to choose both the right translations of words, and make the transfer rules effective ? <br />
* Are there inconsistencies in the dictionaries leading to diagnostic symbols ?<br />
* Is the system laid out in a way that makes it easy, or feasible to modify ?<br />
* Какая часть из двух языков представлена в словарях системы в нужном домене?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно так хорошо что обеспечивает правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словари, ведущие к диагностическим символам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Качество перевода====<br />
<br />
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть такими:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
* Получить примерный перевод:<br />
** Согласно человеку, работающему с переводами, это быстрее и эффективнее изменять проект перевода, предложенной системой или переводить с нуля?<br />
* Получить перевод для знакомства с содержанием текста:<br />
** Может ли система делать переводы, достаточно понятные и быстрые, для определенных случаев, которые бы не нуждались в редактировании человеком?<br />
<br />
===Оценка===<br />
<br />
====Размер словаря Vocabulary coverage====<br />
<br />
The coverage of a system is an indication of how much of the vocabulary it covers in a given corpus or domain. For an idea of what this means, we will try translating a sentence from Turkish to Bashkir with different levels of coverage:<br />
Размер системы - это показатель объема словаря от данного языкового корпуса или домена, с которым работает система. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные размеры словаря:<br />
{|class=wikitable<br />
! Предложение !! Размер <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Как правило, объем словаря можно оценить на примере набора предложений или корпусу, а не по одному предложению. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, или это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, кроме как в случае родственных языков. Однако, как правило, достаточно, чтобы сделать понятныее переводы.<br />
<br />
====Уровень ошибок Error rate====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем случае, при том, что остальная часть перевода является правильным. Но более точный показатель того, сколько слов вам придется заменить при использовании переводчика можно получить при помощи подсчета ошибок по итогам перевода (часто сокращенно {{SC | WER}}). Этот показатель отражает все изменения (вставки, удаления, замены)и дается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.<br />
Taking the example above:<br />
<br />
{|class=wikitable<br />
! !! !! Changes !! {{sc|wer}}<br />
|-<br />
| '''Original''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Machine translation''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Revised''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
As with coverage, error rate evaluation is usually carried out on a corpus of sentences. So it gives you an indication of how many words you are likely to have to change in a given sentence.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
<br />
==Practice==<br />
<br />
===Consistency===<br />
<br />
====Testvoc====<br />
<br />
To get an idea of how to run a testvoc script, and what the output looks like, go to the <code>apertium-tt-ba</code> directory. Make sure the translator is compiled (e.g. type <code>make</code>) and then enter the <code>dev/</code> subdirectory. <br />
<br />
In order to perform the testvoc you need to run the <code>testvoc.sh</code> command:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
The whole test will take around 20&mdash;25 minutes to run, and will generate around 3-400M of output.<br />
<br />
===Evaluation===<br />
<br />
====Coverage====<br />
<br />
To calculate coverage, of your morphological analyser, the easiest way is the following, demonstrating again with the Tatar and Bashkir pair:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Giving a coverage of 93.4% for the Tatar morphological analyser for the example text.<br />
<br />
====Word error rate====<br />
<br />
Apertium has a tool for calculating the Word error rate between a reference translation and a machine translation. The tool is called <code>apertium-eval-translator</code> and can be found in the trunk of the [[Apertium SVN]] repository. The objective of this practical is to try it out on the system you have created. <br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
<br />
Here is an example for Bashkir to Tatar. Presuming the example text is in a file called <code>ba.txt</code>, run the command:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Check that the file has been created properly, then run:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Statistics about input files<br />
-------------------------------------------------------<br />
Number of words in reference: 311<br />
Number of words in test: 313<br />
Number of unknown words (marked with a star) in test: <br />
Percentage of unknown words: 0.00 %<br />
<br />
Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word error rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Statistics about the translation of unknown words<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
This gives information about the Word error rate, and some other statistics about the two files. The <code>-r</code> argument gives the reference translation, in this case <code>tt.txt</code> is the file containing the example text in Tatar. The <code>-t</code> gives the test text, e.g. the output of the machine translation system.<br />
<br />
Now make a copy of the file <code>ba-tt.txt</code> called <code>tt2.txt</code> and edit it so that it becomes an adequate translation, then rerun the above commands, substituting <code>tt.txt</code> with <code>tt2.txt</code> and compare the results.<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31379Курсы машинного перевода для языков России/Раздел 72012-01-14T13:07:39Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные аспекты создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы рассмотрим вопрос важности согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является In contrast to many other types of systems for natural language processing — such as morphological analysers and part-of-speech taggers, a machine translation system designed and developed with Apertium is a '''self-contained system'''. При введении разных вводных данных, результат обработки должен быть одним, предсказуемым и определеннымFor any input, it should have one, predictable, deterministic output.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в transfer lexicon, и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне lemmas, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом заключается принципиальное различие между различными статусами языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это можно показать на примере перевода предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: This is demonstrated if we try and translate the sentence in Turkish below with two distinct translators in Apertium:<br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и формировании. <br />
<br />
* Если это недостающая лемма из двуязычного словаря, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' не появляется в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но не существует леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Также если есть и лемма и тэг с частью речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет надпись <code>@</code>.<br />
* Если словарь языка перевода не содержит данную лемму, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но произошла ошибка соответствия в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется but there is a mismatch in the morphological tags between the output of transfer and the morphological dictionary, then a <code>#</code> will be produced. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запускать в работу любой переводчик, должны быть проведены все тесты словарей (в обиходе это называют и не должно быть никаких диагностических символов в результатах перевода. На практике, ошибки иногда остаются. In principle, before any translator is released, a full test of the dictionaries must be performed (colloquially called ''testvoc'' &mdash; from ''<u>test voc</u>abulary''), and no diagnostic symbols must be present in the translation. In practice, sometimes errors may remain.<br />
<br />
<br />
ОднОдна изOne of the reasons that Apertium avoids modelling unrestricted derivational processes is because they may not be equivalent in both languages. If they are not equivalent, and the transfer rules are not in place, then debugging and testing the translator is much more difficult. Also, if the morphological transducers are cyclic (allow unrestricted derivation) it is impossible to perform a vocabulary test.<br />
Одна из причин почему Apertium избегает моделирования неограниченных деривационных процессов в том, что могут быть не эквивалентными в обоих языках. Если они не эквивалентны, и правила переноса оказываются смещенными, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают неограниченное словообразование) невозможно выполнять тестирование лексики.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. Quality—you know what it is, yet you don’t know what it is. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше чем другие, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые шестеренки и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как понятие качества трудно для определения и измерения, мы можем попробовать ответить на этот интересный философский вопрос, отвечая на конкретные вопросы. Например:<br />
<br />
* How much of the two languages is covered by the dictionaries of the system in the desired domain ? <br />
* Is the morphological disambiguation performed well enough to choose both the right translations of words, and make the transfer rules effective ? <br />
* Are there inconsistencies in the dictionaries leading to diagnostic symbols ?<br />
* Is the system laid out in a way that makes it easy, or feasible to modify ?<br />
* Какая часть из двух языков представлена в словарях системы в нужном домене?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно так хорошо что обеспечивает правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словари, ведущие к диагностическим символам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Качество перевода====<br />
<br />
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть такими:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
* Получить примерный перевод:<br />
** Согласно человеку, работающему с переводами, это быстрее и эффективнее изменять проект перевода, предложенной системой или переводить с нуля?<br />
* Получить перевод для знакомства с содержанием текста:<br />
** Может ли система делать переводы, достаточно понятные и быстрые, для определенных случаев, которые бы не нуждались в редактировании человеком?<br />
<br />
===Оценка===<br />
<br />
====Размер словаря Vocabulary coverage====<br />
<br />
The coverage of a system is an indication of how much of the vocabulary it covers in a given corpus or domain. For an idea of what this means, we will try translating a sentence from Turkish to Bashkir with different levels of coverage:<br />
Размер системы - это показатель объема словаря от данного языкового корпуса или домена, с которым работает система. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные размеры словаря:<br />
{|class=wikitable<br />
! Предложение !! Размер <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Usually, coverage is given over a set of sentences, or corpus, instead of over a single sentence. In Apertium, the baseline coverage for releasing a new prototype translator is around 80%, or 2 unknown words in 10 for a given corpus. This is not enough to make revision practical, except in the case of closely-related languages. However, it is usually enough to make translations which are intelligible.<br />
Как правило, объем словаря можно оценить на примере набора предложений или корпусу, а не по одному предложению. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, или это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, кроме как в случае родственных языков. Однако, как правило, достаточно, чтобы сделать понятныее переводы.<br />
<br />
====Уровень ошибок Error rate====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
<br />
Taking the example above:<br />
<br />
{|class=wikitable<br />
! !! !! Changes !! {{sc|wer}}<br />
|-<br />
| '''Original''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Machine translation''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Revised''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
As with coverage, error rate evaluation is usually carried out on a corpus of sentences. So it gives you an indication of how many words you are likely to have to change in a given sentence.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
<br />
==Practice==<br />
<br />
===Consistency===<br />
<br />
====Testvoc====<br />
<br />
To get an idea of how to run a testvoc script, and what the output looks like, go to the <code>apertium-tt-ba</code> directory. Make sure the translator is compiled (e.g. type <code>make</code>) and then enter the <code>dev/</code> subdirectory. <br />
<br />
In order to perform the testvoc you need to run the <code>testvoc.sh</code> command:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
The whole test will take around 20&mdash;25 minutes to run, and will generate around 3-400M of output.<br />
<br />
===Evaluation===<br />
<br />
====Coverage====<br />
<br />
To calculate coverage, of your morphological analyser, the easiest way is the following, demonstrating again with the Tatar and Bashkir pair:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Giving a coverage of 93.4% for the Tatar morphological analyser for the example text.<br />
<br />
====Word error rate====<br />
<br />
Apertium has a tool for calculating the Word error rate between a reference translation and a machine translation. The tool is called <code>apertium-eval-translator</code> and can be found in the trunk of the [[Apertium SVN]] repository. The objective of this practical is to try it out on the system you have created. <br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
<br />
Here is an example for Bashkir to Tatar. Presuming the example text is in a file called <code>ba.txt</code>, run the command:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Check that the file has been created properly, then run:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Statistics about input files<br />
-------------------------------------------------------<br />
Number of words in reference: 311<br />
Number of words in test: 313<br />
Number of unknown words (marked with a star) in test: <br />
Percentage of unknown words: 0.00 %<br />
<br />
Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word error rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Statistics about the translation of unknown words<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
This gives information about the Word error rate, and some other statistics about the two files. The <code>-r</code> argument gives the reference translation, in this case <code>tt.txt</code> is the file containing the example text in Tatar. The <code>-t</code> gives the test text, e.g. the output of the machine translation system.<br />
<br />
Now make a copy of the file <code>ba-tt.txt</code> called <code>tt2.txt</code> and edit it so that it becomes an adequate translation, then rerun the above commands, substituting <code>tt.txt</code> with <code>tt2.txt</code> and compare the results.<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31376Курсы машинного перевода для языков России/Раздел 72012-01-14T12:29:50Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные аспекты создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы рассмотрим вопрос важности согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является In contrast to many other types of systems for natural language processing — such as morphological analysers and part-of-speech taggers, a machine translation system designed and developed with Apertium is a '''self-contained system'''. При введении разных вводных данных, результат обработки должен быть одним, предсказуемым и определеннымFor any input, it should have one, predictable, deterministic output.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в transfer lexicon, и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне lemmas, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом заключается принципиальное различие между различными статусами языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это можно показать на примере перевода предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: This is demonstrated if we try and translate the sentence in Turkish below with two distinct translators in Apertium:<br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и формировании. <br />
<br />
* Если это недостающая лемма из двуязычного словаря, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' не появляется в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но не существует леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Также если есть и лемма и тэг с частью речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет надпись <code>@</code>.<br />
* Если словарь языка перевода не содержит данную лемму, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но произошла ошибка соответствия в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется but there is a mismatch in the morphological tags between the output of transfer and the morphological dictionary, then a <code>#</code> will be produced. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запускать в работу любой переводчик, должны быть проведены все тесты словарей (в обиходе это называют и не должно быть никаких диагностических символов в результатах перевода. На практике, ошибки иногда остаются. In principle, before any translator is released, a full test of the dictionaries must be performed (colloquially called ''testvoc'' &mdash; from ''<u>test voc</u>abulary''), and no diagnostic symbols must be present in the translation. In practice, sometimes errors may remain.<br />
<br />
<br />
ОднОдна изOne of the reasons that Apertium avoids modelling unrestricted derivational processes is because they may not be equivalent in both languages. If they are not equivalent, and the transfer rules are not in place, then debugging and testing the translator is much more difficult. Also, if the morphological transducers are cyclic (allow unrestricted derivation) it is impossible to perform a vocabulary test.<br />
Одна из причин почему Apertium избегает моделирования неограниченных деривационных процессов в том, что могут быть не эквивалентными в обоих языках. Если они не эквивалентны, и правила переноса оказываются смещенными, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают неограниченное словообразование) невозможно выполнять тестирование лексики.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. Quality—you know what it is, yet you don’t know what it is. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше чем другие, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые шестеренки и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
Так как понятие качества трудно для определения и измерения, мы можем попробовать ответить на этот интересный философский вопрос, давая ответы на конкретные вопросы. Например:<br />
<br />
* How much of the two languages is covered by the dictionaries of the system in the desired domain ? <br />
* Is the morphological disambiguation performed well enough to choose both the right translations of words, and make the transfer rules effective ? <br />
* Are there inconsistencies in the dictionaries leading to diagnostic symbols ?<br />
* Is the system laid out in a way that makes it easy, or feasible to modify ?<br />
* Какая часть из двух языков представлена в словарях системы в нужном домене?<br />
* Выполняется ли разрешение морфологической неоднозначности достаточно так хорошо что обеспечивает правильный перевод слов и эффективное применение правил переноса?<br />
* Существуют ли противоречия в словари, ведущие к диагностическим символам?<br />
* Построена ли система таким образом, что ее легко и возможно изменить?<br />
<br />
====Translation quality====<br />
<br />
What does it mean to have "good quality" translations ? It really depends on what the system is going to be used for. And comes down to the following:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
<br />
===Evaluation===<br />
<br />
====Vocabulary coverage====<br />
<br />
The coverage of a system is an indication of how much of the vocabulary it covers in a given corpus or domain. For an idea of what this means, we will try translating a sentence from Turkish to Bashkir with different levels of coverage:<br />
<br />
{|class=wikitable<br />
! Sentence !! Coverage <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Usually, coverage is given over a set of sentences, or corpus, instead of over a single sentence. In Apertium, the baseline coverage for releasing a new prototype translator is around 80%, or 2 unknown words in 10 for a given corpus. This is not enough to make revision practical, except in the case of closely-related languages. However, it is usually enough to make translations which are intelligible.<br />
<br />
====Error rate====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
<br />
Taking the example above:<br />
<br />
{|class=wikitable<br />
! !! !! Changes !! {{sc|wer}}<br />
|-<br />
| '''Original''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Machine translation''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Revised''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
As with coverage, error rate evaluation is usually carried out on a corpus of sentences. So it gives you an indication of how many words you are likely to have to change in a given sentence.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
<br />
==Practice==<br />
<br />
===Consistency===<br />
<br />
====Testvoc====<br />
<br />
To get an idea of how to run a testvoc script, and what the output looks like, go to the <code>apertium-tt-ba</code> directory. Make sure the translator is compiled (e.g. type <code>make</code>) and then enter the <code>dev/</code> subdirectory. <br />
<br />
In order to perform the testvoc you need to run the <code>testvoc.sh</code> command:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
The whole test will take around 20&mdash;25 minutes to run, and will generate around 3-400M of output.<br />
<br />
===Evaluation===<br />
<br />
====Coverage====<br />
<br />
To calculate coverage, of your morphological analyser, the easiest way is the following, demonstrating again with the Tatar and Bashkir pair:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Giving a coverage of 93.4% for the Tatar morphological analyser for the example text.<br />
<br />
====Word error rate====<br />
<br />
Apertium has a tool for calculating the Word error rate between a reference translation and a machine translation. The tool is called <code>apertium-eval-translator</code> and can be found in the trunk of the [[Apertium SVN]] repository. The objective of this practical is to try it out on the system you have created. <br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
<br />
Here is an example for Bashkir to Tatar. Presuming the example text is in a file called <code>ba.txt</code>, run the command:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Check that the file has been created properly, then run:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Statistics about input files<br />
-------------------------------------------------------<br />
Number of words in reference: 311<br />
Number of words in test: 313<br />
Number of unknown words (marked with a star) in test: <br />
Percentage of unknown words: 0.00 %<br />
<br />
Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word error rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Statistics about the translation of unknown words<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
This gives information about the Word error rate, and some other statistics about the two files. The <code>-r</code> argument gives the reference translation, in this case <code>tt.txt</code> is the file containing the example text in Tatar. The <code>-t</code> gives the test text, e.g. the output of the machine translation system.<br />
<br />
Now make a copy of the file <code>ba-tt.txt</code> called <code>tt2.txt</code> and edit it so that it becomes an adequate translation, then rerun the above commands, substituting <code>tt.txt</code> with <code>tt2.txt</code> and compare the results.<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjohttps://wiki.apertium.org/w/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D1%8B_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB_7&diff=31375Курсы машинного перевода для языков России/Раздел 72012-01-14T12:09:42Z<p>Enjo: </p>
<hr />
<div>{{TOCD}}<br />
<br />
Теперь, когда мы рассмотрели основные аспекты создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы рассмотрим вопрос важности согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.<br />
<br />
==Теория==<br />
<br />
===Систематичность Consistency===<br />
<br />
====Автономная система====<br />
<br />
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является In contrast to many other types of systems for natural language processing — such as morphological analysers and part-of-speech taggers, a machine translation system designed and developed with Apertium is a '''self-contained system'''. При введении разных вводных данных, результат обработки должен быть одним, предсказуемым и определеннымFor any input, it should have one, predictable, deterministic output.<br />
<br />
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в transfer lexicon, и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне lemmas, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре. <br />
<br />
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом заключается принципиальное различие между различными статусами языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).<br />
<br />
====Противоречивость расхождение Inconsistency====<br />
<br />
Это можно показать на примере перевода предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: This is demonstrated if we try and translate the sentence in Turkish below with two distinct translators in Apertium:<br />
<br />
{|class=wikitable<br />
! Original<br/><small>(Turkish)</small> !! Trunk<br/><small>(Turkish → Kyrgyz)</small> !! Incubator <br/><small>(Turkish → Chuvash)</small><br />
|-<br />
| 22 yaşındaki Çavuş Sandra Radovanoviç, Sırp Ordusu'nun Super Galep G4'ünü uçuran ilk kadın oldu. || 22 жашындагы Сержант Сандра Радованович, Серб Аскеринин *Super Galep Г4үндү учкан биринчи аял болду. || 22 @yaş @Çavuş @Sandra @Radovanoviç, @Sırp Ordusu *Super Galep *G4'#чап @uç #пӗрремӗш #арӑм #пул. <br />
<br />
|-<br />
| Yaşıtları daha araba kullanmayı yeni öğrenirken, Radovanoviç bir savaş uçağına 4.000m irtifada, 700km/sa hızla manevra yaptırıyor. || Теңтуштары дагы араба колдонууну эми үйрөнөт, Радованович бир согуш учагына *4.000m бийиктикте, *700km/*sa ылдамдык менен манёвр кылдырат. || #Тантӑш #ӗнтӗ #ӑйӑ @kullan @yeni #вӗрен @0, @Radovanoviç пӗр #вӑрҫӑ @uçak #4.000 #ҫӳл, *700km/*sa #хӑвӑртлӑх @manevra @yap. <br />
<br />
|-<br />
| Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. || Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. || @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç. <br />
|-<br />
| Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. || Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. || #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku. <br />
|-<br />
| Üç yıl önce, hayatında ilk defa bir uçağa bindi. || Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. || #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.<br />
|-<br />
|}<br />
<br />
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и формировании. <br />
<br />
* Если это недостающая лемма из двуязычного словаря, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' не появляется в двуязычном словаре.<br />
* Если лемма присутствует в двуязычном словаре, но не существует леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.<br />
* Также если есть и лемма и тэг с частью речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет надпись <code>@</code>.<br />
* Если словарь языка перевода не содержит данную лемму, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code><br />
* Если лемма существует в морфологическом словаре языка перевода, но произошла ошибка соответствия в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется but there is a mismatch in the morphological tags between the output of transfer and the morphological dictionary, then a <code>#</code> will be produced. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.<br />
<br />
Прежде чем запускать в работу любой переводчик, должны быть проведены все тесты словарей (в обиходе это называют и не должно быть никаких диагностических символов в результатах перевода. На практике, ошибки иногда остаются. In principle, before any translator is released, a full test of the dictionaries must be performed (colloquially called ''testvoc'' &mdash; from ''<u>test voc</u>abulary''), and no diagnostic symbols must be present in the translation. In practice, sometimes errors may remain.<br />
<br />
<br />
ОднОдна изOne of the reasons that Apertium avoids modelling unrestricted derivational processes is because they may not be equivalent in both languages. If they are not equivalent, and the transfer rules are not in place, then debugging and testing the translator is much more difficult. Also, if the morphological transducers are cyclic (allow unrestricted derivation) it is impossible to perform a vocabulary test.<br />
Одна из причин почему Apertium избегает моделирования неограниченных деривационных процессов в том, что могут быть не эквивалентными в обоих языках. Если они не эквивалентны, и правила переноса оказываются смещенными, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают неограниченное словообразование) невозможно выполнять тестирование лексики.<br />
<br />
===Качество===<br />
<br />
<цитата><br />
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. Quality—you know what it is, yet you don’t know what it is. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше чем другие, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые шестеренки и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом<br />
</цитата><br />
<br />
====Качество системы====<br />
<br />
While quality might be a difficult thing to define or quantify, we can get around this interesting philosophical question by assessing it in terms of questions. For example:<br />
<br />
* How much of the two languages is covered by the dictionaries of the system in the desired domain ? <br />
* Is the morphological disambiguation performed well enough to choose both the right translations of words, and make the transfer rules effective ? <br />
* Are there inconsistencies in the dictionaries leading to diagnostic symbols ?<br />
* Is the system laid out in a way that makes it easy, or feasible to modify ?<br />
<br />
====Translation quality====<br />
<br />
What does it mean to have "good quality" translations ? It really depends on what the system is going to be used for. And comes down to the following:<br />
<br />
* For producing draft translations: <br />
** According to the person performing the linguistic revision, is it quicker, and more efficient to post edit the draft translations produced by the system than to translate from scratch ?<br />
* For producing gisting translations: <br />
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?<br />
<br />
===Evaluation===<br />
<br />
====Vocabulary coverage====<br />
<br />
The coverage of a system is an indication of how much of the vocabulary it covers in a given corpus or domain. For an idea of what this means, we will try translating a sentence from Turkish to Bashkir with different levels of coverage:<br />
<br />
{|class=wikitable<br />
! Sentence !! Coverage <br />
|-<br />
| Ahmet çabukça eski büyük {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski büyük {{hi|green|бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 10%<br />
|-<br />
| Ahmet çabukça eski {{hi|green|büyük}} {{hi|green|bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça eski {{hi|green|ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 20%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına Ana'dan saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına Ana'dan saklanıyor. || 30%<br />
|-<br />
| Ahmet çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>Ahmet çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 40%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan}} saklanıyor.<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан}} saklanıyor. || 50%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, arkasına {{hi|green|Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, arkasına {{hi|green|Ананан йәшеренә}}. || 60%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca koşuyor, {{hi|green|arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca koşuyor, {{hi|green|артына Ананан йәшеренә}}. || 70%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir}} ağaca {{hi|green|koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер}} ağaca {{hi|green|сабырға, артына Ананан йәшеренә}}. || 80%<br />
|-<br />
| {{hi|green|Ahmet}} çabukça {{hi|green|eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт}} çabukça {{hi|green|иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 90%<br />
|-<br />
| | {{hi|green|Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.}}<br/>{{hi|green|Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә}}. || 100%<br />
|-<br />
<!--El sector de la agricultura en Kosovo y Macedonia, recibirá un impulso.--><br />
|}<br />
<br />
Usually, coverage is given over a set of sentences, or corpus, instead of over a single sentence. In Apertium, the baseline coverage for releasing a new prototype translator is around 80%, or 2 unknown words in 10 for a given corpus. This is not enough to make revision practical, except in the case of closely-related languages. However, it is usually enough to make translations which are intelligible.<br />
<br />
====Error rate====<br />
<br />
While the coverage gives you an idea of how many words you will have to change in the ''best case'', that is, that the rest of the translation is correct. A more accurate indication of how many words you will have to change when using the translator is given by post-edition word error rate (often abbreviated as {{sc|wer}}). This is given as a percentage of changes (insertions, deletions, substitutions) between a machine translated sentence, and a sentence which has been revised by a human translator.<br />
<br />
Taking the example above:<br />
<br />
{|class=wikitable<br />
! !! !! Changes !! {{sc|wer}}<br />
|-<br />
| '''Original''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; || <br />
|-<br />
| '''Machine translation''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; || <br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|green|insert}}</span> || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа йөгөрә, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 2/10 ||<br />
|-<br />
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||<br />
|-<br />
| '''Revised''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%<br />
|-<br />
|}<br />
<br />
As with coverage, error rate evaluation is usually carried out on a corpus of sentences. So it gives you an indication of how many words you are likely to have to change in a given sentence.<br />
<br />
When calculated over an appropriate corpus of the target translation domain, the combination of word error rate and coverage can give an idea of the usefulness of a machine translation system for a specific task. Of course, to determine if a system is useful for translators, a more thorough and case-specific evaluation needs to be made.<br />
<br />
==Practice==<br />
<br />
===Consistency===<br />
<br />
====Testvoc====<br />
<br />
To get an idea of how to run a testvoc script, and what the output looks like, go to the <code>apertium-tt-ba</code> directory. Make sure the translator is compiled (e.g. type <code>make</code>) and then enter the <code>dev/</code> subdirectory. <br />
<br />
In order to perform the testvoc you need to run the <code>testvoc.sh</code> command:<br />
<br />
<pre><br />
$ sh testvoc.sh <br />
<br />
dl gen 9 13:54:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 117457 117457 0 0 100<br />
n 74148 74148 0 0 100<br />
num 7564 7564 0 0 100<br />
cnjcoo 2487 2487 0 0 100<br />
prn 954 954 0 0 100<br />
adj 361 361 0 0 100<br />
np 62 62 0 0 100<br />
adv 33 33 0 0 100<br />
post 11 11 0 0 100<br />
postadv 4 4 0 0 100<br />
det 3 3 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
dl gen 9 14:07:22 GMT 2012<br />
===============================================<br />
POS Total Clean With @ With # Clean %<br />
v 188860 188860 0 0 100<br />
n 105840 105588 252 0 99.76<br />
num 7560 7560 0 0 100<br />
cnjcoo 1844 1844 0 0 100<br />
prn 1068 1068 0 0 100<br />
adj 306 306 0 0 100<br />
np 96 96 0 0 100<br />
adv 41 41 0 0 100<br />
post 10 10 0 0 100<br />
det 5 5 0 0 100<br />
postadv 4 4 0 0 100<br />
guio 2 2 0 0 100<br />
cm 1 1 0 0 100<br />
ij 0 0 0 0 100<br />
===============================================<br />
<br />
</pre><br />
<br />
The whole test will take around 20&mdash;25 minutes to run, and will generate around 3-400M of output.<br />
<br />
===Evaluation===<br />
<br />
====Coverage====<br />
<br />
To calculate coverage, of your morphological analyser, the easiest way is the following, demonstrating again with the Tatar and Bashkir pair:<br />
<br />
<pre><br />
<br />
$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst | apertium-retxt | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt<br />
<br />
$ cat tt-cov | wc -l<br />
384<br />
<br />
$ cat tt-cov | grep -v '\*' | wc -l<br />
359<br />
<br />
$ calc 359/384<br />
~0.93489583333333333333<br />
</pre><br />
<br />
Giving a coverage of 93.4% for the Tatar morphological analyser for the example text.<br />
<br />
====Word error rate====<br />
<br />
Apertium has a tool for calculating the Word error rate between a reference translation and a machine translation. The tool is called <code>apertium-eval-translator</code> and can be found in the trunk of the [[Apertium SVN]] repository. The objective of this practical is to try it out on the system you have created. <br />
<br />
You will need two reference translations. The first will be the "original" text in the target language, this was created without post-editting. The second will be a post-editted version of the machine translation text. When you are creating the post-editted version, take care to make only the minimal changes required to produce an adequate translation.<br />
<br />
Here is an example for Bashkir to Tatar. Presuming the example text is in a file called <code>ba.txt</code>, run the command:<br />
<br />
<pre><br />
$ cat ba.txt | apertium -d . ba-tt > ba-tt.txt<br />
</pre><br />
<br />
Check that the file has been created properly, then run:<br />
<br />
<pre><br />
$ apertium-eval-translator -r tt.txt -t ba-tt.txt <br />
Test file: 'ba-tt.txt'<br />
Reference file 'tt.txt'<br />
<br />
Statistics about input files<br />
-------------------------------------------------------<br />
Number of words in reference: 311<br />
Number of words in test: 313<br />
Number of unknown words (marked with a star) in test: <br />
Percentage of unknown words: 0.00 %<br />
<br />
Results when removing unknown-word marks (stars)<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word error rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Results when unknown-word marks (stars) are not removed<br />
-------------------------------------------------------<br />
Edit distance: 42<br />
Word Error Rate (WER): 13.42 %<br />
Number of position-independent word errors: 42<br />
Position-independent word error rate (PER): 13.42 %<br />
<br />
Statistics about the translation of unknown words<br />
-------------------------------------------------------<br />
Number of unknown words which were free rides: 0<br />
Percentage of unknown words that were free rides: 0%<br />
</pre><br />
<br />
This gives information about the Word error rate, and some other statistics about the two files. The <code>-r</code> argument gives the reference translation, in this case <code>tt.txt</code> is the file containing the example text in Tatar. The <code>-t</code> gives the test text, e.g. the output of the machine translation system.<br />
<br />
Now make a copy of the file <code>ba-tt.txt</code> called <code>tt2.txt</code> and edit it so that it becomes an adequate translation, then rerun the above commands, substituting <code>tt.txt</code> with <code>tt2.txt</code> and compare the results.<br />
<br />
<br />
[[Category:Машинный перевод для языков России|Session 7]]</div>Enjo