update conversion algorithms document

This commit is contained in:
ensan-hcl
2023-09-23 14:59:10 +09:00
parent 5a7bd0c149
commit cc626f5b38

View File

@ -184,3 +184,36 @@ ComposingText(
## ライブ変換 ## ライブ変換
ライブ変換はかなり単純なアイデアで実現しています。ライブ変換のない場合と同様に変換候補をリクエストし、「(予測変換ではなく)完全一致変換の中で最も順位が高いもの」をディスプレイします。 ライブ変換はかなり単純なアイデアで実現しています。ライブ変換のない場合と同様に変換候補をリクエストし、「(予測変換ではなく)完全一致変換の中で最も順位が高いもの」をディスプレイします。
## 予測変換
予測変換は「入力中mid composition」と「確定後post composition」で実装が異なります。
### 入力中の予測変換
入力中の予測変換は以下のような手順で実行されます。
1. 最後の数文字をクエリとして辞書で前方一致検索を実施
2. 発見された単語で候補を追加し、コスト的に問題なければ追加
ただし、「1文字しかクエリがない場合」の予測変換はコストが非常に高いため、辞書の生成時点で「あ」から始まる予測変換候補を列挙しておく、といった工夫を行なっています。このデータは`p/p_あ.csv`のようなファイルに配置しています。こうすることで短いクエリでも適切な予測を実施できます。
また、ローマ字入力中は「r」などローマ字のみの入力でも予測変換を行うようにしています。この場合は「ら・り・る・れ・ろ」でそれぞれ予測変換を行なっています。
### 確定後の予測変換
確定後の予測変換が入力中の予測変換と異なる点は、ユーザによる明示的なクエリが少ないことです。全く入力のない状態から予測しなければならないため、一般に困難です。
そこで確定後の予測変換では以下のような変換を混ぜ合わせてこれを実現しています。
1. 末尾の品詞に基づく予測変換
辞書には`p/pi_1285.csv`のようなデータがあります。これは品詞idが1285の単語の後にきやすい単語を列挙したデータです。このデータを用いて確定後の予測変換を実施します。1285は名詞なので、「が」とか「は」といった単語が予測されます。
2. 末尾の単語からの予測変換
辞書には複合語が含まれます。例えば「内閣」と「内閣総理大臣」の両方が辞書に登録されています。そこで「内閣」で確定した場合、「ナイカク」をクエリとして辞書で前方一致検索を実施します。これによって発見された候補のうち単語表記のprefixが「内閣」のものを選び、残りの部分を予測変換候補として表示します。結果的に「総理大臣」が予測されることになります。
3. 絵文字などの予測変換
「ほんと悲しいな……」などで確定した場合、この候補の中には「悲しい」が含まれます。このとき「悲しい」をクエリに絵文字を検索し、「😭」がヒットした場合「😭」を予測変換候補として提示します。