На выходе GIZA ++ отсутствуют файлы * .ti.final и * actual.ti.final

У меня проблемы с пониманием основ работы с GIZA ++.

Я прошел обсуждение, здесь, на StackOverflow (Есть ли учебник о Гиза ++?) и через ссылки, предоставленные там людьми. Я скачал и скомпилировал последнюю версию Гизы из Github Moses-SMT.

git clone https://github.com/moses-smt/giza-pp.git
cd giza-pp
make

После успешной компиляции я написал простой скрипт для тестирования.

#!/bin/bash
SRC=french
TRG=english
PREFIX=out
GIZA=../giza-pp

# Cleaning from previous run ...
rm -f *.log
rm -f *.vcb
rm -f *.snt
rm -f *.vcb.classes
rm -f *.vcb.classes.cats
rm -f *.gizacfg
rm -f *.cooc
rm -f ${PREFIX}*

# Converting plain text into sentence format using the "plain2snt.out" tool ...
${GIZA}/GIZA++-v2/plain2snt.out ${SRC} ${TRG}

# Generating word clusters using the "mkcls" tool ...
${GIZA}/mkcls-v2/mkcls -p${SRC} -V${SRC}.vcb.classes
${GIZA}/mkcls-v2/mkcls -p${TRG} -V${TRG}.vcb.classes

# Generating coocurrence using the "snt2cooc" tool ...
${GIZA}/GIZA++-v2/snt2cooc.out ${SRC}.vcb ${TRG}.vcb ${SRC}_${TRG}.snt > ${SRC}_${TRG}.cooc

# Running "GIZA++" ...
${GIZA}/GIZA++-v2/GIZA++ -S ${SRC}.vcb -T ${TRG}.vcb -C ${SRC}_${TRG}.snt -CoocurrenceFile ${SRC}_${TRG}.cooc -o ${PREFIX} >> giza.log 2>&1

Теперь это содержимое каталога сразу после запуска скрипта.

jakub@jakub-virtual-machine:~/Master/giza-pp_test$ ls
english                   french_english.snt       out.d3.final        out.perp
english_french.snt        french.vcb               out.d4.final        out.t3.final
english.vcb               french.vcb.classes       out.D4.final        out.trn.src.vcb
english.vcb.classes       french.vcb.classes.cats  out.Decoder.config  out.trn.trg.vcb
english.vcb.classes.cats  giza.log                 out.gizacfg         out.tst.src.vcb
french                    out.a3.final             out.n3.final        out.tst.trg.vcb
french_english.cooc       out.A3.final             out.p0_3.final      run_test.sh

Дело в том, что на выходе отсутствуют (для меня важные) файлы, перечисленные ниже.

out.ti.final
out.actual.ti.final

Теперь я смотрю на Main.cpp GIZA (строки: 260 — 273) и вижу строки, которые должны создавать эти файлы.

cerr << "writing Final tables to Disk \n";
string t_inv_file = Prefix + ".ti.final" ;
if( !FEWDUMPS)
m1.getTTable().printProbTableInverse(t_inv_file.c_str(), m1.getEnglishVocabList(),
m1.getFrenchVocabList(),
m1.getETotalWCount(),
m1.getFTotalWCount());
t_inv_file = Prefix + ".actual.ti.final" ;
if( !FEWDUMPS )
m1.getTTable().printProbTableInverse(t_inv_file.c_str(),
eTrainVcbList.getVocabList(),
fTrainVcbList.getVocabList(),
m1.getETotalWCount(),
m1.getFTotalWCount(), true);

У меня также есть строка «cerr», напечатанная в журнале, но я просто не могу понять, почему эти файлы не присутствуют в выводе.

jakub@jakub-virtual-machine:~/Master/giza-pp_test$ cat giza.log | tail -n 25
p0_count is 4.0073 and p1 is 5.99635; p0 is 0.400584 p1: 0.599416
Model4: TRAIN CROSS-ENTROPY 0.80096 PERPLEXITY 1.74226
Model4: (10) TRAIN VITERBI CROSS-ENTROPY 0.801289 PERPLEXITY 1.74266
Dumping alignment table (a) to file:out.a3.final
Dumping distortion table (d) to file:out.d3.final
Dumping nTable to: out.n3.final

Model4 Viterbi Iteration : 10 took: 0 seconds
H3333344444 Training Finished at: Fri Oct 23 16:24:44 2015Entire Viterbi H3333344444 Training took: 0 seconds
==========================================================
writing Final tables to Disk
Writing PERPLEXITY report to: out.perp
Writing source vocabulary list to : out.trn.src.vcb
Writing source vocabulary list to : out.trn.trg.vcb
Writing source vocabulary list to : out.tst.src.vcb
Writing source vocabulary list to : out.tst.trg.vcb
writing decoder configuration file to out.Decoder.config

Entire Training took: 0 seconds
Program Finished at: Fri Oct 23 16:24:44 2015

==========================================================

Кто-нибудь, пожалуйста, столкнулся с подобной проблемой, пожалуйста? Это какая-то ошибка или я что-то не так делаю?

Редактировать:

Теперь я перекомпилировал весь GIZA ++ без -DBINARY_SEARCH_FOR_TTABLE вариант в пределах CFLAGS в Makefile, И изменил скрипт, чтобы он не генерировал и не передавал файл coocurrence для GIZA ++. После того, как я перезапустил скрипт, вывод содержал out.actual.ti.final а также out.ti.final, Кто-нибудь знает, как объяснить это поведение? Я учил, что я получу лучшие оценки выравнивания и вероятности, используя файл coocurrence, это нужно, пожалуйста? Или это только для повышения скорости исполнения?

2

Решение

Я сталкивался с той же проблемой раньше.
Я думаю, что пропущенный шаг
В Makefile, расположенном по адресу. \ Giza-pp \ GIZA ++ — v2 \, подставьте строку:
CFLAGS_OPT = $ (CFLAGS) -O3 -funroll-loops -DNDEBUG -DWORDINDEX_WITH_4_BYTE -DBINARY_SEARCH_FOR_TTABLE -DWORDINDEX_WITH_4_BYTE

с линией:
CFLAGS_OPT = $ (CFLAGS) -O3 -funroll-loops -DNDEBUG -DWORDINDEX_WITH_4_BYTE -DWORDINDEX_WITH_4_BYTE

Проверь это дело и удачи

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]