前回までで、3-gram辞書を作成したが、音声認識の精度はイマイチだった。
おなじ文章を読み上げた場合、本家のディクテーションキットの辞書を使用した場合と比べると、体感的にだが、認識精度は本家の方が数段上と言わざるを得ない。
逆に言えば、N-gramの辞書によって認識精度が変化する、と考えられる。
ということは、個人の必要な語彙ごとにまとめたN-gramを作成することも考えられる。
例えば、
・分野と使用頻度を分けた語彙(約6万まで)を用意する。
・語彙は品詞ごとに分けておく。
・個人の必要な語彙のグループを選ぶ。
・語彙をもとにN-gram辞書を作成する。
※なお、Juliusは現在のところ、語彙を約6万以上にすると動作が不安定になるなど、あまりいいことはないし、同じ発音の語彙が増えすぎても認識精度が下がる可能性が高い。
(語彙のグループ例)
基本語彙(名詞・動詞・形容詞・助詞など)レベル1
基本語彙(名詞・動詞・形容詞・助詞など)レベル2
基本語彙(名詞・動詞・形容詞・助詞など)レベル3
追加動詞レベル1
追加形容詞レベル1
2013年追加名詞レベル1
・・・
※とくに名詞は入れ替えが必要となる率は高いだろう。
語彙をもとにN-gram辞書を作成するとき、品詞ごとに、たとえば、「名詞」+「助詞」のN-gram辞書をperlスクリプトなどで自動作成してもよいだろう。
「私」+「は」
「私」+「が」
「私」+「の」
「私」+「と」
・・・
「形容詞」+「名詞」なども考えられる。
この考えの先に、N-gramに品詞を加えるという手法もあるが、特許がからんでくる可能性があるため、特許が切れるまで(現在の日本の法律では20年!)勝手に使えない・・・。というようなことが起こるので、プログラムの世界ではGPLライセンスやコピーレフトというものも出来てる。
音声認識用の辞書について話を戻すが、使用目的によっては、辞書を切り替えることで、認識精度が上げられる余地があるかもしれない、とも考えられる。
ここで言う使用目的とは、
・医療分野での電子カルテ(医師・看護師・薬剤師・その他の技師)や調剤録(薬局)への入力
・工場や特定の職場における業務日報のコンピュータ入力など、それほど多くの言い回し・語彙を必要としない分野
などがとりあえずはあげられるだろう。
加えて、これら業務では、外部ネットワークにデータが漏れないような環境をつくる必要もある。
さて、本題。
「Baiduブログ・掲示板時間軸コーパス」で語彙辞書とN-gram辞書を作成したが、精度はイマイチだった。
2-gramで同様のN-gram辞書を作成すると2-gramの数は3-gramの時と比べてかなり増加する。
そこで、同様の手順でb201001.2gmでN-gram辞書を作成してみた。(
b201001_2gram.bingram)
うむ。3-gramで作成したときとさほど変わらない認識率の悪さ。Juliusのログを見ると、N-gramに辞書に登録されていない語彙(未知語として扱われる)もたくさんあるな、という結果。
使える辞書を作るのは難しそうだ・・・。