ブログ: 接続辞書を使った日本語入力
(expanded from 接続辞書と日本語入力 このページは編集しないでください)
(2019/1/13)
世の中で広く使われているモダンな日本語入力システムは高度な自然言語処理によってかな漢字変換を行なっているが、実は高度な自然言語処理を利用しなくても効率的に日本語入力することは可能である。たとえばSKKという日本語入力システムは単純な辞書とアルゴリズムしか使っていないにもかかわらず高速な日本語入力が可能だったりする。(SKKはもともとEmacs上での日本語入力用に開発されたもので、 も結構使っていたのだが、キーボードの利用が前提でありモバイル機器では使いにくいとか日本語でしか使えないという制約がある)
接続辞書というのは「単語の次にどのような単語が続くか」を記述した辞書である。単語ごとに、読み/カテゴリ/接続カテゴリを登録する。たとえば、慶應という単語は、
けいおう
という読みをもつ 大学名
カテゴリの単語で、 大学名接続
というカテゴリの単語が後に続く可能性があると記述しておく。keiou.txt
慶應
けいおう 大学名 大学名接続
daigaku.txt
大学
だいがく 名詞 名詞接続
だいがく 大学名接続 名詞接続
けいおうだいがく
と入力したとき、 けいおう
が 慶應
にマッチし、その後に 大学
が接続可能ということがわかるので、 けいおうだいがく
を 慶應大学
と変換できることになる。 けいおうだ
と入力した時点で 慶應大学
が候補に出る。 接続辞書を利用すると動詞の活用もうまく扱える。たとえば以下のようなエントリを定義しておくと、
結
の後には ば行五段活用語尾
である べ
が接続可能で、 べ
の後には な否定
である ない
が接続可能だということになるので、 むすべない
を 結べない
に変換できる。 べない
のように文節と認識したくないところは *
をつけている。むす.txt
結
むす ば行五段動詞 ば行五段動詞語尾
be.txt
*べ*
べ ば行五段動詞語尾 な否定
べ ば行五段動詞語尾 た過去
nai.txt
*ない
ない な否定
同様にして漢数字の変換もできる。数字に対して以下のような接続を定義しておくと
さんじゅうごにん
を 三十五人
に変換できたりする。go.txt
五
ご 漢数字1 漢数字2
ご 漢数字1 漢数字3
ご 漢数字1 数字接尾
Statechartで記述するとこういう状態遷移になる。
このように、接続辞書は単語の状態遷移を記述したものだといえる。接続辞書を利用した変換はアルゴリズムが簡単だし日本語以外でも利用できるという特徴があり、パソコンでもスマホでも同じ辞書とアルゴリズムが使える。 は10年以上にわたってこの手法だけを使って生活しており、それなりに使い物になると考えている。辞書データとIMEのソースは以下に置いてある。
/Gictionary (接続辞書データ)
Scrapbox上で管理しているので単語の追加や修正が簡単
Chaim (ChromeOS用IME)
Slime (Android用IME)
Gyaim (MacOS用IME)