看了论坛一些讨论,当前主流的词典格式中,mdx和aard的slob压缩率算大的,但是对一些巨无霸词典,比如维基百科,四十多g,还是太大了,因此有了这个想法。需求就是以mdx为标准,能再压缩至少一半,可以牺牲的需求是压缩时间可以长点,不需要考虑全文搜索,仅自用,只要能查词,能显示内容就可以
不太懂瞎说哈,我估计mdx其实就是把基于html的txt压缩再加个索引,而且mdx本身不带全文搜索的。索引体积相对可以忽略,那么就是从前面做文章了:
(1)txt不基于html,使用固定标签+内容,比如title:xxx;content:xxx;image:xxx(image-caption:xxx);代价是排版和功能不可能像html那样灵活;
(2)压缩算法使用压缩率更高的方案。
不过我觉得再压缩一半不太现实。。
用 mdx 的紧凑格式就可以了,应该可以压缩到 10G 以内。
这主要是指图片,仅文字没有那么大。建议能使用在线图片方式的就用在线图片,另外图片也可以压缩或者不加载,没有问题,只是界面不好看罢了。
压缩方法再怎么折腾优化不大了,不调整文本内容已经不太可能了,确实可以考虑mdx的compact格式,能有效压缩。
楼主能解决这个问题都可以去申请诺贝尔物理学奖了…顺便再造个黑洞(如果楼主需求将40多G压缩到几个M的话
不是哦,英文维基百科mdx文本就是这个体积,图片都是在线加载的。
英文维基百科 En.wikipedia.org 20231020 完成mdx - 英英 - FreeMdict Forum
我测试用的英文维基 JSON 格式的纯文本,bzip2 压缩后是 2.34G。mdx 的紧凑格式很贴近纯文本了,40G 压缩到 10G 以内是有可能的。
进一步压缩可以考虑修改 mdict-utils 项目的 writer.py 文件,修改 record_size 的值,现在默认是 65536 = 64KB,可以改成 1048576 = 1024KB,zlib.compress 压缩现在用的默认值 = 6,可以改成 9。(相比紧凑格式,更容易实现。
那是我理解错了,没用过英文维基,只用汉语维基百科。
有趣的话题。
目前来看,您这第二个方案可行,不知道能压缩多少。有空去试试
第二个方案压缩不了多少不用太指望,可行性最高的是紧凑格式,也就是第一个方案,你要是会写代码的话会容易很多,不会的话只能用正则手工替换。
只会一点点,复杂了搞不定,这个是要把所有html标签改成数字标签吗,代码量大不大
- use markdown instead of html
- use brotli to compress
The brotli compression ratio is roughly 25%. mdx uses zlib whose compression ratio is about 40%. - use latex for formula. Do not use images to save lots of storage.
So with some luck, maybe you can reach your target for wikipedia.
I’m using the above two methods myself for many years and they work well.
I no longer host dict content files but the binary is here.
tdict
Here are some of markdown dict content files for your reference.
dictionaries in markdown
嗯,感谢,总结一下大家提到的方法:
1修改原文件(compact,markdown等)
2修改压缩算法(mdx算法改进,brotli等)
不大,就是细节问题多。
换压缩算法 brotli 或者使用 markdown,词典软件都不支持。
压缩不指望了,不能丢掉用户和现有软件和字典格式。
我觉得Mark还是离不开HTML(还是软件限制)。
最大的可能性是手动去掉网页里面的垃圾占体积的内容,看不见的内容,还有重复内容。
即使再好的格式,没有浏览器还是没法普及。
嗯,明白,不过这种想法其实更多是考虑自用,以及可能会是一小部分人的需求,所以可以不考虑对现有格式的兼容。核心就是:占用空间小,能定位,能显示
不是,没有软件兼容,你怎么自用?