良い IME に必要なもの 3つ

日本語のかな漢字変換に必要なもののうち、主要なものを 3つ挙げてみる(細かく言えば、必要なものはもっとずっといっぱいある)。


1. N-gram 言語モデル


直接つながる前後の文脈によって曖昧性を解消する。これが基本。「おもってはいる」が「思って-入る」ではなく「思って-は-いる」のほうがもっともらしい、といった基本的なところには N-gram 的なものが向いている。表記だけの N-gram でもかなりのところまで行けるというのは N-gram 漢字-かな変換 - アスペ日記デモで示したとおり。


2. 共起情報


共起というのは、どの単語とどの単語が一緒に出現しやすいかということ。N-gram でカバーしきれない曖昧性解消に使う。例えば、「ねこをかいたい」が「猫を飼いたい」であるという程度は単純な N-gram 変換で解決できる。ある程度の規模のコーパスなら「猫-を-飼(う)」という 3-gram が出てくることは期待できるからだ。しかし、この方法では「頻出」かつ「ひとつながり」のものしか変換できない。


頻出でないケースというのは、例えば「あるまじろをかいたい」のようなもの。「アルマジロ-を-飼(う)」という 3-gram が出てくるほどのコーパスというのは、なかなか人手では作れない。かといって、 機械的に処理したデータを N-gram として使うと、ノイズによって通常の変換が悪くなる。


ひとつながりでないものというのは、例えば「ねこかいぬか、どっちかをかうとしたら、どっちかなぁ」といった文章。人間が見れば一目で「飼う」とわかる。しかし、N-gram では前を見ても後ろを見てもなかなかわからない。「犬か、どっちかを飼う」が出てくるほどの規模のコーパスというのは現実的ではない(Google 検索ですら出てこない)。


これらを扱うためには、「アルマジロ・犬・猫」と「飼う」の間に関係があるという知識を何らかの形で持ち、片方が出てくる時にもう片方を出やすくするというのがいい。だが、これは言うほど簡単ではない。元はひらがな列なので。例えば「ねこかいぬか」の"かい"を「飼い」と解釈して、「猫飼い糠」と変換してしまってはどうしようもない。このあたりは工夫のしどころ。N-gram である程度もっともらしいパスに出てくる単語だけを考慮するなど。


3. 語彙


1. の N-gram 言語モデルに出てくるような単語だけでは、どうしてもカバー率が低くなる。例えば、「マホトーン」「メンタンピン」といった基本単語(?)すら、人手で作れるコーパスに出てくることはなかなか期待できない(両方とも少納言でも出てこない)。


だが、こういう N-gram コーパスに出てこないような単語というのは、前後との関係がそれほど重要ということはない。その単語の頻度さえ最低限わかれば、N-gram 言語モデルに組み入れることができるため、単語と頻度だけ Web などから収集するという方法をとることができる(実際は、読みによる頻度の分配などの問題があり簡単ではない)。




自分が個人的に一番興味があるのは N-gram のところ。10月に DVD が出る 日本語書き言葉均衡コーパス(BCCWJ)を手に入れたら、そのデータを洗練させる方法がないか、人手・自動化含めていろいろ考えてみたい。