Skip to content

Commit

Permalink
feat: corrector.lua 错音错字提示
Browse files Browse the repository at this point in the history
  • Loading branch information
iDvel committed Aug 6, 2023
1 parent 1c1c005 commit 3ce582e
Show file tree
Hide file tree
Showing 9 changed files with 139 additions and 27 deletions.
55 changes: 32 additions & 23 deletions cn_dicts/others.dict.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@
#
---
name: others
version: "2023-06-13"
version: "2023-08-06"
sort: by_weight
...
##### 容错词
# 「血xue、xie」「谁shui、shei」「露lu、lou」「熟shu、shou」「密钥yao、yue」已在 base 中实现
# ---
# 与 corrector.lua 配合,上面的是正确的,下面是错误的
# 「馄饨」,正确是 tun,北方口语是 dun
馄饨 hun tun
馄饨 hun dun
Expand All @@ -29,31 +28,13 @@ sort: by_weight
比萨饼 pi sa bing
吃比萨 chi bi sa
吃比萨 chi pi sa
超级至尊比萨 chao ji zhi zun bi sa
超级至尊比萨 chao ji zhi zun pi sa
至尊比萨 zhi zun bi sa
至尊比萨 zhi zun pi sa
大西洋珍鲑比萨 da xi yang zhen gui bi sa
大西洋珍鲑比萨 da xi yang zhen gui pi sa
海鲜比萨 hai xian bi sa
海鲜比萨 hai xian pi sa
蔬菜比萨 shu cai bi sa
蔬菜比萨 shu cai pi sa
做比萨 zuo bi sa
做比萨 zuo pi sa
可口的比萨 ke kou de bi sa
可口的比萨 ke kou de pi sa
烤比萨 kao bi sa
烤比萨 kao pi sa
美味的比萨 mei wei de bi sa
美味的比萨 mei wei de pi sa
# 「扑街」,正确是 jie,口语是 gai
扑街 pu jie
扑街 pu gai
街溜子 jie liu zi
街溜子 gai liu zi
扑街仔 pu jie zai
扑街仔 pu gai zai
街溜子 jie liu zi
街溜子 gai liu zi
# 「说服」,正确是 shuo,但「游说」「说客」仍然保留着 shui 的读音
说服 shuo fu
说服 shui fu
Expand All @@ -80,6 +61,8 @@ sort: by_weight
一模一样 yi mo yi yang
装模作样 zhuang mu zuo yang
装模作样 zhuang mo zuo yang
人模狗样 ren mu gou yang
人模狗样 ren mo gou yang
# 「阿房宫」的注音争议比较大
阿房宫 e pang gong
阿房宫 a pang gong
Expand All @@ -99,6 +82,32 @@ sort: by_weight
南无阿弥陀佛 na mo a mi tuo fo
南无阿弥陀佛 nan wu e mi tuo fo
南无阿弥陀佛 nan wu a mi tuo fo
# 其他
给予 ji yu
给予 gei yu
槟榔 bing lang
槟榔 bin lang
张柏芝 zhang bo zhi
张柏芝 zhang bai zhi
藤蔓 teng wan
藤蔓 teng man
弄堂 long tang
弄堂 nong tang
心宽体胖 xin kuan ti pan
心宽体胖 xin kuan ti pang
埋怨 man yuan
埋怨 mai yuan
虚与委蛇 xu yu wei yi
虚与委蛇 xu yu wei she
木讷 mu ne
木讷 mu na
# 错字
曾经 ceng jing
曾今 ceng jin
按捺 an na
按耐 an nai
按捺不住 an na bu zhu
按耐不住 an nai bu zhu


##### 叠字
Expand Down
3 changes: 3 additions & 0 deletions double_pinyin.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ engine:
- lua_translator@unicode # Unicode
- lua_translator@number_translator # 数字、金额大写
filters:
- lua_filter@corrector # 错音错字提示
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- lua_filter@autocap_filter # 英文自动大写
Expand Down Expand Up @@ -114,6 +115,8 @@ reduce_english_filter:
translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
prism: double_pinyin # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
initial_quality: 1.2 # 拼音的权重应该比英文大
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/([bpmnljqxy])n/$1in/
Expand Down
3 changes: 3 additions & 0 deletions double_pinyin_abc.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ engine:
- lua_translator@unicode # Unicode
- lua_translator@number_translator # 数字、金额大写
filters:
- lua_filter@corrector # 错音错字提示
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- lua_filter@autocap_filter # 英文自动大写
Expand Down Expand Up @@ -113,6 +114,8 @@ reduce_english_filter:
translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
prism: double_pinyin_abc # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
initial_quality: 1.2 # 拼音的权重应该比英文大
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/o(\w)/0$1/
Expand Down
3 changes: 3 additions & 0 deletions double_pinyin_flypy.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ engine:
- lua_translator@unicode # Unicode
- lua_translator@number_translator # 数字、金额大写
filters:
- lua_filter@corrector # 错音错字提示
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- lua_filter@autocap_filter # 英文自动大写
Expand Down Expand Up @@ -114,6 +115,8 @@ reduce_english_filter:
translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
prism: double_pinyin_flypy # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
initial_quality: 1.2 # 拼音的权重应该比英文大
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/([bpmfdtnljqx])n/$1iao/
Expand Down
3 changes: 3 additions & 0 deletions double_pinyin_mspy.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ engine:
- lua_translator@unicode # Unicode
- lua_translator@number_translator # 数字、金额大写
filters:
- lua_filter@corrector # 错音错字提示
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- lua_filter@autocap_filter # 英文自动大写
Expand Down Expand Up @@ -114,6 +115,8 @@ reduce_english_filter:
translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
prism: double_pinyin_mspy # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
initial_quality: 1.2 # 拼音的权重应该比英文大
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/([aoe])(\w)/0$2/
Expand Down
3 changes: 3 additions & 0 deletions double_pinyin_ziguang.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ engine:
- lua_translator@unicode # Unicode
- lua_translator@number_translator # 数字、金额大写
filters:
- lua_filter@corrector # 错音错字提示
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- lua_filter@autocap_filter # 英文自动大写
Expand Down Expand Up @@ -114,6 +115,8 @@ reduce_english_filter:
translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
prism: double_pinyin_ziguang # 多方案共用一个词库时,为避免冲突,需要用 prism 指定一个名字。
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
initial_quality: 1.2 # 拼音的权重应该比英文大
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/o(\w)/0$1/ # 零聲母先改爲0,以方便後面的轉換
Expand Down
68 changes: 68 additions & 0 deletions lua/corrector.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
--[[
错音错字提示。
示例:「给予」的正确读音是 ji yu,当用户输入 gei yu 时,在候选项的 comment 显示正确读音
示例:「按耐」的正确写法是「按捺」,当用户输入「按耐」时,在候选项的 comment 显示正确写法
为了让这个 Lua 同时适配全拼与双拼,使用 `spelling_hints` 生成的 comment(全拼拼音)作为通用的判断条件。
--]]

-- 容错词在 cn_dicts/others.dict.yaml
local corrections = {
-- 错音
["hun dun"] = { text = "馄饨", comment = "hun tun" },
["zhu jiao"] = { text = "主角", comment = "zhu jue" },
["jiao se"] = { text = "角色", comment = "jue se" },
["pi sa"] = { text = "比萨", comment = "bi sa" },
["chi pi sa"] = { text = "吃比萨", comment = "chi bi sa" },
["pi sa bing"] = { text = "比萨饼", comment = "bi sa bing" },
["pu gai"] = { text = "扑街", comment = "pu jie" },
["pu gai zai"] = { text = "扑街仔", comment = "pu jie zai" },
["gai liu zi"] = { text = "街溜子", comment = "jie liu zi" },
["shui fu"] = { text = "说服", comment = "shuo fu" },
["zuo ji"] = { text = "坐骑", comment = "zuo qi" },
["yi ji jue chen"] = { text = "一骑绝尘", comment = "yi qi jue chen" },
["yi ji hong chen fei zi xiao"] = { text = "一骑红尘妃子笑", comment = "yi qi hong chen fei zi xiao" },
["qian li zou dan ji"] = { text = "千里走单骑", comment = "qian li zou dan qi" },
["yi ji dang qian"] = { text = "一骑当千", comment = "yi qi dang qian" },
["dao hang"] = { text = "道行", comment = "dao heng" },
["mo yang"] = { text = "模样", comment = "mu yang" },
["you mo you yang"] = { text = "有模有样", comment = "you mu you yang" },
["yi mo yi yang"] = { text = "一模一样", comment = "yi mu yi yang" },
["zhuang mo zuo yang"] = { text = "装模作样", comment = "zhuang mu zuo yang" },
["ren mo gou yang"] = { text = "人模狗样", comment = "ren mu gou yang" },
["a mi tuo fo"] = { text = "阿弥陀佛", comment = "e mi tuo fo" },
["na mo a mi tuo fo"] = { text = "南无阿弥陀佛", comment = "na mo e mi tuo fo" },
["nan wu a mi tuo fo"] = { text = "南无阿弥陀佛", comment = "na mo e mi tuo fo" },
["nan wu e mi tuo fo"] = { text = "南无阿弥陀佛", comment = "na mo e mi tuo fo" },
["gei yu"] = { text = "给予", comment = "ji yu" },
["bin lang"] = { text = "槟榔", comment = "bing lang" },
["zhang bai zhi"] = { text = "张柏芝", comment = "zhang bo zhi" },
["teng man"] = { text = "藤蔓", comment = "teng wan" },
["nong tang"] = { text = "弄堂", comment = "long tang" },
["xin kuan ti pang"] = { text = "心宽体胖", comment = "xin kuan ti pan" },
["mai yuan"] = { text = "埋怨", comment = "man yuan" },
["xu yu wei she"] = { text = "虚与委蛇", comment = "xu yu wei yi" },
["mu na"] = { text = "木讷", comment = "mu ne" },
-- 错字
["ceng jin"] = { text = "曾今", comment = "曾经" },
["an nai"] = { text = "按耐", comment = "按捺(na)" },
["an nai bu zhu"] = { text = "按耐不住", comment = "按捺(na)不住" },
["sheng di ya ge"] = { text = "圣地亚哥", comment = "圣迭戈" },
["bie jie"] = { text = "别介", comment = "别价" },
["beng jie"] = { text = "甭介", comment = "甭价" },
}

local function corrector(input)
for cand in input:iter() do
-- cand.comment 是目前输入的词汇的完整拼音
local c = corrections[cand.comment]
if c and cand.text == c.text then
cand:get_genuine().comment = c.comment
else
cand:get_genuine().comment = ""
end
yield(cand)
end
end

return corrector
25 changes: 21 additions & 4 deletions rime.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
-- Rime Lua 扩展 https://github.com/hchunhui/librime-lua
-- 文档 https://github.com/hchunhui/librime-lua/wiki/Scripting

-- v 模式 symbols 优先(全拼)
v_filter = require("v_filter")


-- processors:

-- 以词定字,可在 default.yaml key_binder 下配置快捷键,默认为左右中括号 [ ]
select_character = require("select_character")



-- translators:

-- 日期时间,可在方案中配置触发关键字。
date_translator = require("date_translator")

Expand All @@ -16,18 +21,30 @@ unicode = require("unicode")
-- 数字、人民币大写,R 开头
number_translator = require("number_translator")



-- filters:

-- 错音错字提示
corrector = require("corrector")

-- v 模式 symbols 优先(全拼)
v_filter = require("v_filter")

-- 自动大写英文词汇
autocap_filter = require("autocap_filter")

-- 降低部分英语单词在候选项的位置,可在方案中配置要降低的单词
reduce_english_filter = require("reduce_english_filter")




-- 默认未启用:

-- 长词优先(全拼)
-- 在 engine/filters 增加 - lua_filter@long_word_filter
-- 在方案里写配置项:
-- 在方案里写配置项:
-- 提升 count 个词语,插入到第 idx 个位置。
-- 示例:将 2 个词插入到第 4、5 个候选项,输入 jie 得到「1接 2解 3姐 4饥饿 5极恶」
-- long_word_filter:
Expand All @@ -43,7 +60,7 @@ cn_en_spacer = require("cn_en_spacer")
-- 在 engine/filters 增加 - lua_filter@t9_preedit
t9_preedit = require("t9_preedit")

-- 根据是否在用户词典,在结尾加上一个星号 *
-- 根据是否在用户词典,在 comment 上加上一个星号 *
-- 在 engine/filters 增加 - lua_filter@is_in_user_dict
-- 在方案里写配置项:
-- is_in_user_dict: true 为输入过的内容加星号
Expand Down
3 changes: 3 additions & 0 deletions rime_ice.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ engine:
- lua_translator@unicode # Unicode
- lua_translator@number_translator # 数字、金额大写
filters:
- lua_filter@corrector # 错音错字提示
- simplifier@emoji # Emoji
- simplifier@traditionalize # 简繁切换
- lua_filter@v_filter # v 模式 symbols 优先(否则是英文优先)
Expand Down Expand Up @@ -103,6 +104,8 @@ reduce_english_filter:
# 主翻译器,拼音
translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml
spelling_hints: 8 # corrector.lua :为了让错音错字提示的 Lua 同时适配全拼双拼,将拼音显示在 comment 中
always_show_comments: true # corrector.lua :Rime 默认在 preedit 等于 comment 时取消显示 comment,这里强制一直显示,供 corrector.lua 做判断用。
initial_quality: 1.2 # 拼音的权重应该比英文大
preedit_format: # preedit_format 影响到输入框的显示和“Shift+回车”上屏的字符
- xform/([jqxy])v/$1u/ # 显示为 ju qu xu yu
Expand Down

0 comments on commit 3ce582e

Please sign in to comment.