Skip to content

[Feature Request] 模糊音 derive 应支持区分原始输入拼写的候选排序与用户调频 #1155

Description

@vividfish

问题描述

使用 speller/algebra 的双向 derive 开启模糊音后,不同的原始输入会映射到同一词典编码,导致候选词频和用户调频共享。

n/l 模糊音为例:

speller/algebra/+:
  - derive/^l/n/
  - derive/^n/l/

开启后,nele 会进入同一组候选与学习记录。用户在 ne 下频繁选择的候选,会影响 le 下的候选顺序,反之亦然。

在启用超级简拼时,问题更明显:输入单个 l 时,原本属于 n 声母的高频候选(例如“你”)可能排在 l 声母候选之前。

最小复现

  1. 使用 script_translator 的拼音方案,并启用超级简拼。
  2. 添加上述双向 n/l derive 规则。
  3. nne 下多次选择某个候选,使其获得较高用户词频。
  4. 再输入 lle

实际结果:该候选会因 n/l 模糊映射带来的共享用户词频,在 l / le 的候选中获得相同的高优先级;输入单个 l 时甚至可能排到首位。

预期结果:至少应支持以下任一种行为:

  • 原始输入拼写优先:le 下的原始 l 候选优先于由 n → l 派生的候选;
  • 用户调频按原始输入拼写隔离:nele 的学习记录不互相影响;
  • 或提供可选策略,为派生拼写添加可配置的排序惩罚,避免模糊音候选压过精确匹配候选。

当前限制

现在只能在以下两者之间取舍:

保留双向模糊音,但接受 ne / le 等输入共享词频与排序;

改为单向模糊音或关闭该模糊音,以保留独立调频。

Lua filter 只能在候选生成后重排,无法可靠恢复“该候选是由原拼写还是派生拼写命中”的信息,也无法改变 UserDB 的记录键,因此不能彻底解决。

环境

macOS 26.5.1 (Apple Silicon)

Squirrel 1.1.2

拼音方案:rime-ice(自定义双向 n/l、f/h、前后鼻音模糊音)

使用 Squirrel 内置 librime

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions