この構文制約や語彙は,通常システムが対象とするタスクごとに記述します.これをここでは「タスク文法」と呼びます.
構文制約は,形式上はCFGのクラスまで記述可能ですが,Julian は正規文法のクラスまでしか扱えません.この制限はコンパイル時に自動チェックされます.また再帰性は左再帰性のみ扱えます. 以下,例として,以下のような文章を受理する文法を考えます.
NS_B, NS_E, NOISE
はそれぞれ始端,終端,文中の無音区間(ポーズ)に対応します.
S : NS_B CHGCOLOR_S NS_E S : NS_B QUIT_S NS_E CHGCOLOR_S : COLOR_NP NI NOISE SURU_VP COLOR_NP : COLOR_N COLOR_NP : COLOR_N IRO_N SURU_VP : SURU_V SURU_VP : KUDASAI_V QUIT_S : QUIT_V SURU_V左辺に出てこなかったシンボル(上図中赤文字)が終端記号,すなわち単語カテゴリとなります.voca ファイルではその各単語カテゴリごとに単語を登録します.
% COLOR_N 赤 a k a 白 sh i r o 黄緑 k i m i d o r i 青 a o % IRO_N 色 i r o % SURU_V します sh i m a s u % KUDASAI_V してください sh i t e k u d a s a i % QUIT_V 終了 sh u: ry o: % NI に n i % NS_B silB silB % NS_E silE silE % NOISE sp sp
mkdfa.pl
" を用いて決定性有限状態オートマトンファイル(.dfa)と辞書ファイル(.dict)に変換します.
(grammarファイル=sample.grammar, vocaファイル=sample.voca の場合) % mkdfa.pl sample sample.grammar has 8 rules sample.voca has 9 categories and 12 words --- Now parsing grammar file Now modifying grammar to minimize states[0] Now parsing vocabulary file Now making nondeterministic finite automaton[10/10] Now making deterministic finite automaton[10/10] Now making triplet list[10/10] --- -rw-r--r-- 1 foo users 134 Aug 17 17:50 sample.dfa -rw-r--r-- 1 foo users 212 Aug 17 17:50 sample.dict -rw-r--r-- 1 foo users 75 Aug 17 17:50 sample.term
変換したファイルを使って以下の要領で Julian を起動できます.
% julian -dfa sample.dfa -v sample.dict...文法以外に音響モデルも指定する必要があります.また探索パラメータも設定できます.すべての設定を jconf ファイルに書いておくこともできます.
以上です.