kiyokaのブログアーカイブ

Archive of old blog posts

SKKユーザーを満足させるのは難しい

前回の記事で、[Sekka]をレベルアップできないかという話題を書いた。 SKKライクなIMEの特徴である、シフトキーを頻繁に押さないといけないという問題をなんとか改善できないか… ローマ字先頭の大文字を指定しなくても快適に使えるようにならないかということを軽々しく書いた。

SKKユーザーを満足させるのは難しい

いろいろ試してみて、漢字とひらがなは「現段階では」人間が細かく指定したほうがよいという結論になった。「現段階では」という括弧書きだが。 いくらIMEが賢くなってもどこかでユーザーの考えていることとくい違ってしまう。つまりそれは誤変換だ。 本当のことをいうと、ユーザーが考えていることと完全に一致した結果を返せれば、それは誤変換は無いということになるので、完全に満足できる「賢さ」というポイントは必ずあるはずだ。 しかし、コンピューターの能力は有限なのでどこかでその壁が来る。

試しに、共起頻度の辞書100MByte分を追加して実験してみたが、変換中の単語の直前2語が辞書にヒットするとは限らず、どの単語が確からしいかは推定できない。(bigramとskip-bigram) 辞書には “日本語” と “変換” は共起するという情報があるので “日本語”の直後の”henkan” は漢字の”変換”と推定できるが、いつもこのようにうまくいくとは限らない。 自分の文章が必ずセオリーどおりのパターンで構成されているわけではない。辞書に無ければそれでアウトだ。 SKKユーザーはこの「漢字」と「ひらがな」と「カタカナ」間の誤変換というのを普通の人以上に嫌うので、なかなか難しい問題だ。

パーソナライズというもうひとつの問題

Webコーパスなどから集計した共起頻度の辞書を使うと、例えば句読点として「、。」を使うのか「,.」を使うのかという個人設定を維持することを困難にする。 コーパスとその人の趣向が一致しない場合、期待しない候補が選択されてしまう。(まあ、狭い範囲での解決策はいろいろあるが) この点、SKKは最後の選択肢が愚直に第一候補になるので、文脈によって変換候補の順位が影響を受けない。

結論

SKKユーザーのように少しの誤変換も許しがたいユーザーにとって、IMEの挙動に推測はなるべく入れないほうが良い。 恐らく、SKKユーザーを納得させることができるのは人間の知性を上まわる「強いAI」が完成した時しかありえないだろう。

使ったデータ

辞書は以下の2gmと3gmを使った。 N-gram コーパス - 日本語ウェブコーパス 2010 形態素 N-gram 頻度 10 以上のファイルリスト 圧縮時 12.1GB,展開時 75.2GB

GitHubの作業branch

多分リリース予定なし。将来の約に立つかも。 https://github.com/kiyoka/sekka/tree/ngram_dict

感想

自分でいうのもなんだが、SKKユーザーはなかなか頑固ものである…