如何压缩汉字

时间:2019-02-13 03:54:15

标签: character-encoding

我刚刚开始研究如何compress Chinese characters。据说每天有大约8,000个常用字符,基本字典中有14k。这远比您在Huffman编码示例中看到的〜75个拉丁字母+标点符号要大得多。我想知道他们是否只是像处理拉丁字符一样处理汉字并处理较大的位序列,或者它们所做的事情完全不同。

2 个答案:

答案 0 :(得分:0)

霍夫曼编码在任何方面都不取决于字母的大小。符号的霍夫曼码的长度与符号的倒数频率成对数比例;换句话说,符号越稀有,其霍夫曼码越长。如果您要压缩的语料库中某些拉丁字母极为罕见,则其代码长度将与同样不常见的汉字长度相同。

事实上,有太多的汉字意味着它们将很少见,但是肯定有两个语料库,一个是中文,另一个是使用拉丁符号,其中最长的拉丁码长于最长的中文代码。

答案 1 :(得分:0)

中文使用两个字节。由于鸽子洞原理,无法在8位中容纳超过256个代码点。另一方面,几乎所有内容都可以容纳16位-65,535个代码点。

例如,1993年的Unicode 1.1为CJK语言定义了20,902个代码点。 GBK 1.0是1995年在中国大陆的事实上的标准字符集,具有21,886个代码点。从理论上讲,您可以将字符压缩到一些不对齐的单词系统中,例如12位或类似内容。但是要权衡的是要进行边际压缩的大量额外处理。

您也可以尝试使用可变宽度编码,但是我不认为它的效率不能与大多数西方语言相提并论,因为中文通常使用超过256个字符。

还值得指出的是,中文已经比西方语言更加有效。与英语中的任何单个字符相比,中文中的几乎每个单个字符传达的信息要多得多。