用Python开发输入法后台(5)——数据结构
全部汉字
我从网上收集了一些资料, 构建了一个<全部汉字.json>文件, 文件格式如下所示:
{ "吖": [ [ "aa", "ya" ], "szhdps" ], "呵": [ [ "aa", "he", "ke" ], "szhhszhs" ], }
这是一个字典, 字典索引是每一个汉字, 值分为2部分, 前者是拼音, 后者是笔画; 一个汉字的拼音可能有多个, 所以是一个数组, 这里的拼音采用的是双拼, 所以用2个字母表示一个字, 并且不分舌前音和舌后音, 也就是说, z,c,s等同于zh,ch,si; 笔画是横,竖,撇,折,点(也是捺), 分别用字母hspzd来表示.
常用词
这里面的字很多, 有2万多个, 所以我把常用的字词放在另外一个文件中<词.json>, 它的数据结构如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [ [ "的" , "de" , "pszhhpzd" , 1684812452 ], [ "讲座" , "jdzo" , "-" , 0 ], ] |
它是一个字或词的数组, 由4部分组成, 第一个表示字词本身, 第2个表示双拼拼音, 第3个表示笔画(仅对单字生效), 第4个表示这个词的序号, 序号越大表示优先级越高, 候选词排得越靠前. 序号用最后一次输入的时间戳.
提升检索效率
为提升检索效率, 把常用词分割成3个字典, 单字词, 双字词, 多字词, 单字词用单个汉字的拼音首字母来索引, 双字词用2个字的拼音首字母索引, 多字词用前3个字多拼音首字母来索引.
为方便检索汉字的笔画, 还需要一个汉字到笔画到字典.
这样就可以快速缩小检索的范围.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统