
青简拼写纠错原理错敲一两个字母照样出候选还会记住你的习惯性手误【免费下载链接】qingjian青简 Qingjian用 Rust 写的拼音输入法候选词旁多一条正在学的语言的译词项目地址: https://gitcode.com/gh_mirrors/qi/qingjian青简 Qingjian 是一款用 Rust 编写的拼音输入法除了候选词旁带译词它还内置了一套拼写纠错引擎打拼音时错敲一两个字母照样能出正确候选而且用多了它连你的习惯性手误都能记住。 一句话原理把「敲错的串」当成「带噪信号」青简把拼写纠错建模成一个噪声信道问题见 correction/mod.rs你敲出来的字母串是「带噪」的原串每个候选纠正都要付出一次「编辑代价」扣分只有纠正后的整句得分明显高于原样才会真正纠正你说得通的原样解释永远优先合法的简拼nhao和英文词hello不会被误纠。这套判断逻辑的核心在 engine/correcting.rs。 两种纠错各管一段青简把纠错拆成了互补的两条路覆盖不同的错误场景第一种整段一处编辑 —— 拼音切不干净时当你敲的串没法完整切成拼音多输、少输、颠倒、换错一个字母时触发你敲的纠正为上屏nihoomani hao ma你好吗woxiagnquwo xiang qu我想去mingtainming tian明天实现方式是枚举四类编辑操作correction/edit.rs生成所有「只差一步」的变体再交给切分器验证编辑类型含义例子Transpose换位相邻两键敲反shou→shuoSubstitute换键敲到别的键mi→niExtra多敲多了一个字母gang→ganMissing少敲漏了一个字母gan→guan细节很讲究拼音行会把被改动的字母打上删除线并保留原位让你看得到它动了哪里相邻换位不用等词打完整mignt、migntia已经按mingt…给出「明天」敲反两个键的人多半还在继续敲等打完再纠就晚了一拍两种解释都说得通时优先按换位解释mignti→ 命题而不是换字母的「面体」。第二种音节级敲错边 —— 每个音节都合法、整句却不通比如meiganximeiganxi每个都是合法音节但「没感细」不通顺。这时纠错作用在整句层词图里每个音节除了按原样查词还会把它的一键之差变体也当作带代价的边查一遍见 correction/typo/mod.rs于是gan被读作guan整句转出「没关系」。这一路的变体表在启动时按音节表预计算好每个音节几十个变体全部音节几千条查询时零开销。换键只算键盘上物理相邻的键QWERTY 三排含上下排错位挨着g与h相邻、g与d不相邻误纠率因此很低。⚖️ 代价怎么定宁可不纠不可乱纠所有扣分数值收在一处correction/costs.rs换位与换键最常见代价各 5.0换位比换键便宜 1.0一个位置只有一种换法却有七八个相邻键可以换错多敲、少敲稍贵各 5.5整段纠错门槛 5.0相当于「敲错一个键」的先验约 1/150——纠正后的句子必须比原样好出这么多才纠。还有一圈护栏engine/correcting.rs少于 4 个字母不纠短串一处编辑几乎总能凑出别的合法拼音误纠比不纠更烦超过 24 个字母不纠变体随长度线性涨且这么长多半是整句简拼整段能对上英文词库的hello不纠别把英文「纠」成「喝了哦」「删掉刚敲的最后一个字母」不算纠正你多半还没敲完尾巴留着等下一键。 它怎么记住你的习惯性手误这是青简纠错最有意思的部分由学习器engine/learning/learner.rs里的个人敲错表实现你把某处纠正接受上屏比如把敲的shou当成shuo选上了「说」这一对 (敲的, 要的) 音节就被记下来一次以后遇到同样的敲错这条纠正边的代价会打折折扣 min(ln(1 接受次数), 3.0)见 TypoCosts::discounted折扣有上限discount_cap再熟也要保留一点门槛敲错的解释仍要比原样好才排得上来防止把常用词从真正的生僻词手里抢走几次之后习惯把shuo输成shou的用户「我说」会自然排到前面。撤销也很干净用Backspace删除后改选会一并撤销对应的敲错记录。 什么时候它不开口回车原样上屏过的串不再纠Enter会把所敲字母原样上屏之后这个串被记成「不纠」双拼下不启用错一个键改变的是整个声母或韵母单处编辑的模型不适用五笔形码下不启用敲的是字根编码不是拼音。 延伸阅读用户向说明拼写纠错纠错模块总览correction/mod.rs编辑操作定义与变体枚举correction/edit.rs代价与折扣参数correction/costs.rs音节级敲错变体表correction/typo/mod.rs整段纠错与噪声信道判定engine/correcting.rs【免费下载链接】qingjian青简 Qingjian用 Rust 写的拼音输入法候选词旁多一条正在学的语言的译词项目地址: https://gitcode.com/gh_mirrors/qi/qingjian创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考