跳转至

Context Reorder:上下文调频

context_reorder.lua 只调整现有候选顺序,不生成联想词,也不会拆分上屏文本造新词。

当前主要提供三个功能:

  1. 上下文调频
  2. 数字后量词调频
  3. 回头码掉头

1. 上下文调频

模块会根据真实上屏内容学习:

1-Gram:上一个词 → 当前词
2-Gram:前两个词 → 当前词

例如连续上屏:

今天
天气
不错

会形成类似:

今天 → 天气
今天 + 天气 → 不错

以后再次出现相同上文时,如果对应词本来就在当前正常候选中,就会根据历史次数提前。

学习范围

只学习真实上屏的纯中文词或短语,并且新记录必须来自当前候选组。

允许参与调频的候选类型:

phrase
user_phrase

不会:

  • 拆分长词或句子造新词
  • 记录候选列表中不存在的陌生组合
  • 生成额外预测候选

当前每轮最多预读同编码候选前 100 项;同一候选组最多新增 10 个上下文分支。已有记录不受这个新增上限影响。

上下文有效时间

默认:

context_reorder:
  context_timeout: 5000

单位为毫秒。两次真实上屏间隔超过该时间后,旧上下文不再继续参与下一次学习。


2. 数字后量词调频

直接输入数字后,再输入量词对应编码时,量词可以优先显示。

例如:

1
jin

候选中如果存在:

则会优先提升。

默认内置常见量词,也可以自行配置:

context_reorder:
  custom_classifiers:
    - 个只名位口头匹条群批伙
    - 张把件台部块根颗粒滴片
    - 年月天周岁秒分刻代期届任
    - 米寸尺里斤两吨克升元角毛

如果需要关闭量词调频:

context_reorder:
  custom_classifiers: []

3. 回头码掉头

当输入一串编码后连续退格,再重新输入到刚才的完整编码时,可以交换当前同段前两个合法候选。

例如原来:

1. A
2. B

回删后重新打回相同编码,可以变成:

1. B
2. A

配置:

context_reorder:
  enable_fallback_reorder: true

关闭:

context_reorder:
  enable_fallback_reorder: false

该功能只交换前两个正常候选,不建立额外 Candidate 缓存。


删除与撤销

删除某条上下文调频记录

在候选菜单中选中需要删除的正常候选,然后使用当前 Rime 前端提供的原生“删除 / 忘记候选”操作。

桌面端可使用前端原生删词快捷键;移动端可使用候选菜单中的删除功能。

Lua 通过 delete_notifier 接收删除事件,只清除 context_reorder 自己对该词的上下文加权,不主动删除原词库中的候选。

删除后的记录使用负 c 作为墓碑,因此该词会失去当前上下文调频权重。

上屏后立即退格

如果刚刚上屏后立刻按 BackSpace,并且还在 context_timeout 时间内,模块会回滚这次上屏刚写入的 1-Gram / 2-Gram 记录。

这只撤销本次上下文学习,不负责删除原词库内容。


常用配置

context_reorder:
  # 上下文有效时间,毫秒
  context_timeout: 5000

  # 回头码首二候选交换
  enable_fallback_reorder: true

  # 数字后量词列表;设为 [] 可关闭
  custom_classifiers:
    - 个只名位口头匹条群批伙
    - 张把件台部块根颗粒滴片
    - 年月天周岁秒分刻代期届任
    - 米寸尺里斤两吨克升元角毛