求教电子词典的数据结构和压缩算法

marmoset 2002-03-11 08:41:02
听说某某电子词典(好像是网际金典)能把400M的词典内容压缩到8M,
请问使用什么压缩算法能达到这样高的压缩比率呢?
另外,作为电子词典,必然要求能够根据词条键值马上得到对应的词条信息,
因此所使用的压缩算法必须支持即时检索,而不能先解压,再建立检索。

假如我现在想实现一个电子词典,要求词典的所有信息都放在内存里,而不能使用文件访问,应该如何设计词典的数据结构和压缩算法呢?
...全文
263 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
commercial1 2002-03-16
  • 打赏
  • 举报
回复
大家好!
小生有理了!如何创建软件包!
我想吻一个关于COM+ 和MTS( Microsoft trancation server :微软事务服务器)的问题,我已经通过解决多层数据库的结构,既是COM+的结构。

  2. 注册MTS组件
  所有运行于服务器端的ActiveX DLL都应在MTS中注册,这是通过Transaction Server Explorer完成的。其过程如下:

  (1)创建软件包

  软件包是在同一进程中运行的组件集合,不同软件包中的组件以进程隔离的方式运行在隔离的进程中。在创建软件包时,开发者应尽量把共享资源的组件分配在同一软件包内;考虑到软件包中各个组件所共享的资源类型,可以把那些共享“昂贵”资源(如对某个特定数据库的连接)的组件编为一组。

  (2)向软件包添加组件

  在想安装组件的包中选择Component文件夹,单击Install New Component(s) 按钮,当提示添加文件时找到新生成的MtsDemo.dll文件将其加入。

  想问大家,如何实现上面的两步,请写出步骤来,我本来会的但是一时想不出来了,向大家求教!!


Top



hwang824 2002-03-15
  • 打赏
  • 举报
回复
用分类树方法(ID3或CART)都可以,压缩比可以到1:2.6,而且不用解压缩,并且如果单词不在词典里,也可以用这种方法预测(正确率48%),对于人名的发音很有效。如果采用多变量决策树,应该可以更好(估计可以达到1:3.5)
Brand1 2002-03-15
  • 打赏
  • 举报
回复
存放的时候按照二叉树的方式对照存存放到文件中,读取得时候查找很方便的
hwang824 2002-03-15
  • 打赏
  • 举报
回复
我在作单词发音预测的项目中(就是一个单词如果不在词典中,使用一定的算法预测它的发音)曾经有一个副产品就是词典的压缩。可以达到1:2.6的压缩比(不是特别高),不过不需要解压缩,而且直接可以查到单词的发音,速度比查词典要快很多。方法是用分类树算法建立一颗词典发音的分类树(ID3或CART都可以),然后将这个分类树转化为一个ASCII码的文本文件即可。由于没有专门去作,我就没有在这上面多花精力。由于我采用的是单变量分类树,如果采用多变量分类树,我认为压缩比一定还可以再提高(至少可以到达1:3),而且这个方法也可以用于单词的预测,即一个单词如果不再词典中,仍然可以计算出它的发音(准确率可以达到48%)
minkerui 2002-03-15
  • 打赏
  • 举报
回复
快速单词定位:
http://eudc.home2.2911.net/list.asp?id=3221
blkant 2002-03-15
  • 打赏
  • 举报
回复
对,看看金山词霸,就是用索引!效果不错!
crycoming 2002-03-15
  • 打赏
  • 举报
回复
315投诉:
自从CSDN采用xml后保存页面不方便,而且像楼上的发言长的部分内容看不见;
强烈要求更换页面!!!!!!!
niry 2002-03-14
  • 打赏
  • 举报
回复
现0内存解压?
bistar 2002-03-14
  • 打赏
  • 举报
回复
g z
jami 2002-03-14
  • 打赏
  • 举报
回复
本人作过六七年的电子字典,统计上可压到20%。算法有些独特之处。合乎满压缩,单字编码,字典编码,字母索引,哈系表都用过。不到1k的解压缓冲。
tom255 2002-03-14
  • 打赏
  • 举报
回复
字典压缩和一般压缩不一样,文字可以压缩到20%,(如果源字典没有tag,全部是实际内容,如果有tag,那就高多了<5%),如果是pda,可以实现0内存解压。不过很复杂。具体技术不是一下能说明白的。
tom255 2002-03-14
  • 打赏
  • 举报
回复
一般我处理的字典的是有版权的,提供的文件类似于xml格式,所以文件包含tag,而且非常大,不过不是内容(如字体,排版等)。
0内存解压不是自适应压缩,中文相关资料好像没有,英文我难得找。
如果还有问题 appleben@msn.com 联系
marmoset 2002-03-14
  • 打赏
  • 举报
回复
to tom255
请问您说的tag是指什么?
所谓0内存解压是否指的是自适应压缩,是否有相关的介绍材料或资源
chenm001 2002-03-13
  • 打赏
  • 举报
回复
同意楼上的说法,我一般使用高阶编码及算术编码混合编码,依据前2~3个字母进行索引(称为一个索引块),然后检索时先将索引块全部解压到内存,在搜索即可,但是压缩比一般就是3~20之间,好象没有你说的那么大!
marmoset 2002-03-13
  • 打赏
  • 举报
回复
各位,
关于400M到8M的压缩,据事后调查,原来说的是音频数据的压缩:-)

关于词典组织结构的问题,我目前的做法也的确是采用索引结构和具体记录分离的做法,其中索引结构用的是二级索引。

我现在想了解的是:
对于一个汉英词典(key为汉语词,value为ASCII编码)来说,
1,哪种索引结构(比如trie树,二叉查找树等等)占用的空间开销最低?
是否能构造出一个空间开销很小的hash索引?
2,使用什么压缩算法压缩词条信息压缩率最高?
(我的词条信息只包括ASCII编码,并且长度很小,就是对应汉语词汇的拼音,
比如——[中国|zhong1guo2]
因为LZW之类的压缩算法对于较大长度的连续文本压缩效果好,但是对于只有十几个字母的文本串似乎不太适用,是这样吗?如果是的话,是否huffman压缩是唯一的选择?
MadLee 2002-03-12
  • 打赏
  • 举报
回复
牛皮算法。
说不定原来的字典里有392M的图片,采用有损压缩,把图片都压没了。这样可以。
kya_2001 2002-03-12
  • 打赏
  • 举报
回复
求教
vbtojava 2002-03-12
  • 打赏
  • 举报
回复
实际上并没有什么数据结构和压缩算法,也不可能一次读入内存,而应采用索引,索引可一次读入内存,在索引中检索词条后再到电子词典数据文件中读取记录。
词典结构
Structure Dic
{ char *strEnglish; //英文词
char *trChina; //中文词
}
索引结构
Structure Index
{ char *strIndexKey; //索引字段的关键码
char *Address; //该索引词在词典数据文件中的地址
}
注意:应该对中英文都做索引,如一级索引不够,可考虑分级索引。
LeeMaRS 2002-03-11
  • 打赏
  • 举报
回复
可能吗?我觉得基本不可信哟.

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧