Difference between revisions of "Курсы машинного перевода для языков России/Раздел 7"

From Apertium
Jump to navigation Jump to search
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{TOCD}}
{{TOCD}}


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


==Теория==
==Теория==
Line 9: Line 9:
====Автономная система====
====Автономная система====


В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией 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.
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является автономной, самодостаточной системой. При введении разных вводных данных, итоговый результат должен быть одним, предсказуемым и определенным.


Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в transfer lexicon, и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне lemmas, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре.
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в морфемном переносном лексиконе и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне лемм, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре.


Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом заключается принципиальное различие между различными статусами языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (<code>@</code>, <code>#</code>) на выходе и перевод выглядит "непричесанным". В этом разница в статусе разных языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом <code>trunk</code> (это обработанные пары, которые прошли контроль качества &mdash; обычно не имеют диагностических предупреждающих знаков), и пару со статусом <code>nursery</code> (для пар, которые прошли только начальную обработку и ожидают проверку качества).


====Противоречивость расхождение Inconsistency====
====Противоречивость расхождение Inconsistency====


Это можно показать на примере перевода предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium: This is demonstrated if we try and translate the sentence in Turkish below with two distinct translators in Apertium:
Это видно на примере перевода нижеприведенного предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium:


{|class=wikitable
{|class=wikitable
Line 36: Line 36:
|}
|}


Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и формировании.
Диагностические символы <code>@</code> и <code>#</code> указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и форматировании.


* Если это недостающая лемма из двуязычного словаря, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' не появляется в двуязычном словаре.
* Если это отсутствующая лемма в двуязычном словаре, то появится <code>@</code>, а за ним недостающая лемма. Например: <code>Belgrad</code> → <code>@Belgrad</code>, слово ''Belgrad'' отсутствует в двуязычном словаре.
* Если лемма присутствует в двуязычном словаре, но не существует леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.
* Если лемма присутствует в двуязычном словаре, но нет леммы с тэгом части речи, так же появится <code>@</code>. Например: <code>uç</code> → <code>@uç</code>, слово ''uç'' встречается только с тэгом {{tag|n}}, но маркировщик выбирает {{tag|v}}.
* Также если есть и лемма и тэг с частью речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет надпись <code>@</code>.
* Если есть и лемма и тэг части речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет появляться надпись <code>@</code>.
* Если словарь языка перевода не содержит данную лемму, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code>
* Если в словаре языка перевода отсутствует данная лемма, тогда появится <code>#</code>. Например: <code>kadın</code> → <code>арӑм</code> → <code>#арӑм</code>
* Если лемма существует в морфологическом словаре языка перевода, но произошла ошибка соответствия в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется 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>.
* Если лемма существует в морфологическом словаре языка перевода, но есть несоответствие в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется <code>#</code>. Например: <code>ol</code> → <code>пул</code>. Словарь языка перевода не содержит форму {{tag|past><p3><sg}} для леммы <code>пул</code>.


Прежде чем запускать в работу любой переводчик, должны быть проведены все тесты словарей (в обиходе это называют и не должно быть никаких диагностических символов в результатах перевода. На практике, ошибки иногда остаются. 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.
Прежде чем запустить в работу какой-либо переводчик, должны быть проведено полное тестирование словарей (в обиходе это называют "testvoc" &mdash; from ''<u>test voc</u>abulary''), и не должно быть никаких предупреждающих символов в результатах перевода. На практике, ошибки иногда остаются.


Одна из причин почему Apertium избегает моделирования вольных деривационных процессов состоит в том, что они могут не быть эквивалентными для обоих языков. Если процессы не эквивалентны, правила переноса оказываются не на своем месте, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают вольное словообразование) невозможно выполнять тестирование слов.

ОднОдна из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.
Одна из причин почему Apertium избегает моделирования неограниченных деривационных процессов в том, что могут быть не эквивалентными в обоих языках. Если они не эквивалентны, и правила переноса оказываются смещенными, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают неограниченное словообразование) невозможно выполнять тестирование лексики.


===Качество===
===Качество===


<blockquote>
<цитата>
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. Quality—you know what it is, yet you don’t know what it is. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше чем другие, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые шестеренки и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом
''Качество -вы знаете что это такое, но в тоже время мы не знаете что это. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от самих вещей, тогда вы теряете суть. Здесь не о чем говорить. '''Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует.''' На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше других, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые извилины и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? '' &mdash; Дзен и искусство ухода за мотоциклом
</blockquote>
</цитата>


====Качество системы====
====Качество системы====


Так как понятие качества трудно для определения и измерения, мы можем попробовать ответить на этот интересный философский вопрос, отвечая на конкретные вопросы. Например:
Так как качество трудно определить и измерить, мы можем попробовать ответить на этот интересный философский вопрос через ответы на конкретные вопросы. Например:


* Насколько полно два языка представлена в словарях системы нужной области?
* How much of the two languages is covered by the dictionaries of the system in the desired domain ?
* Выполняется ли разрешение морфологической неоднозначности достаточно хорошо чтобы гарантировать правильный перевод слов и эффективное применение правил переноса?
* Is the morphological disambiguation performed well enough to choose both the right translations of words, and make the transfer rules effective ?
* Существуют ли противоречия в словарях, ведущие к диагностическим предупреждающим знакам?
* Are there inconsistencies in the dictionaries leading to diagnostic symbols ?
* Is the system laid out in a way that makes it easy, or feasible to modify ?
* Какая часть из двух языков представлена в словарях системы в нужном домене?
* Выполняется ли разрешение морфологической неоднозначности достаточно так хорошо что обеспечивает правильный перевод слов и эффективное применение правил переноса?
* Существуют ли противоречия в словари, ведущие к диагностическим символам?
* Построена ли система таким образом, что ее легко и возможно изменить?
* Построена ли система таким образом, что ее легко и возможно изменить?


====Качество перевода====
====Качество перевода====


Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть такими:
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть разными:


* For producing draft translations:
** 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 ?
* For producing gisting translations:
** Does the system produce translations which are sufficiently intelligible to make human translation unnecessary in some cases for the particular task at hand ?
* Получить примерный перевод:
* Получить примерный перевод:
** Согласно человеку, работающему с переводами, это быстрее и эффективнее изменять проект перевода, предложенной системой или переводить с нуля?
** Согласно переводчику, быстрее и эффективнее изменять примерные варианты переводов, предложенных системой или переводить с нуля?
* Получить перевод для знакомства с содержанием текста:
* Получить перевод для ознакомления с содержанием текста:
** Может ли система делать переводы, достаточно понятные и быстрые, для определенных случаев, которые бы не нуждались в редактировании человеком?
** Может ли система в определенных случаях делать переводы, достаточно понятные и быстрые, которые бы не нуждались в редактировании человеком?


===Оценка===
===Оценка===


====Размер словаря Vocabulary coverage====
====Объем словаря====


Объем системы показывает какая часть словаря данного языкового корпуса или области представлена в системе. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные объемы словаря:
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:
Размер системы - это показатель объема словаря от данного языкового корпуса или домена, с которым работает система. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные размеры словаря:
{|class=wikitable
{|class=wikitable
! Предложение !! Размер
! Предложение !! Размер
Line 114: Line 103:
|}
|}


Как правило, объем словаря можно оценить, принимая во внимание пул предложений или корпус, а не одно предложение. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, за исключением пары родственных языков. Однако, как правило, достаточно, чтобы сделать понятнее переводы.
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.
Как правило, объем словаря можно оценить на примере набора предложений или корпусу, а не по одному предложению. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, или это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, кроме как в случае родственных языков. Однако, как правило, достаточно, чтобы сделать понятныее переводы.


====Количество и частота ошибок====
====Уровень ошибок Error rate====


Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем варианте перевода, при том, что остальная часть перевода является правильной. Но более точный показатель того, сколько слов вам придется заменить после использования переводчика можно получить при помощи подсчета ошибок по итогам перевода (сокращенно {{SC | WER}}). Этот показатель отражает все изменения (вставки, удаления, замены) и выражается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.
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.


Снова возьмем вышеприведенный пример:
Taking the example above:


{|class=wikitable
{|class=wikitable
! !! !! Changes !! {{sc|wer}}
! !! !! Изменения !! {{sc|wer}}
|-
|-
| '''Original''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; ||
| '''Оригинал''' || Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor. || &mdash; ||
|-
|-
| '''Machine translation''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; ||
| '''Машинный перевод''' || Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә. || &mdash; ||
|-
|-
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|red|substitute}}</span>|| Әхмәт тиҙ иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, артына Гөлнаранан йәшеренә. || 1/10 ||
Line 136: Line 124:
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||
|&nbsp;&nbsp;&nbsp;<SPAN STYLE="font-variant:small-caps">{{hi|blue|delete}}</span> || Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. || 0/10 ||
|-
|-
| '''Revised''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%
| '''Отредактированный''' || Әхмәт тиҙ {{hi|green|генә}} иҫке ҙур бер ағасҡа {{hi|red|йөгөрә}}, {{hi|green|уның}} артына Гөлнаранан йәшеренә. || 3/10 || 30%
|-
|-
|}
|}


Как и в случае оценки объема словаря, подсчет количества ошибок, как правило, проводится на пуле предложений. Он показывает сколько слов вам, вероятно, придется изменить в данном предложении.
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.


После подсчета количества ошибок и объема словаря на примере корпуса определенной области перевода, можно получить представление о пользе системы машинного перевода для решения конкретной задачи. Конечно, чтобы определить, насколько система полезна для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.
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.


==Практика==
==Practice==


===Consistency===
===Системность Consistency===


====Testvoc====
====Testvoc Тестирование словаря====


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.
Чтобы увидеть как управлять сценарием testvoc и как выглядит результат, перейдите к папке <code>apertium-tt-ba</code>. Убедитесь, что переводчик сформирован (например, наберите <code>make</code>), а затем введите подпапку <code>dev/</code>.


In order to perform the testvoc you need to run the <code>testvoc.sh</code> command:
Чтобы выполнить testvoc вам необходимо ввести команду <code>testvoc.sh</code>:


<pre>
<pre>
Line 197: Line 185:
</pre>
</pre>


The whole test will take around 20&mdash;25 minutes to run, and will generate around 3-400M of output.
Весь тест займет около 20&mdash;25 минут, и сформирует результат 3-400M.


===Evaluation===
===Оценка===


====Coverage====
====Охват====


Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:
To calculate coverage, of your morphological analyser, the easiest way is the following, demonstrating again with the Tatar and Bashkir pair:


<pre>
<pre>
Line 219: Line 207:
</pre>
</pre>


Охват 93.4% морфологическим анализатором татарского языка для данного примера.
Giving a coverage of 93.4% for the Tatar morphological analyser for the example text.


====Количество ошибочных слов====
====Word error rate====


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.
В системе Apertium есть инструмент для подсчета соотношения ошибочных слов между reference translation и машинным переводом. Инструмент называется <code>apertium-eval-translator</code> и его можно найти в базе хранения [[Apertium SVN]]. Цель данной практической сессии - испытать его на системе, которую вы создали.


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.


Вам понадобится два образца перевода. Первым будет "оригинальный" текст на языке перевода, который был создан без дальнейшего редактирования. Вторым будет отредактированный вариант текста машинного перевода. При редактировании текста, постарайтесь внести только минимальные изменения, необходимые для получения адекватного перевода.
Here is an example for Bashkir to Tatar. Presuming the example text is in a file called <code>ba.txt</code>, run the command:


Вот пример с башкирского на татарский. Образец текста находится в файле <code>ba.txt</code>, введите команду:


<pre>
<pre>
Line 233: Line 223:
</pre>
</pre>


Проверьте что файл был создан правильно затем введите:
Check that the file has been created properly, then run:


<pre>
<pre>
Line 240: Line 230:
Reference file 'tt.txt'
Reference file 'tt.txt'


Статистика о введенных файлах
Statistics about input files
-------------------------------------------------------
-------------------------------------------------------
Number of words in reference: 311
Количество слов in reference: 311
Количество слов в тесте: 313
Number of words in test: 313
Количество неизвестных слов (отмечены звездочкой) в тесте:
Number of unknown words (marked with a star) in test:
Процент неизвестных слов: 0.00 %
Percentage of unknown words: 0.00 %


Результаты после удаления пометок о неизвестных словах (звездочек)
Results when removing unknown-word marks (stars)
-------------------------------------------------------
-------------------------------------------------------
Edit distance: 42
Edit distance: 42
Word error rate (WER): 13.42 %
Процент ошибочных слов (WER): 13.42 %
Количество ошибочных слов: 42
Number of position-independent word errors: 42
Процент ошибочных слов: 13.42 %
Position-independent word error rate (PER): 13.42 %


Результаты когда указатели на незнакомые слова не удалены
Results when unknown-word marks (stars) are not removed
-------------------------------------------------------
-------------------------------------------------------
Edit distance: 42
Edit distance: 42
Word Error Rate (WER): 13.42 %
Процент ошибочных слов (WER): 13.42 %
Количество ошибочных слов, независимо от позиции: 42
Number of position-independent word errors: 42
Процент ошибочных слов, независимо от позиции (PER): 13.42 %
Position-independent word error rate (PER): 13.42 %


Статистика по переводу незнакомых слов
Statistics about the translation of unknown words
-------------------------------------------------------
-------------------------------------------------------
Количество незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0
Number of unknown words which were free rides: 0
Процент незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0%
Percentage of unknown words that were free rides: 0%
</pre>
</pre>


Дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .<code>-r</code> предлагает образец перевода, в данном случае <code> tt.txt </ код> это файл, содержащий пример текста на татарском языке. <code>-t</code> выдает текст, например, результат работы системы машинного перевода.
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.

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.


Теперь скопируйте файл <code>ba-tt.txt</code> назовите <code>tt2.txt</code> и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив <code>tt.txt</code> на <code>tt2.txt</code> и сравните результаты.


[[Category:Машинный перевод для языков России|Session 7]]
[[Category:Машинный перевод для языков России|Session 7]]

Latest revision as of 12:00, 31 January 2012

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

Теория[edit]

Систематичность Consistency[edit]

Автономная система[edit]

В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является автономной, самодостаточной системой. При введении разных вводных данных, итоговый результат должен быть одним, предсказуемым и определенным.

Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в морфемном переносном лексиконе и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне лемм, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре.

Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (@, #) на выходе и перевод выглядит "непричесанным". В этом разница в статусе разных языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом trunk (это обработанные пары, которые прошли контроль качества — обычно не имеют диагностических предупреждающих знаков), и пару со статусом nursery (для пар, которые прошли только начальную обработку и ожидают проверку качества).

Противоречивость расхождение Inconsistency[edit]

Это видно на примере перевода нижеприведенного предложения на турецкий язык при помощи двух отдельных переводчиков в Apertium:

Original
(Turkish)
Trunk
(Turkish → Kyrgyz)
Incubator
(Turkish → Chuvash)
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ç #пӗрремӗш #арӑм #пул.
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.
Radovanoviç, Sırbistan'ın ilk kadın pilotu olarak tarihe geçti. Радованович, Сербиянын биринчи аял пилотту боло тарыхка өттү. @Radovanoviç, @Sırbistan #пӗрремӗш #арӑм #лётчик #пул #хисеп @geç.
Pilot, Belgrad'daki harp okulu Havacılık Okulu'nda son sınıf öğrencisi olarak okuyor. Пилот, Белграддагы согуш мектеби Абаачылык Мектеби'*nda акыркы класс окуучусу боло окуйт. #Лётчик, @Belgrad @harp шкулӗ #Авиаци Шкулӗ'*nda @son #курс #студент #пул @oku.
Üç yıl önce, hayatında ilk defa bir uçağa bindi. Үч жыл мурда, жашоосунда биринчи жолу бир учакка минди. #Виҫ #ҫул #ӗлӗк, #чӗрлӗх #пӗрремӗш #рас пӗр @uçak @bin.

Диагностические символы @ и # указывают на ошибки в лексическом переносе и соответственно при морфологическом переносе и форматировании.

  • Если это отсутствующая лемма в двуязычном словаре, то появится @, а за ним недостающая лемма. Например: Belgrad@Belgrad, слово Belgrad отсутствует в двуязычном словаре.
  • Если лемма присутствует в двуязычном словаре, но нет леммы с тэгом части речи, так же появится @. Например: @uç, слово встречается только с тэгом <n>, но маркировщик выбирает <v>.
  • Если есть и лемма и тэг части речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет появляться надпись @.
  • Если в словаре языка перевода отсутствует данная лемма, тогда появится #. Например: kadınарӑм#арӑм
  • Если лемма существует в морфологическом словаре языка перевода, но есть несоответствие в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется #. Например: olпул. Словарь языка перевода не содержит форму <past><p3><sg> для леммы пул.

Прежде чем запустить в работу какой-либо переводчик, должны быть проведено полное тестирование словарей (в обиходе это называют "testvoc" — from test vocabulary), и не должно быть никаких предупреждающих символов в результатах перевода. На практике, ошибки иногда остаются.

Одна из причин почему Apertium избегает моделирования вольных деривационных процессов состоит в том, что они могут не быть эквивалентными для обоих языков. Если процессы не эквивалентны, правила переноса оказываются не на своем месте, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают вольное словообразование) невозможно выполнять тестирование слов.

Качество[edit]

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

Качество системы[edit]

Так как качество трудно определить и измерить, мы можем попробовать ответить на этот интересный философский вопрос через ответы на конкретные вопросы. Например:

  • Насколько полно два языка представлена в словарях системы нужной области?
  • Выполняется ли разрешение морфологической неоднозначности достаточно хорошо чтобы гарантировать правильный перевод слов и эффективное применение правил переноса?
  • Существуют ли противоречия в словарях, ведущие к диагностическим предупреждающим знакам?
  • Построена ли система таким образом, что ее легко и возможно изменить?

Качество перевода[edit]

Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть разными:

  • Получить примерный перевод:
    • Согласно переводчику, быстрее и эффективнее изменять примерные варианты переводов, предложенных системой или переводить с нуля?
  • Получить перевод для ознакомления с содержанием текста:
    • Может ли система в определенных случаях делать переводы, достаточно понятные и быстрые, которые бы не нуждались в редактировании человеком?

Оценка[edit]

Объем словаря[edit]

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

Предложение Размер
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Ahmet çabukça eski büyük бер ağaca koşuyor, arkasına Ana'dan saklanıyor.
10%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Ahmet çabukça eski ҙур бер ağaca koşuyor, arkasına Ana'dan saklanıyor.
20%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Ahmet çabukça иҫке ҙур бер ağaca koşuyor, arkasına Ana'dan saklanıyor.
30%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Ahmet çabukça иҫке ҙур бер ağaca koşuyor, arkasına Ананан saklanıyor.
40%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Әхмәт çabukça иҫке ҙур бер ağaca koşuyor, arkasına Ананан saklanıyor.
50%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Әхмәт çabukça иҫке ҙур бер ağaca koşuyor, arkasına Ананан йәшеренә.
60%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Әхмәт çabukça иҫке ҙур бер ağaca koşuyor, артына Ананан йәшеренә.
70%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Әхмәт çabukça иҫке ҙур бер ağaca сабырға, артына Ананан йәшеренә.
80%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Әхмәт çabukça иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә.
90%
Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Әхмәт тиҙ иҫке ҙур бер ағасҡа сабырға, артына Ананан йәшеренә.
100%

Как правило, объем словаря можно оценить, принимая во внимание пул предложений или корпус, а не одно предложение. В Apertium, базовый объем для выпуска нового прототипа переводчика составляет около 80%, это 2 неизвестных слов из 10 для данного корпуса. Этого не достаточно для полноценного перевода, за исключением пары родственных языков. Однако, как правило, достаточно, чтобы сделать понятнее переводы.

Количество и частота ошибок[edit]

Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем варианте перевода, при том, что остальная часть перевода является правильной. Но более точный показатель того, сколько слов вам придется заменить после использования переводчика можно получить при помощи подсчета ошибок по итогам перевода (сокращенно Template:SC). Этот показатель отражает все изменения (вставки, удаления, замены) и выражается как процентное соотношение между машинным переводом и переводом, скорректированным человеком.

Снова возьмем вышеприведенный пример:

Изменения wer
Оригинал Ahmet çabukça eski büyük bir ağaca koşuyor, arkasına Ana'dan saklanıyor.
Машинный перевод Әхмәт тиҙ иҫке ҙур бер ағасҡа саба, артына Гөлнаранан йәшеренә.
   substitute Әхмәт тиҙ иҫке ҙур бер ағасҡа йөгөрә, артына Гөлнаранан йәшеренә. 1/10
   insert Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. 2/10
   delete Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. 0/10
Отредактированный Әхмәт тиҙ генә иҫке ҙур бер ағасҡа йөгөрә, уның артына Гөлнаранан йәшеренә. 3/10 30%

Как и в случае оценки объема словаря, подсчет количества ошибок, как правило, проводится на пуле предложений. Он показывает сколько слов вам, вероятно, придется изменить в данном предложении.

После подсчета количества ошибок и объема словаря на примере корпуса определенной области перевода, можно получить представление о пользе системы машинного перевода для решения конкретной задачи. Конечно, чтобы определить, насколько система полезна для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.

Практика[edit]

Системность Consistency[edit]

Testvoc Тестирование словаря[edit]

Чтобы увидеть как управлять сценарием testvoc и как выглядит результат, перейдите к папке apertium-tt-ba. Убедитесь, что переводчик сформирован (например, наберите make), а затем введите подпапку dev/.

Чтобы выполнить testvoc вам необходимо ввести команду testvoc.sh:

$ sh testvoc.sh 

dl gen  9 13:54:22 GMT 2012
===============================================
POS	Total	Clean	With @	With #	Clean %
v	117457	 117457	0	0	100
n	74148	 74148	0	0	100
num	7564	 7564	0	0	100
cnjcoo	2487	 2487	0	0	100
prn	954	 954	0	0	100
adj	361	 361	0	0	100
np	62	 62	0	0	100
adv	33	 33	0	0	100
post	11	 11	0	0	100
postadv	4	 4	0	0	100
det	3	 3	0	0	100
guio	2	 2	0	0	100
cm	1	 1	0	0	100
ij	0	 0	0	0	100
===============================================

dl gen  9 14:07:22 GMT 2012
===============================================
POS	Total	Clean	With @	With #	Clean %
v	188860	 188860	0	0	100
n	105840	 105588	252	0	99.76
num	7560	 7560	0	0	100
cnjcoo	1844	 1844	0	0	100
prn	1068	 1068	0	0	100
adj	306	 306	0	0	100
np	96	 96	0	0	100
adv	41	 41	0	0	100
post	10	 10	0	0	100
det	5	 5	0	0	100
postadv	4	 4	0	0	100
guio	2	 2	0	0	100
cm	1	 1	0	0	100
ij	0	 0	0	0	100
===============================================

Весь тест займет около 20—25 минут, и сформирует результат 3-400M.

Оценка[edit]

Охват[edit]

Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:


$ cat tt.txt | apertium-destxt | hfst-proc tt-ba.automorf.hfst  | apertium-retxt  | sed 's/\$\W*\^/$\n^/g' > tt-cov.txt

$ cat tt-cov | wc -l
384

$ cat tt-cov | grep -v '\*' | wc -l
359

$ calc 359/384
	~0.93489583333333333333

Охват 93.4% морфологическим анализатором татарского языка для данного примера.

Количество ошибочных слов[edit]

В системе Apertium есть инструмент для подсчета соотношения ошибочных слов между reference translation и машинным переводом. Инструмент называется apertium-eval-translator и его можно найти в базе хранения Apertium SVN. Цель данной практической сессии - испытать его на системе, которую вы создали.


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


Вот пример с башкирского на татарский. Образец текста находится в файле ba.txt, введите команду:

$ cat ba.txt  | apertium -d . ba-tt > ba-tt.txt

Проверьте что файл был создан правильно затем введите:

$ apertium-eval-translator -r tt.txt -t ba-tt.txt 
Test file: 'ba-tt.txt'
Reference file 'tt.txt'

Статистика о введенных файлах
-------------------------------------------------------
Количество слов in reference: 311
Количество слов в тесте: 313
Количество неизвестных слов (отмечены звездочкой) в тесте: 
Процент неизвестных слов: 0.00 %

Результаты после удаления пометок о неизвестных словах (звездочек)
-------------------------------------------------------
Edit distance: 42
Процент ошибочных слов (WER): 13.42 %
Количество ошибочных слов: 42
Процент ошибочных слов: 13.42 %

Результаты когда указатели на незнакомые слова не удалены
-------------------------------------------------------
Edit distance: 42
Процент ошибочных слов (WER): 13.42 %
Количество ошибочных слов, независимо от позиции: 42
Процент ошибочных слов, независимо от позиции (PER): 13.42 %

Статистика по переводу незнакомых слов
-------------------------------------------------------
Количество незнакомых слов, которые были  одинаковы для языка-источника и для целевого языка: 0
Процент незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0%

Дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .-r предлагает образец перевода, в данном случае tt.txt </ код> это файл, содержащий пример текста на татарском языке. -t выдает текст, например, результат работы системы машинного перевода.

Теперь скопируйте файл ba-tt.txt назовите tt2.txt и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив tt.txt на tt2.txt и сравните результаты.