各大输入法分类词库内部格式的简单比较
2013-09-10 14:23
253 查看
之前一直利用闲暇时间做深蓝词库转换,对各大输入法的分类词库有了一些大概的了解,下面来比较下各个词库格式的特点:
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,实在太浪费空间了。触宝词库备份文件数据结构太复杂太复杂,一般难以理解。
若要了解具体每种格式的解析办法,可以参加我的项目代码,项目地址:http://code.google.com/p/imewlconverter/
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,实在太浪费空间了。触宝词库备份文件数据结构太复杂太复杂,一般难以理解。
若要了解具体每种格式的解析办法,可以参加我的项目代码,项目地址:http://code.google.com/p/imewlconverter/
相关文章推荐
- 各大输入法分类词库内部格式的简单比较
- 各大输入法分类词库内部格式的简单比较 (2013-02-17 14:03:11)
- 如何将Icon转成Bitmap(对ICON的内部格式讲的比较清楚)
- 时间操作(JavaScript版)—最简单比较两个时间格式数据的大小
- 比较简单实用的PHP无限分类源码分享(思路不错)
- 比较简单实用的PHP无限分类源码分享(思路不错)
- tensorflow学习笔记(4)softmax分类和简单神经网络比较
- table 嵌套后显示问题 比较简单的格式风格.
- 排序算法的分类及简单比较
- printf 与 cout 输出格式的简单比较
- 比较简单实用的PHP无限分类源码分享(思路不错)
- 关于各大输入法词库格式之间的转换
- 例题:计算运费。c#语言基础,比较简单。看代码输入格式和方法。同样方法可以做一个 出租车打车的程序
- Mysql与其他数据库的简单比较
- 一个使用超简单C++封装的网络库(包含服务器端和客户端,跨平台,比较适用于移动终端)
- 19种音频格式介绍及音质压缩比的比较
- SQL子查询简单分类
- 简单的登录网页jsp格式
- DataBinder.Eval的基本格式 效率 比较
- 使用LogParser分析网站运行情况(比较简单)