Julian用認識文法を生成する

公式のリファレンスに従うだけなのに、はまったので、メモ。

Juliusの再コンパイル

% make distclean
% ./configure --enable-julian # 語彙サイズが大きくなりすぎるときは --enable-words-int というオプションが必要
% make
% make install
% make install.man.ja # これは好み

model.grammarの生成

model.vocaファイルに含まれない構文制約を含んではならない。

model.vocaの生成

読みをひらがなで記述した、model.yomiを作る。その後、julius-4.1.2/gramtools/yomi2voca/yomi2voca.plを用いて、model.vocaを生成する。

model.yomi
# コメント
% CLASS
魑魅魍魎 ちみもーりょー
  • 構文制約(CLASS)にmodel.grammarに含まれないものを書いてはいけない。
  • 書き(魑魅魍魎)は表示にしか関わらないので、読みと関連が無くても良い。
  • 読み(ちみもーりょー)はひらがなで書く(カタカナはエラーが出る)。
  • 読みはJuliusディクテーション実行キットのmodel/lang_m/web.60k.htkdicに沢山書いてあるので、慣れるまで参考にする。

完成したら、yomi2voca.plを用いて、変換する。PerlだがMSYS環境なら、そのまま動く。

$ yomi2voca.pl model.yomi > model.voca

行数が出るのは仕様のようです。

Julian形式への変換

julius-4.1.2/gramtools/mkdfa/mkdfa.plのmkfaとdfa_minimizeのパスを修正する必要があった。

# mkfa executable location
($thisdir) = ($0 =~ /(.*(\/|\\))[^\/\\]*$/o);
#$mkfabin = "${thisdir}mkfa";
$mkfabin = "${thisdir}mkfa-1.44-flex/mkfa";

# dfa_minimize executable location
#$minimizebin = "${thisdir}dfa_minimize";
$minimizebin = "${thisdir}../dfa_minimize/dfa_minimize";

とすると動いた。

一応、「mkdfa.pl ../dir/model」を実行したときの../dir/modelは../dir/にmodel.grammarとmodel.vocaが同じディレクトリにあることを示している。

これで、生成できるので、SampleGrammer等からjconfファイルを取ってきて、実行すればよい。