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

Другие вопросы по тегам