mkbinhmm のバグを修正するパッチを作って ML に投げた。 HCopy の設定ファイルを読み込まなければ発生しない不具合なので、 基本的に気にする必要はないと思う。
テープじゃないけど、 外部ファイルに書き出したソート結果をマージする形のマージ・ソートなら、 今でも大規模コーパスを扱う場合に必要な処理だと思う。 実際、Palmkit では内部的に実装されているし、 他の言語モデリング・ツールでもそれを意識したコマンド構成になっている (ユーザーはそれほど意識せずに済んでいるはずだが) ことがある。
事前に GNU bison, FLEX をインストールしておくと良い。
$ wget -c http://people.csail.mit.edu/ilh/fst/mitfst-1.2.1.zip $ unzip mitfst-1.2.1.zip $ cd mitfst-1.2.1 $ wget -c http://quruli.ivory.ne.jp/download/mitfst-1.2.1.diff.gz $ gzip -cd mitfst-1.2.1.diff.gz | patch -p1 $ make
以上で bin/x86_64-osx/* lib/x86_64-osx/* man/*/* が出来上がる。
今回は x86_64 バイナリで組んでみたが、コード的には非常に怪しく危険なかおりが…。 それと、環境に依存するはずだが、 cstring ヘッダで宣言されている関数の扱いで、とんでもなく苦労するはず。
相変わらず Mac OS X では組み立てられないので、古い Linux 環境 (Pentium3 600MHz…) に入れている。 最近のは OpenFST に対応しているようなので、 x86_64 の速い Linux 環境でいじってみたいところなのだが、自宅にそれっぽいものがない。 残念だ。
もちろん Mac OS X ネイティヴで動かせるようになれば特に悩む必要はなくなるわけだが、 けっこう Linux に依存している箇所がありそうなので、ちょっと厳しい気がする。 最新の WFST 型 decoder はこれくらいしか自由に使えないのに。
補足。 Juicer の WFST の動的合成 (on-the-fly 合成) は、長い期間メンテナンスされておらず、 もしかすると、他機関の WFST 型 decoder に比べ古さを感じる面もあるかもしれない。 内部的に使っている Torch3 も古いものだし…。 このサイトに「Juicer WFST」なんてキーワードで飛んでくる人がけっこういるけど、 メンテナンスがしっかりしている同等かそれ以上の性能の decoder があるなら、 普通、わざわざ Juicer を選択する必要はないと思う。 インストールの難易度が比較的高目なことも考慮すると、 それでも選択するのはよほどの物好きだろう。
事前に libogg, libvorbis, FLAC を入れておくと良い。
$ wget -c http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.21.tar.gz $ gzip -cd libsndfile-1.0.21.tar.gz | tar xvf - $ cd libsndfile-1.0.21/ $ ./configure --disable-alsa $ make && make check $ sudo make install
CFLAGS
などはお好みで。
ちょっと比較してみよう。
- | インストールの容易さ | 機能の多彩さ | 独自性 |
---|---|---|---|
MITLM | Fortran コンパイラや Boost C++ Libraries が必要なので、環境によっては少し厄介。 | modified Kneser-Ney スムーシングなど、基本的な機能は実装されている。 | 各種 interpolation 手法が実装されていることはウリと見てよさそう。 |
SRILM | 普通。VC++ で組み立てるパッチも出回っている。 | modified Kneser-Ney スムーシングを始めとし、非常に多くの機能が実装されている。 | 定番となった今、それほど特別なところはない? |
MITLM は、今後、コードを読み書きできるユーザーが増えていくのであればとても期待できる。 その一方で、今は十分に枯れている SRILM を使う方が無難な気がしている。
Snow Leopard での MITLM のインストールについては、 x86_64 環境用バイナリを公開しているので、 頑張らずにそれを導入しても良いと思う。
ドキュメント通り標準入出力を扱えるように仮の実装を施した。
置き場所は前回と一緒。
←変な動きをする可能性がありそうなので、古いものに戻した。
20110426_mitlm.0.4.tar.xz←新しいものを置いた。
(せっかく隠蔽している FILE*
を晒すってどういうことだ?!)