Skip to content

Akaza のアルゴリズム

Tokuhiro Matsuno edited this page Jan 12, 2023 · 3 revisions

Akaza のビタビアルゴリズムでは、現在、単語2グラムを採用しています。

  • かな漢字変換辞書を元にトライ構造を作って用意しておく。
  • ローマ字で入力された文字列をもとに、平仮名に変換する。
  • 共通接頭辞検索をして、平仮名ベースのグラフ構造を構築する。
  • それぞれのノードごとに漢字表現とシステム辞書からword_id、システムノードスコア、ユーザーノードスコアを得て surface lattice を構築する。
  • ラティス構造をビタビアルゴリズムで最適解を求める。
  • 前方から後方へノードコストとエッジコストを求めながら探索する。後方から前方へ、一番コストが高いノードを辿る。途中で他の変換候補も収集する。

FAQ

  • なぜ品詞Nグラムを使わないのですか?
    • → 品詞を扱うのは大変そうだったので単語2グラムで実装してみたら、それでわりと精度が出るし、そこまで容量もくわないのでいいかなぁ、と。
  • なぜ前向きDP後ろ向きA*をしないのですか?
    • → まだ実装してないというだけです。

Clone this wiki locally