現象
例:「きどうてすと」を変換すると「軌道テスト」が1位になります。「起動テスト」に修正して確定することを何度繰り返しても、左文脈のない場所で再入力するとまた「軌道テスト」が1位に戻ります。
従来学習(memory)には確定履歴が正しく記録されており、候補リストに「起動テスト」も現れます。しかしZenzaiが左文脈に基づいて候補を再ランクするため、学習結果が最終順位に反映されないケースがあります。ユーザーからは「何度直しても学習されない」ように見え、体験としてかなりストレスになります。
提案(0.1.4ベースの自分用ビルドで実装・動作確認済み)
「読みが完全一致する直近の確定内容(読み→表記)」を記録する軽量ストアを追加し、requestCandidates の結果の mainResults に同じ読み・同じ表記の候補が含まれる場合、Zenzaiの並び順に関係なくその候補を1位へ昇格させる方式で解決しました。Google日本語入力の学習に近い動きになります。
実装の要点:
- 確定時(
updateLearningData と同じタイミング)に読み(カタカナ)→表記を記録。学習設定が「学習しない」のときは記録・昇格とも無効
- 変換結果取得直後に、変換対象の読みと完全一致するエントリがあれば
mainResults 内の該当候補を先頭へ移動(ライブ変換のプレビューにも同じ順位が反映される)
- 学習リセットでストアも消去
Zenzaiの文脈適応性と学習の即効性のトレードオフなので設計方針の議論があると思いますが、「同じ読みの直近確定だけは最優先」というルールは副作用が小さく効果が大きかったため共有します。
現象
例:「きどうてすと」を変換すると「軌道テスト」が1位になります。「起動テスト」に修正して確定することを何度繰り返しても、左文脈のない場所で再入力するとまた「軌道テスト」が1位に戻ります。
従来学習(memory)には確定履歴が正しく記録されており、候補リストに「起動テスト」も現れます。しかしZenzaiが左文脈に基づいて候補を再ランクするため、学習結果が最終順位に反映されないケースがあります。ユーザーからは「何度直しても学習されない」ように見え、体験としてかなりストレスになります。
提案(0.1.4ベースの自分用ビルドで実装・動作確認済み)
「読みが完全一致する直近の確定内容(読み→表記)」を記録する軽量ストアを追加し、
requestCandidatesの結果のmainResultsに同じ読み・同じ表記の候補が含まれる場合、Zenzaiの並び順に関係なくその候補を1位へ昇格させる方式で解決しました。Google日本語入力の学習に近い動きになります。実装の要点:
updateLearningDataと同じタイミング)に読み(カタカナ)→表記を記録。学習設定が「学習しない」のときは記録・昇格とも無効mainResults内の該当候補を先頭へ移動(ライブ変換のプレビューにも同じ順位が反映される)Zenzaiの文脈適応性と学習の即効性のトレードオフなので設計方針の議論があると思いますが、「同じ読みの直近確定だけは最優先」というルールは副作用が小さく効果が大きかったため共有します。