问题描述
使用 speller/algebra 的双向 derive 开启模糊音后,不同的原始输入会映射到同一词典编码,导致候选词频和用户调频共享。
以 n/l 模糊音为例:
speller/algebra/+:
- derive/^l/n/
- derive/^n/l/
开启后,ne 与 le 会进入同一组候选与学习记录。用户在 ne 下频繁选择的候选,会影响 le 下的候选顺序,反之亦然。
在启用超级简拼时,问题更明显:输入单个 l 时,原本属于 n 声母的高频候选(例如“你”)可能排在 l 声母候选之前。
最小复现
- 使用
script_translator 的拼音方案,并启用超级简拼。
- 添加上述双向
n/l derive 规则。
- 在
n 或 ne 下多次选择某个候选,使其获得较高用户词频。
- 再输入
l 或 le。
实际结果:该候选会因 n/l 模糊映射带来的共享用户词频,在 l / le 的候选中获得相同的高优先级;输入单个 l 时甚至可能排到首位。
预期结果:至少应支持以下任一种行为:
- 原始输入拼写优先:
le 下的原始 l 候选优先于由 n → l 派生的候选;
- 用户调频按原始输入拼写隔离:
ne 与 le 的学习记录不互相影响;
- 或提供可选策略,为派生拼写添加可配置的排序惩罚,避免模糊音候选压过精确匹配候选。
当前限制
现在只能在以下两者之间取舍:
保留双向模糊音,但接受 ne / le 等输入共享词频与排序;
改为单向模糊音或关闭该模糊音,以保留独立调频。
Lua filter 只能在候选生成后重排,无法可靠恢复“该候选是由原拼写还是派生拼写命中”的信息,也无法改变 UserDB 的记录键,因此不能彻底解决。
环境
macOS 26.5.1 (Apple Silicon)
Squirrel 1.1.2
拼音方案:rime-ice(自定义双向 n/l、f/h、前后鼻音模糊音)
使用 Squirrel 内置 librime
问题描述
使用
speller/algebra的双向derive开启模糊音后,不同的原始输入会映射到同一词典编码,导致候选词频和用户调频共享。以
n/l模糊音为例:开启后,
ne与le会进入同一组候选与学习记录。用户在ne下频繁选择的候选,会影响le下的候选顺序,反之亦然。在启用超级简拼时,问题更明显:输入单个
l时,原本属于n声母的高频候选(例如“你”)可能排在l声母候选之前。最小复现
script_translator的拼音方案,并启用超级简拼。n/lderive规则。n或ne下多次选择某个候选,使其获得较高用户词频。l或le。实际结果:该候选会因
n/l模糊映射带来的共享用户词频,在l/le的候选中获得相同的高优先级;输入单个l时甚至可能排到首位。预期结果:至少应支持以下任一种行为:
le下的原始l候选优先于由n → l派生的候选;ne与le的学习记录不互相影响;当前限制
现在只能在以下两者之间取舍:
保留双向模糊音,但接受 ne / le 等输入共享词频与排序;
改为单向模糊音或关闭该模糊音,以保留独立调频。
Lua filter 只能在候选生成后重排,无法可靠恢复“该候选是由原拼写还是派生拼写命中”的信息,也无法改变 UserDB 的记录键,因此不能彻底解决。
环境
macOS 26.5.1 (Apple Silicon)
Squirrel 1.1.2
拼音方案:rime-ice(自定义双向 n/l、f/h、前后鼻音模糊音)
使用 Squirrel 内置 librime