各大输入法分类词库内部格式的简单比较
|
之前一直利用闲暇时间做深蓝词库转换,对各大输入法的分类词库有了一些大概的了解,下面来比较下各个词库格式的特点: 1.搜狗细胞词库scel格式 scel格式是采用Unicode编码了汉字、拼音。整个scel格式的内容是:头信息、词库简介、拼音组合列表、词条列表。scel格式的词条的数据结构设计的还是比较好的,它使用了拼音指针来避免在词条中出现重复的拼音来占据内容,也会把同音词合并在一起,节省空间。基本结构如下: 该拼音对应的词条数、拼音指针、词条列表。 2.QQ分类词库qpyd格式 qpyd格式是我一直很头疼的格式,原来是采用了zip压缩词条列表。qpyd格式的内容是:头信息、词库简介、压缩的词条列表。qpyd格式由于采用了zip压缩,所以在同样词条数的情况下,整个文件会显得比其他格式的词库小。但是与搜狗的scel格式不同的是,qpyd格式中,每个词条都对应了其拼音,词语是使用UTF8编码,但是拼音是使用Unicode编码,真是很奇怪。 3.百度分类词库bdict格式 百度的bdict格式算是比较简单的,它其实和搜狗的scel格式很相似,主要不同是使用了默认的声母和韵母列表,而不是写在词库文件中。整个bdict格式的内容是:头信息、词库简介、词条列表,词条中的汉字是使用Unicode编码。词条列表的内部格式如下: 拼音长度、(分母序号、韵母序号)列表、词语 这里的分母序号和韵母的序号是在词库中找不到的,需要通过几个实际的bdict词库解析,一个个的归纳出来。 4.紫光分类词库uwl格式 uwl格式的词库并不是很多,所以我现在还不支持对该词库格式的转换,但是使用了WinHex大概看了下,该格式的词库和scel也比较类似,没有使用压缩,但是编码上好像UTF8和Unicode的都有,词条之间的距离很稀疏,也就是说在文件中,词条和词条间有很多0000,实在是浪费空间。 5.触宝备份词库bak格式 触宝输入法的备份文件格式是我觉得数据结构上最复杂的,里面使用的是一个树结构来表示。树结构中的上一层节点和下一个节点还是双向指针,我花了很多的时间来解读,终于能够实现对该文件的解析,但是有些字节不明白是什么意思,没办法根据词库生成对应的bak文件。触宝使用的是Unicode编码来保存汉字,拼音和bdict做的有点类似,也是用的默认的拼音列表,不同之处是,触宝没有将分母和韵母分开,而且把声韵母的组合作为一个列表。 总结下: 这几种词库格式中,感觉scel是比较清晰的,也比较节约空间,而且容易理解,如果能够像QQ词库那样压缩的话,就更节省空间了。qpyd格式把每个词的每个拼音都记录在词后面,实在是浪费空间,还不如scel格式这样方便,而且拼音和汉字使用了2中编码,真是没必要吧。bdict格式把声母和韵母拆开,以默认列表进行检索,这样也比较好,空间利用已经比较充分。紫光的uwl格式就实在不敢恭维,里面充斥着大量的0000,实在太浪费空间了。触宝词库备份文件数据结构太复杂太复杂,一般难以理解。 若要了解具体每种格式的解析办法,可以参加我的项目代码,项目地址: (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET Web.config转换将无法在安装程序中使用
- ASP.NET WebMethod返回包含在引号中的JSON
- asp.net-mvc-4 – 带有返回URL的注销链接(OAuth)
- asp.net-mvc – 当我用fiddler检查时,VS2013 RTM每秒发出一
- asp.net – 元素’system.webServer’有无效的子元素’重写
- iis – 如何通过预编译ASP.NET站点来确定性能改进?
- asp.net – Javascript之前asp:ButtonField点击
- ASP.NET web.config中数据库连接字符串connectionStrings节
- asp.net – 为什么当StateProvider不是InProc时,不会引发Se
- asp.net – %%和%=%之间有什么区别?
- asp.net-mvc – 可以使用“Bundle.Include”(在A
- asp.net – updatepanel中的文本框的问题 – 不会
- ASP.NET – 从客户端访问两次网页
- asp.net – 如何处理在IIS上运行的网站的计划任务
- asp.net-mvc – 不要在ASP .NET MVC 4 BundleCon
- asp.net-mvc – 抛出一个404像StackOverflow的,没
- asp.net-mvc – 我如何可以渲染局部视图在asp.ne
- 动态数据 – ASP.NET动态数据向页面添加其他过滤
- asp.net – 从JavaScript读取web.config
- asp.net-mvc – 类库中的控制器和视图
