真字(2004-2006)
或る漢字変換エンジンの生涯
Google 日本語入力 TechTalk 2010
山形頼之
発端
はてなダイアリーを始めた。日本語を書くことに
↓
Cannaにうんざりする
↓
自分で作ろう!名前は真字だ!
↓
一週間くらいで変換ができるように
真字の特徴
• C/OCaml/Schemeハイブリッド
– Cコードは茶筅由来
• 言語モデルはIPA-DIC
• コンパクト
– 独自の部分は2000行くらい
– 外部インターフェースは関数2つだけ
Emacs
Mana
Chasen 連接コストIPA-dic
形態素グラフ
最適解 単語候補リスト
Viterbi
Scheme
Egg
OCamlで高速開発?
• OCamlはそこそこ速い
– 複雑なアルゴリズムもOCamlで書ける
– スクリプト言語だとCで書かないといけない
• ライブラリが揃っている
– OCamlGraph
– Schemeインタープリタ多数
でもはまる
• Automake…
– 一応OCaml対応パッチはあるけど…
• GCがクラッシュ
– バグの位置とクラッシュするところが違う…
ベンチマーク
漢字混じり文
↓
Kakasi
↓
ひらがな文
↓
変換エンジン
↓
漢字混じり文
走れメロス
0.0 5.0 10.0 15.0 20.0
真字
Wnn
Anthy
Canna
一致率
Debian憲章
0 10 20 30 40 50 60 70
真字
Canna
Anthy
Wnn
一致率
真字、再起動?
• モードレス、言語の判定
こっぁちおんはきょうきせいとやくされる →
Collationは共起性と訳される
• 共起性のサポート
残念な変換:今年の夏は扱った(Google IME β)
• Typoの認識
ご清聴ありがとうございました

Google 日本語入力 TechTalk 2010

Editor's Notes

  • #3 「かんな」を超えるから「真字」。形態素解析をひらがな文に適応すると漢字変換になる、というのがキーオブザベーション。
  • #4 Ocamlが何か、説明しなくてもいいですね。
  • #5 Scheme層は何もやっていない。Manaは実質2つのScheme関数を提供する。Eggがそれを呼び出すことで変換が行われる。文節の区切り直しは、右の部分について、最適解をもう一度計算することにより得られる。
  • #6 いろいろな言語をこれまで使ってみたけど、どれも一長一短がある。ならば理論的根拠があって実装がしっかりしているOCamlでいい。(自分でつかうなら)
  • #10 Wnn,Cannaが健闘していて意外。もしかするとDebian憲章はWnnで書かれたのかもしれない。太宰治はCanna使い?