feat: pin_cand_filter.lua 置顶候选项 #586

This commit is contained in:
Dvel 2024-02-01 00:30:17 +08:00
parent d3c47e922d
commit 86ebf99f4f
11 changed files with 447 additions and 202 deletions

View File

@ -3,50 +3,29 @@
#@/db_name custom_phrase.txt #@/db_name custom_phrase.txt
#@/db_type tabledb #@/db_type tabledb
# #
# 自定义文本 # 自定义短语
# 适用于全拼。 # 可为方案增加一些要置顶的词汇及短语,编码可以随便起,不限于拼音,例如邮箱、手机号、常用短语等等。
# 双拼默认为 custom_phrase_double.txt 需要手动创建,并更改上面的 db_name 为 custom_phrase_double.txt #
# 适用于全拼。双拼默认为 custom_phrase_double.txt 需要手动创建,并更改上面的 db_name 为 custom_phrase_double.txt
# #
# 以下固定的词汇及顺序纯属个人偏好,仅作示例, # 以下固定的词汇及顺序纯属个人偏好,仅作示例,
# 可以增加自己的 .txt 文件,并在方案的 custom_phrase/user_dict 指定为自己的文件。 # 可以增加自己的 .txt 文件,并在方案的 custom_phrase/user_dict 指定为自己的文件。
# #
# 以 Tab 分割:汉字<Tab>编码<Tab>权重 # 以 Tab 分割:词汇<Tab>编码<Tab>权重
# #
# 这个文件内的字词会占据最高权重(即排在候选项的最前面,因为指定了高权重 custom_phrase/initial_quality: 99 # 这个文件内的字词会占据最高权重(即排在候选项的最前面,因为指定了高权重 custom_phrase/initial_quality: 99
# 但不与其他翻译器互相造词,如果使用了完整编码,那么这个字或词将无法参与造词,即自造词无法被记住。 # 但不与其他翻译器互相造词,如果使用了完整编码,那么这个字或词将无法参与造词,即自造词无法被记住。
# 所以建议只固定非完整编码的字词「的de」应为「的d」「是shi」应为「是s」「仙剑xianjian」应为「仙剑xj」。 # 所以只建议固定非完整拼音的编码,如果需求是置顶指定拼音的候选项,请参考方案中的 pin_cand_filter。
# 也不要写 a e o因为这三个本身就是完整编码写了则无法参与造词。
# #
# 最下面的英文是因为一些常用单词的第一候选项被纠错覆盖了, # 最下面的英文是因为一些常用单词的第一候选项被纠错覆盖了,如 Amazon 被纠错为「a ma zong 阿妈粽」,期望的 Amazon 跑到第二个候选项了,所以这里给它固定死喽。
# 比如 Amazon 被纠错为「a ma zong 阿妈粽」,
# 期望的 Amazon 跑到第二个候选项了,所以这里给它固定死喽。
# #
# version: "2023-11-13" # version: "2024-02-01"
# #
# 此行之后不能写注释 # 此行之后不能写注释
噷 hm 噷 hm
哼 hng 哼 hng
去 q 2
千 q 1
我 w 3
万 w 2
往 w 1
儿 r
他 t 4
她 t 3
它 t 2
祂 t 1
与 y 2
于 y 1
有 u 3 有 u 3
又 u 2 又 u 2
由 u 1 由 u 1
@ -56,122 +35,6 @@
已 i 2 已 i 2
亦 i 1 亦 i 1
片 p 2
篇 p 1
是 s 4
时 s 3
使 s 2
式 s 1
的 d 3
地 d 2
得 d 1
发 f 2
分 f 1
个 g
和 h 2
或 h 1
及 j 5
将 j 4
即 j 3
既 j 2
继 j 1
可 k
了 l 4
啦 l 3
喽 l 2
嘞 l 1
在 z 3
再 z 2
自 z 1
想 x 3
像 x 2
向 x 1
才 c 2
从 c 1
吧 b 3
百 b 2
呗 b 1
那 n 4
哪 n 3
拿 n 2
呐 n 1
吗 m 3
嘛 m 2
呣 m 1
我们 wm
我们 wom
我们 wmen
你们 nm
你们 nim
你们 nmen
人们 rm
人们 renm
人们 rmen
他的 td 3
她的 td 2
它的 td 1
他的 tad 3
她的 tad 2
它的 tad 1
他的 tde 3
她的 tde 2
它的 tde 1
他们 tm 3
她们 tm 2
它们 tm 1
他们 tam 3
她们 tam 2
它们 tam 1
他们 tmen 3
她们 tmen 2
它们 tmen 1
那儿 nr 2
哪儿 nr 1
那儿 nar 2
哪儿 nar 1
那个 ng 2
哪个 ng 1
那个 nag 2
哪个 nag 1
那些 nx 2
哪些 nx 1
那些 nax 2
哪些 nax 1
那里 nl 2
哪里 nl 1
那里 nal 2
哪里 nal 1
那边 nb 2
哪边 nb 1
那边 nab 2
哪边 nab 1
那位 nw 2
哪位 nw 1
那位 naw 2
哪位 naw 1
这 zh
一个 ig 一个 ig
有个 ug 有个 ug
是一个 sig 是一个 sig
@ -184,35 +47,6 @@
又又又 uuu 又又又 uuu
又双叒叕 uuuu 又双叒叕 uuuu
等等 dd
的地得 ddd
等等等等 dddd
刚刚 gg
才刚刚 cgg
知道 zd
不知道 bzd
往往 ww
哈哈 hh
看看 kk
常常 cc
想想 xx 2
想象 xx 1
隐约 yy
因为 yw
什么 sm
所以 sy
为什么 wsm
是不是 sbs
没什么 msm
有时候 ysh
有时候 yshh
有时候 yshou
什么的 smd
什么是 sms
什么啊 sma
go go go go
Golang golang Golang golang
Hugo hugo Hugo hugo

View File

@ -87,6 +87,7 @@ engine:
- lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@search@radical_pinyin # 部件拆字辅码
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -148,6 +149,42 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
# # ⚠️ 双拼
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台don't know why ...
- d 的
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml

View File

@ -87,6 +87,7 @@ engine:
- lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@search@radical_pinyin # 部件拆字辅码
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -148,6 +149,42 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
# # ⚠️ 双拼
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台don't know why ...
- d 的
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml

View File

@ -87,6 +87,7 @@ engine:
- lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@search@radical_pinyin # 部件拆字辅码
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -148,6 +149,42 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
# # ⚠️ 双拼
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台don't know why ...
- d 的
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml

View File

@ -87,6 +87,7 @@ engine:
- lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@search@radical_pinyin # 部件拆字辅码
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -148,6 +149,42 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
# # ⚠️ 双拼
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台don't know why ...
- d 的
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml

View File

@ -87,6 +87,7 @@ engine:
- lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@search@radical_pinyin # 部件拆字辅码
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -148,6 +149,42 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
# # ⚠️ 双拼
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台don't know why ...
- d 的
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml

View File

@ -87,6 +87,7 @@ engine:
- lua_filter@search@radical_pinyin # 部件拆字辅码 - lua_filter@search@radical_pinyin # 部件拆字辅码
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -148,6 +149,42 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
# # ⚠️ 双拼
# - 'chong zhuang 重装' # 保留现有的 preedit_format 时可用全拼
# - 'is vl 重装' # 清空 preedit_format 时要用双拼拼写(示例为小鹤的)
# 如果有任意一个方案的 pin_cand_filter 为空则可能会在方案间串台don't know why ...
- d 的
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml

View File

@ -1,4 +1,5 @@
-- 置顶候选项 -- 置顶候选项
-- Powered By ChatGPT
local function isInList(list, str) local function isInList(list, str)
for i, v in ipairs(list) do for i, v in ipairs(list) do
@ -12,39 +13,105 @@ end
local M = {} local M = {}
function M.init(env) function M.init(env)
local config = env.engine.schema.config
env.name_space = env.name_space:gsub("^*", "") env.name_space = env.name_space:gsub("^*", "")
local list = env.engine.schema.config:get_list(env.name_space)
-- 如果定义了 'da zhuan' 或 'da zhong' ,会自动生成 'da z' 和 'da zh'。
-- 然而,如果明确定义了 'da z' 或 'da zh',则会优先使用这些明确自定义的简码,用 set 来做判断。
local set = {}
for i = 0, list.size - 1 do
local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)")
if preedit and texts then
set[preedit] = true
end
end
-- 遍历要置顶的候选项列表,将其转换为 table 存储到 M.pin_cands -- 遍历要置顶的候选项列表,将其转换为 table 存储到 M.pin_cands
-- 'ta 他 她 它' → M.pin_cands["ta"] = {"他", "她", "它"}, -- 'l 了 啦' → M.pin_cands["l"] = {"了", "啦"}
-- 'ta 他 她 它' → M.pin_cands["ta"] = {"他", "她", "它"}
--
-- 对于词汇preedit 包含空格),同时生成简码的拼写(最后一个空格后的首字母),如:
-- 'ni hao 你好 拟好' → M.pin_cands["ni hao"] = {"你好", "拟好"} -- 'ni hao 你好 拟好' → M.pin_cands["ni hao"] = {"你好", "拟好"}
local list = config:get_list(env.name_space) -- → M.pin_cands["ni h"] = {"你好", "拟好"}
--
-- 如果最后一个空格后以 zh ch sh 开头,额外再生成 zh, ch, sh 的拼写,如:
-- 'zhi chi 支持' → M.pin_cands["zhi chi"] = {"支持"}
-- → M.pin_cands["zhi c"] = {"支持"}
-- → M.pin_cands["zhi ch"] = {"支持"}
--
-- 如果同时定义了 'da zhuan 大专' 'da zhong 大众',会生成:
-- M.pin_cands["da zhuan"] = {"大专"}
-- M.pin_cands["da zhong"] = {"大众"}
-- M.pin_cands["da z"] = {"大专", "大众"} -- 先写的排在前面
-- M.pin_cands["da zh"] = {"大专", "大众"} -- 先写的排在前面
--
-- 如果同时定义了 'da zhuan 大专' 'da zhong 大众' 且明确定义了简码形式 'da z 打字',会生成:
-- M.pin_cands["da zhuan"] = {"大专"}
-- M.pin_cands["da zhong"] = {"大众"}
-- M.pin_cands["da z"] = {"打字"} -- 明确定义的优先级更高
-- M.pin_cands["da zh"] = {"大专", "大众"} -- 没明确定义的,仍然按上面的方式生成
M.pin_cands = {} M.pin_cands = {}
for i = 0, list.size - 1 do for i = 0, list.size - 1 do
local code, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)") local preedit, texts = list:get_value_at(i).value:match("([^\t]+)\t(.+)")
if code and texts then if preedit and texts then
M.pin_cands[code] = {} M.pin_cands[preedit] = {}
-- 按照配置生成完整的拼写
for text in texts:gmatch("%S+") do for text in texts:gmatch("%S+") do
table.insert(M.pin_cands[code], text) table.insert(M.pin_cands[preedit], text)
end
-- 额外处理包含空格的 preedit增加最后一个拼音的首字母和 zh, ch, sh 的简码
if preedit:find(" ") then
local preceding_part, last_part = preedit:match("^(.+)%s(%S+)$")
if last_part then
-- 生成最后一个拼音的简码拼写(最后一个空格后的首字母),如 ni hao 生成 ni h
local p1 = preceding_part .. " " .. last_part:sub(1, 1)
-- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值
if not set[p1] then
if M.pin_cands[p1] ~= nil then
for text in texts:gmatch("%S+") do
table.insert(M.pin_cands[p1], text)
end
else
M.pin_cands[p1] = M.pin_cands[preedit]
end
end
-- 生成最后一个拼音的 zh, ch, sh 的简码拼写(最后一个空格后以 zh ch sh 开头),如 zhi chi 生成 zhi ch
-- if last_part:match("^(zh|ch|sh)") then -- 😰 ChatGPT 诚欺我
if last_part:match("^zh") or last_part:match("^ch") or last_part:match("^sh") then
local p2 = preceding_part .. " " .. last_part:sub(1, 2)
-- 只在没有明确定义此简码时才生成,已有的追加,没有的直接赋值
if not set[p2] then
if M.pin_cands[p2] ~= nil then
for text in texts:gmatch("%S+") do
table.insert(M.pin_cands[p2], text)
end
else
M.pin_cands[p2] = M.pin_cands[preedit]
end
end
end
end
end end
end end
end end
end end
function M.func(input) function M.func(input)
local pined = {} local pined = {} -- 提升的候选项
local others = {} local others = {} -- 其余候选项
local pined_count = 0 local pined_count = 0
for cand in input:iter() do for cand in input:iter() do
local pins = M.pin_cands[cand.preedit] local texts = M.pin_cands[cand.preedit]
if pins then if texts then
-- 给 pined 几个空字符串占位元素,后面直接 pined[idx] = cand 确保 pined 与 pins 顺序一致 -- 给 pined 几个空字符串占位元素,后面直接 pined[idx] = cand 确保 pined 与 texts 顺序一致
if #pined < #pins then if #pined < #texts then
for _ = 1, #pins do for _ = 1, #texts do
table.insert(pined, '') table.insert(pined, '')
end end
end end
-- 要置顶的放到 pined 中,其余的放到 others -- 要置顶的放到 pined 中,其余的放到 others
local ok, idx = isInList(pins, cand.text) local ok, idx = isInList(texts, cand.text)
if ok then if ok then
pined[idx] = cand pined[idx] = cand
pined_count = pined_count + 1 pined_count = pined_count + 1
@ -52,7 +119,7 @@ function M.func(input)
table.insert(others, cand) table.insert(others, cand)
end end
-- 找齐了或者 others 太大了,就不找了,一般前 5 个就找完了 -- 找齐了或者 others 太大了,就不找了,一般前 5 个就找完了
if pined_count == #pins or #others > 50 then if pined_count == #texts or #others > 50 then
break break
end end
else else

View File

@ -4,6 +4,10 @@
## 2024-02-01 🆕
🆕 `pin_cand_filter.lua` 置顶候选项 [#586](https://github.com/iDvel/rime-ice/issues/586)
## 2024-01-29 🆕 ⚠️ ## 2024-01-29 🆕 ⚠️
🆕 [部件拆字方案](https://github.com/mirtlecn/rime-radical-pinyin) 反查、辅码 ([#643](https://github.com/iDvel/rime-ice/pull/643)) 🆕 [部件拆字方案](https://github.com/mirtlecn/rime-radical-pinyin) 反查、辅码 ([#643](https://github.com/iDvel/rime-ice/pull/643))

View File

@ -41,19 +41,11 @@ reduce_english_filter = require("reduce_english_filter")
-- 辅码https://github.com/mirtlecn/rime-radical-pinyin/blob/master/search.lua.md -- 辅码https://github.com/mirtlecn/rime-radical-pinyin/blob/master/search.lua.md
search = require("search") search = require("search")
-- 默认未启用: -- 置顶候选项
-- 词条置顶
-- 满足左边的 cand.preedit 时,将右边的 cand 按顺序置顶。
-- 在 engine/filters 增加 - lua_filter@pin_cand_filter
-- 在方案里写配置项:
-- pin_cand_filter:
-- - "l 了"
-- - "le 了"
-- - "ta 他 她 它"
-- - "ni hao 你好 拟好"
pin_cand_filter = require("pin_cand_filter") pin_cand_filter = require("pin_cand_filter")
-- 默认未启用:
-- 长词优先(全拼) -- 长词优先(全拼)
-- 在 engine/filters 增加 - lua_filter@long_word_filter -- 在 engine/filters 增加 - lua_filter@long_word_filter
-- 在方案里写配置项: -- 在方案里写配置项:

View File

@ -6,7 +6,7 @@
schema: schema:
schema_id: rime_ice schema_id: rime_ice
name: 雾凇拼音 name: 雾凇拼音
version: "2024-01-30" version: "2024-02-01"
author: author:
- Dvel - Dvel
description: | description: |
@ -76,6 +76,7 @@ engine:
- lua_filter@v_filter # v 模式 symbols 优先(否则是英文优先) - lua_filter@v_filter # v 模式 symbols 优先(否则是英文优先)
- lua_filter@autocap_filter # 英文自动大写 - lua_filter@autocap_filter # 英文自动大写
- lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置 - lua_filter@reduce_english_filter # 降低部分英语单词在候选项的位置
- lua_filter@pin_cand_filter # 置顶候选项
- uniquifier # 去重 - uniquifier # 去重
@ -137,6 +138,131 @@ reduce_english_filter:
yan, yen] yan, yen]
# Lua 配置: 置顶候选项
# 符合左边的 cand.preedit 时,按顺序置顶右边的候选项。只是提升已有候选项的顺序,没有自创编码的功能。
# (对简繁转换无效,除非简繁文字一致 😰)
#
# preedit 是经过 translator/preedit_format 处理后的编码,如果是词语则包含空格。
# ⚠️ 注意方案的 preedit_format 设定,如果 v 显示为 ü,那么左边也要写 ü
# ⚠️ 双拼 ⚠️ 显示为全拼拼写就要写全拼,如 'shuang pin',显示为双拼拼写就要写双拼,如 'ul pb' 😰
#
# 脚本自动额外生成 preedit 中最后一个空格后面的首字母和 zh ch sh
# 如 'ni hao' 会自动生成 'ni hao'、'ni h'
# 如 'bu hao chi' 会自动生成 'bu hao chi'、'bu hao c'、'bu hao ch'
# 如果同时写了 da zhuan 和 da zhong输入 da z 时,排在前面的的优先,除非明确指定 'da z'。
pin_cand_filter:
# 格式:编码<Tab>字词1<Space>字词2……
# 示例:
# - 'le 了' # 输入 le 时,置顶「了」
# - 'la 啦' # 输入 la 时,置顶「啦」
# - 'ta 他 她 它' # 可以置顶多个字,按顺序排列
# - 'ta 啊' # ❌ 编码不会产生的字词,不会生效且影响查找效率。自创编码的字词句可以写到 custom_phrase 中。
# - 'l 了 啦' # 支持单编码或输入到一半的编码,输入 l 时,置顶「了、啦」
# - 's m 什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'w s m 为什么' # 支持简拼,要和输入框的行为一致,有空格加空格
# - 'ni hao 你好 👋 拟好' # 如果 emoji 被分割开了,可以任意调整 emoji 的位置
# # 以下两行,会额外生成 'da z' 'da zh' 的置顶,前两个候选项是「大专、大众」,先写的排在前面
# - da zhuang 大专
# - da zhong 大众
# # 如果明确定义了简码形式,则完全使用简码形式
# - da z 打字
# - da zh 打仗
#
# ⚙️ 以下是个人习惯,仅供参考,可以打个补丁来覆盖。
# 单编码
- q 去 千
- w 我 万 往
- e 呃
- r 让 人
- t 他 她 它 祂
- y 与 于
# - u 在 custom_phrase 置顶
# - i 在 custom_phrase 置顶
- o 哦
- p 片 篇
- a 啊
- s 是 时 使 式
- d 的 地 得
- f 发 放 分
- g 个 各
- h 和 或
- j 及 将 即 既 继
- k 可
- l 了 啦 喽 嘞
- z 在 再 自
- x 想 像 向
- c 才 从
# - v
- b 吧 把 呗 百
- n 那 哪 拿 呐
- m 吗 嘛 呣
# 单字
- de 的 地 得
- na 那 哪 拿
- ta 他 她 它 祂
- er 而 儿 二
- ma 吗 嘛 妈
- zhe 这 着
- hai 还
- you 有 🈶 又 由
- mei 没
- bing 并
- tong 同
- yu 与 于
- he 和
- ji 及 即 既
- shi 是 时
- la 啦 拉
- xing 行
- dian 点
- yao 要
- kan 看
- bei 被
- zuo 做
- dao 到 倒
- xiang 想 像 向
- zhi 只
- cai 才
- gang 刚
- jiu 就
# ta、na
- ta de 他的 她的 它的
- 'tad 他的 她的 它的' # 英文单词 tad 造成 preedit 为 tad从而让 ta d 的置顶未生效,需要明确再写上 tad
- ta men 他们 她们 它们
- ta men de 他们的 她们的 它们的
- na er 那儿 哪儿
- na ge 那个 哪个
- na xie 那些 哪些
- na li 那里 哪里
- na bian 那边 哪边
- na bian er 那边儿 哪边儿
- na wei 那位 哪位
# 简码
- zh 这
- d d 等等
- 'dd 等等' # 覆盖英文单词 D&D
- d d d d 等等等等
- g g 刚刚
- c g g 才刚刚
- z d 知道
- b z d 不知道
- w w 往往
- h h 哈哈
- k k 看看
- c c 常常
- x x 想想 🤔 想象
- y w 因为
- s m 什么
- w s m 为什么
- s b s 是不是
- m s m 没什么
- s m d 什么的
- s m s 什么是
- 'sms 什么是' # 覆盖英文单词 SMS
- s m a 什么啊
- 'sma 什么啊' # 覆盖英文单词 S码
# 主翻译器,拼音 # 主翻译器,拼音
translator: translator:
dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml dictionary: rime_ice # 挂载词库 rime_ice.dict.yaml