Difference between revisions of "Курсы машинного перевода для языков России/Раздел 7"
Hectoralos (talk | contribs) |
Hectoralos (talk | contribs) |
||
Line 110: | Line 110: | ||
Снова возьмем вышеприведенный пример: |
Снова возьмем вышеприведенный пример: |
||
{|class=wikitable |
{|class=wikitable |
Revision as of 19:07, 19 January 2012
Contents |
Теперь, когда мы рассмотрели основные вопросы создания новой системы машинного перевода в Apertium, мы подошли к итоговой, возможно самой важной части. В данном разделе мы обсудим важность согласованности данных, что мы понимаем под качеством и как проводить оценку. На практике мы поработаем с методами, которые позволяют добиваться согласованности и качества в Apertium. Мы также рассмотрим оценку качества.
Теория
Систематичность Consistency
Автономная система
В отличии от многих других систем обработки естественного языка, таких как морфологический анализатор, маркировщик частей речи, система машинного перевода, придуманная и разработанная компанией Apertium является автономной, самодостаточной системой. При введении разных вводных данных, итоговый результат должен быть одним, предсказуемым и определенным.
Другими словами, на каждую вводимую лексическую единицу из языка-источника, морфологический анализатор должен находить соответствующую запись в морфемном переносном лексиконе и, далее, соответствующую запись в морфологическом генераторе языка перевода. Это должно происходить как на уровне лемм, так и на уровне тэгов. Посмотрите на следующий пример: мы можем увидеть, что на каждую лексическую форму языка-источника, находится соответствующая запись в двуязычном словаре.
Когда этого не происходит, т.е. что-то идет не так, мы получаем диагностические предупреждения в виде символов (@
, #
) на выходе и перевод выглядит "непричесанным". В этом разница в статусе разных языковых пар. Мы легко можем это увидеть, если мы возьмем пару со статусом trunk
(это обработанные пары, которые прошли контроль качества — обычно не имеют диагностических предупреждающих знаков), и пару со статусом nursery
(для пар, которые прошли только начальную обработку и ожидают проверку качества).
Противоречивость расхождение Inconsistency
Это видно на примере перевода нижеприведенного предложения на турецкий язык при помощи двух отдельных переводчиков в 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ç
→@uç
, слово uç встречается только с тэгом<n>
, но маркировщик выбирает<v>
. - Если есть и лемма и тэг части речи в двуязычном словаре, но некоторые другие тэги не совпадают, будет появляться надпись
@
. - Если в словаре языка перевода отсутствует данная лемма, тогда появится
#
. Например:kadın
→арӑм
→#арӑм
- Если лемма существует в морфологическом словаре языка перевода, но есть несоответствие в морфологических тэгах между результатом переноса и морфологическим словарем, тогда появляется
#
. Например:ol
→пул
. Словарь языка перевода не содержит форму<past><p3><sg>
для леммыпул
.
Прежде чем запустить в работу какой-либо переводчик, должны быть проведено полное тестирование словарей (в обиходе это называют "testvoc" — from test vocabulary), и не должно быть никаких предупреждающих символов в результатах перевода. На практике, ошибки иногда остаются.
Одна из причин почему Apertium избегает моделирования вольных деривационных процессов состоит в том, что они могут не быть эквивалентными для обоих языков. Если процессы не эквивалентны, правила переноса оказываются не на своем месте, тогда отладка и тестирование переводчика усложняются. Кроме того, если морфологические преобразователи цикличны (разрешают вольное словообразование) невозможно выполнять тестирование слов.
Качество
Качество -вы знаете что это такое, но в тоже время мы не знаете что это. И это противоречиво. Но если одни вещи лучше других, значит они качественнее. Но когда вы пытаетесь дать определение качеству, отделяя его от самих вещей, тогда вы теряете суть. Здесь не о чем говорить. Но если вы не можете сказать что такое Качество, откуда вы знаете что это, откуда вы знаете что оно вообще существует? Если никто не знает что это такое, тогда с практической точки зрения оно не существует. На чем еще базируются оценки? Почему за одни вещи люди готовы заплатить целое состояние, а другие выбрасывают в мусор? Очевидно, что одни вещи лучше других, но в чем заключается это "лучше"? -- И вот вы снова и снова ходите кругами, напрягаете свои мозговые извилины и никуда не можете продвинуться в своих размышления. Что такое это Качество черт возьми? Что это такое? — Дзен и искусство ухода за мотоциклом
Качество системы
Так как качество трудно определить и измерить, мы можем попробовать ответить на этот интересный философский вопрос через ответы на конкретные вопросы. Например:
- Насколько полно два языка представлена в словарях системы нужной области?
- Выполняется ли разрешение морфологической неоднозначности достаточно хорошо чтобы гарантировать правильный перевод слов и эффективное применение правил переноса?
- Существуют ли противоречия в словарях, ведущие к диагностическим предупреждающим знакам?
- Построена ли система таким образом, что ее легко и возможно изменить?
Качество перевода
Что это значит - получить перевод "хорошего качества"? Во многом это зависит от того, для чего планируется использовать систему. Цели могут быть разными:
- Получить примерный перевод:
- Согласно переводчику, быстрее и эффективнее изменять примерные варианты переводов, предложенных системой или переводить с нуля?
- Получить перевод для ознакомления с содержанием текста:
- Может ли система в определенных случаях делать переводы, достаточно понятные и быстрые, которые бы не нуждались в редактировании человеком?
Оценка
Объем словаря
Объем системы показывает какая часть словаря данного языкового корпуса или области представлена в системе. Чтобы показать что это значит, мы попробуем перевести предложение с турецкого на башкирский язык используя разные объемы словаря:
Предложение | Размер |
---|---|
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 для данного корпуса. Этого не достаточно для полноценного перевода, за исключением пары родственных языков. Однако, как правило, достаточно, чтобы сделать понятнее переводы.
Количество и частота ошибок
Итак, понятие объема дает вам представление о том, сколько слов вам придется изменить в лучшем варианте перевода, при том, что остальная часть перевода является правильной. Но более точный показатель того, сколько слов вам придется заменить после использования переводчика можно получить при помощи подсчета ошибок по итогам перевода (сокращенно 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% |
Как и в случае оценки объема словаря, подсчет количества ошибок, как правило, проводится на пуле предложений. Он показывает сколько слов вам, вероятно, придется изменить в данном предложении.
После подсчета количества ошибок и объема словаря на примере корпуса определенной области перевода, можно получить представление о пользе системы машинного перевода для решения конкретной задачи. Конечно, чтобы определить, насколько система полезна для переводчиков, необходимо провести более тщательную оценку для каждого отдельного случая.
Практика
Системность Consistency
Testvoc Тестирование словаря
Чтобы увидеть как управлять сценарием 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.
Оценка
Охват
Подсчитать объем охвата морфологического анализатора легче всего способом, который мы продемонстрируем снова на примере татарско-башкирской пары:
$ 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% морфологическим анализатором татарского языка для данного примера.
Количество ошибочных слов
В системе 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 % Результаты после удаления пометок о неизвестных словах (звездочек)Results when removing unknown-word marks (stars) ------------------------------------------------------- Edit distance: 42 Процент ошибочных слов (WER): 13.42 % Количество ошибочных слов Number of position-independent word errors: 42 Процент ошибочных слов Position-independent word error rate (PER): 13.42 % Результаты когда указатели на незнакомые слова не удалены Results when unknown-word marks (stars) are not removed ------------------------------------------------------- Edit distance: 42 Word Error Rate (WER): 13.42 % Number of position-independent word errors: 42 Position-independent word error rate (PER): 13.42 % Статистика по переводу незнакомых слов ------------------------------------------------------- Количество незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0 Процент незнакомых слов, которые были одинаковы для языка-источника и для целевого языка: 0%
Дает информацию о проценте ошибочных слов, и некоторые другие статистические данные о двух файлах .-r
предлагает образец перевода, в данном случае tt.txt </ код> это файл, содержащий пример текста на татарском языке.
-t
выдает текст, например, результат работы системы машинного перевода.
Теперь скопируйте файл
ba-tt.txt
назовите tt2.txt
и отредактируйте так, чтобы получить адекватный перевод, а затем перезапустить вышеуказанные команды, заменив tt.txt
на tt2.txt
и сравните результаты.