GIZA++ は、統計的機械翻訳に使われるアライメントツールで、 IBM Model 1-5 と HMM を実装しています。今回は、Europarl Parallel Corpus で配布されている英独対訳コーパスのアライメントの尤度を推定させてみます。
# GIZA++ の準備
$ git clone https://github.com/moses-smt/giza-pp.git
$ cd giza-pp
$ make
$ cd GIZA++-v2
# 対訳コーパスを準備
$ wget http://www.statmt.org/europarl/v7/de-en.tgz
$ tar xfz de-en.tgz
$ cd de-en
$ mv europarl-v7.de-en.de german
$ mv europarl-v7.de-en.en english
# 前準備
$ ./plain2snt.out german english
$ ./snt2cooc.out german.vcb english.vcb german_english.snt > german_english.cooc
# 実行
$ ./GIZA++ -s german.vcb -t english.vcb -c german_english.snt -coocurrence german_english.cooc
何やらよくわからないファイルがたくさん生成されていますが、見て欲しいのは ~.t3.final
と ~.trn.src.vcb
、 ~.trn.trg.vcb
です。 ~.trn.src.vcb
と ~.trn.trg.vcb
には "単語ID" "単語" "頻度" が、 ~.t3.final
には "src の単語ID" "trg の単語ID" "尤度" がそれぞれスペース区切りで書かれています。これらのファイルの情報を統合すれば皆さんの欲しいものが得られます。やったね!