Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

k-best 分節パターン切り替え

概要

変換時に、ビタビアルゴリズムが上位 k 個の分節パターン(文節の区切り方)を自動的に列挙する。 ユーザーは Tab キー で分節パターンを切り替えることができる。

従来の動作

従来は、ビタビアルゴリズムが最もコストの低い 1 本のパスのみを返していた。 分節の区切り方を変えるには Shift+←/→ で手動調整する必要があった。

例: 「きたかな」を変換

  • 変換結果: 北香那(1文節)
  • 「来た|かな」(2文節)にしたい場合は Shift+← で手動調整が必要

新しい動作

変換時に最大 5 個の分節パターンが自動計算される。 Tab キーを押すと次の分節パターンに切り替わる。

例: 「きたかな」を変換

  1. Tab 0回目: 北香那(1文節)
  2. Tab 1回目: 来た|かな(2文節)
  3. Tab 2回目: 気|高菜(2文節、別の区切り方)
  4. さらに Tab: 1 に戻る(循環)

操作方法

キー状態動作
Tab変換中次の分節パターンに切り替え
Shift+→変換中文節を右に伸ばす(従来通り)
Shift+←変換中文節を左に伸ばす(従来通り)

Shift+矢印との関係

  • Tab で分節パターンを切り替えた後、Shift+←/→ で微調整できる。
  • Shift+←/→ を押すと分節パターンの選択は 1-best(最初のパターン)にリセットされ、 手動境界指定で再変換が実行される。

技術的な仕組み

k-best ビタビ

従来のビタビアルゴリズムでは各ノードに対して「最もコストの低い前ノード」を 1 つだけ記録していた(prevmap: HashMap<&WordNode, &WordNode>)。

k-best では各ノードに対して上位 k 個のエントリ(コスト、前ノード、前ノードの rank)を 保持する。バックトラック時に各エントリの (prev_node, prev_rank) チェーンをたどることで k 本のパスを抽出する。

重複排除

同じ分節パターン(各文節の読みの長さの列)を持つパスは、 低コスト側のみを残す。これにより、漢字候補だけが異なるパスが重複して 表示されることを防ぐ。

候補の関係

  • 分節パターン(Tab で切り替え): 文節の区切り方が異なる
    • 例: 北香那 vs 来た|かな
  • 漢字候補(↑/↓ で切り替え): 同じ文節内の異なる漢字変換
    • 例: 来た vs (どちらも「きた」の候補)

この 2 つは直交する概念であり、Tab で分節パターンを選んだ後、 ↑/↓ で各文節の漢字候補を選ぶことができる。