2021SC@SDUSC
今天我们来聊聊一款输入法最核心的算法部分,这里是我整一个rime项目了解的一个大头,所以会讲的比较细致一点,用的篇幅也可能会比较长,一个个文件来讲。
第一个文件是algebra.h和algebra.cc,先看看头文件

首先rime中定义了calculation(计算),schema(模式),script(字母表),projection(投影),首先script中定义了增加音节的bool函数,实现音节合并功能的空函数,丢弃函数,而投影类中有装载和应用方法,具体实现我们看.cc文件

这是spelling.h文件,里面定义了各种拼写属性和可信度等成员函数

首先这个merge函数大致上是一个将输入的一串字符依照中文输入的英文拼写属性整合成多段单个字比如以拼音输入为例,首先给不同的字符设定优先级(type),那么b,c,d这些列为第一优先级(因为他们只能当一段音节的开头),然后,a,o这些就列为第二优先级(他们可以直接做开头们也能跟在某些辅音字母后面),u,i这些就列为第三优先级(只能在音节中间,不能当开头,也不能当结尾)(ch,ang,uang这些另做讨论)那么当你输入nihao时n为第一优先级,i为第三优先级,则ni合并,变为第一优先级,但是后面跟着h同为第一优先级,那么他们就不属

本文介绍了rime输入法的核心算法,重点讲解了algebra.h和algebra.cc中的计算、模式、字母表和投影类。讨论了script中音节合并的逻辑,以及spelling.h中拼写属性和可信度的概念。通过merge函数的解释,阐述了如何根据中文输入的英文拼写规则整合字符,并考虑了可信度在多音节合并中的作用。
最低0.47元/天 解锁文章
1437

被折叠的 条评论
为什么被折叠?



