Плохой результат и оценка от Giza++
Я пытался работать с giza++ в окне (с помощью компилятора Cygwin). Я использовал этот код:
// Предположим, исходный язык - французский, а целевой - английский
plain2snt.out FrenchCorpus.f EnglishCorpus.e
mkcls -c30 -n20 -pFrenchCorpus.f -VFrenchCorpus.f.vcb.classes opt
mkcls -c30 -n20 -pEnglishCorpus.e -VEnglishCorpus.e.vcb.classes opt
snt2cooc.out FrenchCorpus.f.vcb EnglishCorpus.e.vcb FrenchCorpus.f_EnglishCorpus.e.snt >courpuscooc.cooc
GIZA++ -S FrenchCorpus.f.vcb -T EnglishCorpus.e.vcb -C FrenchCorpus.f_EnglishCorpus.e.snt -m1 100 -m2 30 -mh 30 -m3 30 -m4 30 -m5 30 -p1 o.95 -CoocurrenceFile courpuscooc.cooc -o dictionary
Но после получения выходных файлов из giza++ и оценки выходных данных я заметил, что результаты были слишком плохими.
Мой результат оценки был:
RECALL = 0.0889
ТОЧНОСТЬ = 0.0990
F_MEASURE = 0,0937
AER = 0,9035
Доза любое тело знает причину? Может быть причина в том, что я забыл некоторые параметры или мне следует изменить некоторые из них?
другими словами:
Сначала я хотел обучить giza++ огромному количеству данных, а затем протестировать его небольшим корпусом и сравнить его результат по желаемому выравниванию (GOLD STANDARD), но я не нашел ни одного документа или полезной страницы в сети.
Можете ли вы представить полезный документ?
Поэтому я пробежал по маленькому курпусу (447 предложений) и сравнил результат с желаемым выравниванием. Как вы думаете, это правильный путь?
Также я изменил свой код следующим образом и получил лучший результат, но он все еще не хорош:
GIZA++ -S testlowsf.f.vcb -T testlowde.e.vcb -C testlowsf.f_testlowde.e.snt -m1 5 -m2 0 -mh 5 -m3 5 -m4 0 -CoocurrenceFile inputcooc.cooc -o словарь -o словарь -model1dumpfrequency 1 -model4smoothfactor 0,4 -nodumps 0 -nmooth 4 -onlyaldumps 1 -p0 0,999 -диагональный да -финал да
Результат оценки:
// предположим, что A - результат GIZA++, а G - золотой стандарт. Как и Gs S ссылка в файлах A и G. Ap и Gp - это p-ссылка в файлах A и G.
RECALL = как пересекаются Gs/Gs = 0,6295
ТОЧНОСТЬ = Ap пересекаются Gp / A = 0.1090
FMEASURE = (2 * ТОЧНОСТЬ * ВЫЗЫВАТЬ)/(ВЫЗЫВАТЬ + ТОЧНОСТЬ) = 0.1859
AER = 1 - ((Как пересекаются Gs + Ap пересекаются Gp)/(A + S)) = 0,7425
Вы знаете причину?
1 ответ
Где вы взяли эти параметры? 100 итераций модели1?! Ну, если вам действительно удастся запустить это, я сильно подозреваю, что у вас очень маленький параллельный корпус. Если это так, вы должны рассмотреть возможность добавления более параллельных данных в процессе обучения. А как именно вы рассчитываете отзыв и точные меры?
РЕДАКТИРОВАТЬ:
С менее чем 500 предложениями вы вряд ли добьетесь приемлемой производительности. Обычный способ сделать это - не найти большего (не выровненного) параллельного корпуса, запустить GIZA++ на обоих вместе, а затем оценить небольшую часть, для которой у вас есть ручные выравнивания. Отметьте Europarl или MultiUN, это свободно доступные корпорации, которые содержат относительно большое количество англо-французских параллельных данных. Инструкции по подготовке данных можно найти на сайтах.