Skip to content

[BUG] 文節を分けて変換した場合、全体の結果が学習されない #811

@tgw314

Description

@tgw314

バグの内容

文節を分けて変換した場合に、各文節の結果のみが学習され、その文字列全体の結果が学習されない

再現手順

パターンA: 全体が学習されない

  1. しうんすみか を入力し、変換ボタンを押す
  2. 文節の範囲を移動させ、各文節を 紫雲/清/夏 に変換して確定
  3. 再び しうんすみか と入力して変換
  4. 紫雲清夏 が候補に出ない (紫雲 は個別に学習されているため、それぞれの読みでは候補に出る)

パターンB: 途中までしか学習されない

  1. しうんすみか を入力 (変換ボタンは押さない)
  2. 予測変換で 紫雲 (部分変換) をタップして確定
  3. ここで文節の範囲を移動させ、すみ/か をそれぞれ 清/夏 に変換
  4. その後 しうんすみ と入力
  5. 紫雲清 が候補に出る(これは学習されている)
  6. しかし しうんすみか と入力しても 紫雲清夏 は出ない

期待する動作

文節を分けて変換して確定した場合でも、次回入力時に候補として表示される

スクリーンショット

省略

スマートフォン環境(以下を記入してください)

  • デバイス: POCO F6
  • OS: Android 16 (AOSP ベース)
  • アプリのバージョン: 766(1.7.73)

追加のコンテキスト

自分の設定ミスではないか不安だったので AI に調べさせた結果です
ご参考程度に…

handleExactLengthMatch では LearnMultiple を使って複数文節の連続確定を蓄積学習できますが、この機構は通常変換パスでのみ動作します。
文節カーソル移動モード(handleBunsetsuCandidateClickcommitBunsetsuConversionUntilFocusedSegment)では:

  • learnMultiple.start() が呼ばれず、蓄積機構が利用されない
  • commitBunsetsuConversionUntilFocusedSegment 内で learnMultiple.stop() が無条件で呼ばれる(IMEService.kt 15267行目)
  • commitBunsetsuConversionSession() でも全体の学習処理は呼ばれていない
    そのため、文節分け変換では個別文節のみが学習され、全体としての学習が行われていないようです。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions