ウィンドウで 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++ から出力ファイルを取得して出力を評価した後、結果があまりにも悪いことに気付きました。
私の評価結果は次のとおりです。
リコール = 0.0889
精度 = 0.0990
F_MEASURE = 0.0937
AER = 0.9035
誰かがその理由を知っていますか?いくつかのパラメーターを忘れてしまった、またはいくつかのパラメーターを変更する必要があることが理由でしょうか?
つまり:
最初に膨大な量のデータで giza++ をトレーニングし、次に小さなコーパスでテストし、その結果を目的の配置 (GOLD STANDARD) で比較したかったのですが、Web にドキュメントや有用なページが見つかりません。
役に立つドキュメントを紹介できますか?
したがって、小さなコーパス (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 入力cooc.cooc -o 辞書 -model1dumpfrequency 1 -model4smoothfactor 0.4 -nodumps 0 -nsmooth 4 -onlydumps 1 -p0 0.999 -diagonal はい -final はい
評価結果 :
// A が GIZA++ の結果であり、G がゴールド スタンダードであるとします。As と Gs は、A And G ファイルの S リンクです。Ap と Gp は、A ファイルと G ファイルの p リンクです。
RECALL = 交差 Gs/Gs = 0.6295
PRECISION = Ap 交差 Gp/A = 0.1090
FMEASURE = (2*精度*再現率)/(再現率 + 精度) = 0.1859
AER = 1 - ((Gs と交差する + Ap と Gp が交差する)/(A + S)) = 0.7425
その理由を知っていますか?