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