CN101350624B - 一种支持ansi编码的中文文本的压缩方法 - Google Patents
一种支持ansi编码的中文文本的压缩方法 Download PDFInfo
- Publication number
- CN101350624B CN101350624B CN2008101199407A CN200810119940A CN101350624B CN 101350624 B CN101350624 B CN 101350624B CN 2008101199407 A CN2008101199407 A CN 2008101199407A CN 200810119940 A CN200810119940 A CN 200810119940A CN 101350624 B CN101350624 B CN 101350624B
- Authority
- CN
- China
- Prior art keywords
- character
- phrase
- code table
- compressed
- frequency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种支持ANSI编码的中文文本的压缩方法以及相应的解压缩方法,该压缩方法包括下列步骤:根据待压缩中文文本中的字符在字符码表中的位置,将所述待压缩中文文本中的字符分别用1个或多个字节编码,且在生成的码字中标识所述字节个数,其中,所述字符码表包括根据所述待压缩中文文本中的字符的出现频率的降序所排列的字符;将生成的码字写入压缩文件。本发明最大限度地保持了中文数据流的语义特征,并且能与各种压缩算法、压缩软件配合使用。
Description
技术领域
本发明涉及数据编码和数据压缩领域,特别是涉及一种支持ANSI编码的中文文本的压缩方法。
背景技术
数据压缩技术是节省网络带宽及存储资源、提高数据传输速度的主要技术手段。数据压缩是指在一定的数据存储空间要求下,将相对庞大的原始数据,重组为满足前述空间要求的数据集合,使得从该数据集合中恢复出来的信息能够与原始数据相一致,或者能够获得与原始数据一样的使用品质。数据之所以能得到压缩的原因在于数据中存在冗余及数据所表示的信息之间存在关联。数据压缩减少了数据存储所需要的空间,从而间接地减少了处理数据所需要的时间及资源耗费。
数据压缩技术可分为无损压缩和有损压缩两大类,无损压缩技术通常又分为基于统计的压缩技术及基于字典的压缩技术。基于统计的压缩技术根据字符在数据流中的出现频率对其进行编码,经常出现的字符分配较短的编码,不常出现的字符分配较长的编码,代表性技术有霍夫曼(Huffman)编码。
传统霍夫曼编码根据字符出现的频率构造编码,是基于字符的(character-based),在编码过程中没有产生信息熵的转移,其对自然语言文本的压缩效果是有限的。当将霍夫曼编码扩展到基于多个字符时,如基于词(word-based)或基于音节(syllable-based)时,霍夫曼编码的压缩性能会大幅度提高,这是因为多个字符的组合造成的频率分布不均衡要比单个字符要大,从而可能获得更大的压缩率。对于英文文本,基于字符的霍夫曼编码的压缩比能达到1.7左右,而基于单词的霍夫曼编码能达到4倍左右的压缩比。基于词的霍夫曼编码不仅能提高压缩率,同时,由于其在压缩过程中保留了词的语义完整性,不像传统霍夫曼编码方法将文本分为一个个字节,人为地割裂了文本中单词的语义,因而在压缩文本的检索方面效果更好,速度更快。但是,霍夫曼编码为变长编码,绝大多数码字不是整数字节长度,其输出结果不易被其它压缩算法再处理。
对于中文数据流来讲,具有与英文数据流不同的特征:
1)编码特征,印欧语系主要采用ASCII编码,是单字节编码;而中文汉字数量巨大,必须采用多字节编码才能表示,表示汉语的编码主要包括GB2312-80、GBK、Unicode编码、GB18030-2000、BIG5等ANSI编码,因此压缩算法为保持数据流中的语义信息,必须能处理双字节编码。
2)构成英文的基本单位为字母,只有26个,而构成中文的基本单位为字,仅GB2312中的汉字就达6763个,因此,每种语言基本单位中所含的信息量是不同的。
3)中文字词频率分布的不平衡有着与其它语言不同的特点。据北京语言学院1985年的统计结果,汉字中前100字的累计字频已达47.34%,前500字到了79.76%,2000字覆盖了98.07%。词组方面,共计出31159不同的词,其中单音节词占12.2%,双音节词73.6%,三音节词7.6%,四音节词6.4%五以上的占0.2%,平均词长2.09。前100词的累计频率为41.7%,2000词为82.2%,9000词为95.85%。表1为经统计的中文文本中字符的分布情况,也说明了汉字的这一特点。表1中总字符包括所有汉字、英文字符、空格、标点符号、换行符等,各个列数据为按照在文本中出现频率降序排序后,前若干个字符出现的总次数占全文所有字符出现的总次数的比率。测试样本为ANSI编码格式的文本文件。
表1中文文本中字符的分布情况
书名 | 不同的字符数 | 总字符数 | 前128个字符所占比例 | 前240字符所占比例 | 前2288字符所占比例 | 前4336字符所占比例 |
《资治通鉴全译》第一册 | 4521 | 1506643 | 51.09% | 63.34% | 98.89% | 99.99% |
风流三国 | 4941 | 1088060 | 58.87% | 70.08% | 98.80% | 99.94% |
安徒生童话 | 3649 | 658182 | 65.80% | 75.35% | 99.29% | 100% |
芙蓉镇 | 3064 | 153119 | 57.69% | 69.58% | 99.31% | 100% |
亮剑 | 3558 | 361268 | 56.67% | 68.47% | 99.12% | 100% |
鲁迅全集 | 3089 | 2404030 | 86.20% | 94.85% | 99.96% | 100% |
三国演义 | 4935 | 606939 | 54.70% | 66.78% | 98.58% | 99.90% |
全宋词 | 6875 | 1975901 | 51.00% | 62.14% | 97.32% | 99.68% |
在中文压缩算法的研究方面,目前最普遍的方法是将英文压缩软件直接应用到中文数据上。另一种方法是扩大压缩算法运算的基本单位,如将字符比较及字符频率计算的基本单位扩大到多字节方式。再一种方法是考虑中文大字符集的特点,对汉字进行重新编码,形成基于“中文字符”的霍夫曼压缩算法。如Ghim Hwee Ong和Shell Ying Huang在《Compressionof Chinese Text Files Using a Multiple Four-Bit Coding Scheme》一文中根据被压缩文本中汉字的频率分布,为汉字分配4到20位长的码字。Phil Vines和Justin Zobel在《Compression Techniquesfor Chinese Text》一文中实现了一个基于大规模的汉语语料库的汉语文本的压缩算法,该算法压缩性能很高,平均压缩比达到2.25(3.56bpc)。
公知的,数据流中所包含的信息量由熵和算法信息内容(KCC)组成,二者的和为常量或近似于常量,对信息的先验知识了解越多,压缩效果就越好。因此,压缩算法应尽可能充分利用数据流中的熵和KCC信息,而KCC与语义信息密切相关,在信息熵一定的情况下,对数据流中的语义信息理解、利用越多,取得的压缩效果也就越好。在上述三种中文数据流的压缩方法中,第一种方法直接将中文数据单字节化,以压缩ASCII编码数据的方式压缩ANSI编码的中文数据,因为ANSI编码的中文数据以双字节表示一个汉字,字母数字等以单字节来表示,其语义大多以双字节之间的关系或单双字节之间的关系来表示,所以该方法从物理上割裂了编码中蕴含的语义信息,不能充分利用中文数据流中蕴含的字符级的语义信息,压缩性能较差。第二种方法单纯将基于字节的压缩算法扩展为基于字符的压缩算法,在进行后续压缩时,例如应用到霍夫曼编码时,其将霍夫曼编码的字符数从8位256个字符扩展到16位65536个字符,对应的霍夫曼树的结点数目增加了256倍,极大地降低了压缩速度。最后一种方法,由于其压缩结果是变长的比特流,已经不具有字符意义(基于字节),其基于字节的频率分布已接近于随机数据,不具有进一步压缩的余地。
综上所述,迫切需要一种针对中文文本在编码、语义方面的特点,兼具下述效果的中文数据流压缩方法:一是能维持并充分利用数据流的语义信息,二是充分兼容当前各种压缩算法或工具。
发明内容
本发明要解决的技术问题是提供一种能维持并充分利用数据流的语义信息,并兼容当前各种压缩算法或工具的支持ANSI编码的中文文本的压缩方法。
为实现上述目的,根据本发明的一个方面,提供了一种支持ANSI编码的中文文本的压缩方法,包括下列步骤:
100)根据待压缩中文文本中的字符在字符码表中的位置,将所述待压缩中文文本中的字符分别用1个或多个字节进行编码,其中,所述字符码表包括根据所述待压缩中文文本中的字符的出现频率的降序所排列的字符;
300)将生成的码字写入压缩文件。
在上述压缩方法中,所述待压缩中文文本中的字符的出现频率是所述待压缩中文文本中的字符在所述待压缩中文文本中的出现频率,所述压缩方法在所述步骤100)前还包括步骤:
a)统计所述待压缩中文文本中的字符的总个数w和所述待压缩中文文本中的字符的出现频率;
b)根据所述待压缩中文文本中的字符的出现频率的降序,生成所述字符码表。
其中,还包括步骤:
200)根据待压缩中文文本中的词组在词组码表中的位置,将所述待压缩中文文本中的词组用多个字节编码,其中,所述词组码表包括根据词组在所述待压缩中文文本中出现频率的降序所排列的词组。
其中,在所述步骤200)前还包括步骤:
c)统计所述待压缩中文文本中词组的总个数和所述词组在所述待压缩中文文本中出现频率;
d)根据所述词组在所述待压缩中文文本中出现频率的降序,生成所述词组码表。
在上述压缩方法中,对于所述字符的总个数w小于4337的情况,所述步骤100)包括步骤:
101)将所述字符码表中第n个字符采用1字节编码,0<n≤240;
102)将所述字符码表中第m个字符采用2字节编码,240<m≤w。
在上述压缩方法中,对于所述字符的总个数w等于或大于4337的情况,所述步骤100)包括步骤:
101)将所述字符码表中第n个字符采用1字节编码,0<n≤240;
112)将所述字符码表中的第m个字符采用2字节编码,240<m≤2288;
113)将所述字符码表中的第r个字符采用3字节编码,2288<r≤w。
在上述压缩方法中,所述步骤200)还包括步骤:
201)将所述词组码表中第p个词组用2字节编码,0<p≤1536;
202)将所述词组码表中剩余词组采用3字节编码。
在上述压缩方法中,所述步骤100)还包括:
121)将用于区别所述待压缩中文文本中的字符的出现频率的流标识写入所述压缩文件。
在上述压缩方法中,所述步骤a)还包括:
a1)将所述字符码表中的所述字符的总个数w写入所述压缩文件。
在上述压缩方法中,所述待压缩中文文本中的字符的出现频率来源于汉语频率字典。
其中,还包括步骤:
210)根据待压缩中文文本中的词组在词组码表中的位置,将所述待压缩中文文本中的词组用多个字节编码,其中,所述词组码表包括根据词组在所述汉语频率字典中统计的出现频率的降序所排列的词组。
在上述压缩方法中,生成的码字中标识了所述生成码字的字节个数。
在上述压缩方法中,所述字符包括:ASCII码、扩展ASCII码及ANSI方式的汉字编码。
在上述压缩方法中,所述步骤c)还包括:
c1)将所述词组码表中的所述词组的总个数写入所述压缩文件。
在上述压缩方法中,所述步骤100)还包括:
131)将所述码表的指针写入所述压缩文件。
根据本发明的另一方面,还提供了一种根据上述压缩方法生成的压缩文件的解压缩方法,包括下列步骤:
1)读所述压缩文件内的数据,确定码字所占字节个数;
2)根据所述码字所占字节个数确定所述码字;
3)根据所述码字输出所述码表中对应位置的字符,直到解码所有码字,完成所述解压缩。
在上述解压缩方法中,对于所述码表是根据压缩文件内的数据生成的情况,还包括步骤:
11)读取所述码表长度;
12)根据所述码表长度,读取码表。
在上述解压缩方法中,对于所述码表是根据汉语频率词典生成的情况,还包括步骤:
11’)读取指向所述码表的指针;
12’)根据所述码表的指针,读取码表。
本发明根据数据流中的各中文字符的频率分布进行非连续变长的整数字节编码,保留了数据流中字符的频率分布,最大限度地保持了中文数据流的语义特征,并且能与各种压缩算法、压缩软件配合使用,使其压缩性能提高4%-30%,平均压缩率最大可达2.80bpc,即2.86的压缩比。
附图说明
图1是根据本发明一个实施例的编码方法流程图;
图2是根据本发明一个实施例的压缩文件格式;
图3是根据本发明一个实施例的词组码表内双字词的格式示意图;
图4是根据本发明一个实施例的词组码表内多字词的格式示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对根据本发明一个实施例的支持ANSI编码的中文文本的压缩方法进一步详细说明。
根据本发明一个实施例,依据数据流中的各字符和词组的频率分布进行非连续变长的编码,其中所述字符包括ASCII编码、扩展ASCII码和及ANSI方式的汉字编码。非连续编码是指,根据数据流中的字符和词组个数,分别分配不同整数个字节长度的编码,从而最大限度保持其语义特征。对待压缩中文文本进行编码时,根据中文文本中字符和词组的使用频率的降序生成的字符码表和词组码表,统称为CRecode码表,将中文文本中的字符进行编码。
汉语具有与其它语言不同的特征,其中最主要的特点是:虽然汉语字词数量非常之多,如1994年冷玉龙等编著的《中华字海》,收字数多达85000字,包含词组数目更是惊人,但是,汉语字词的使用频率分布极其不平衡。对于一定的码长来讲,其编码数是有限的,如ASCII的最大编码数为256个字符,而ANSI编码为2字节,其最大编码数为65536个,但是,由于汉字字词的使用频率的不均衡性,所以对中文文本压缩数据来讲,如果采用2字节定长编码显然存在编码冗余。压缩技术从编码角度来讲就是用冗余最小的编码方式对数据进行编码。
根据本发明的实施例,编码方式可分为包含词组的编码方式与不含词组的编码方式,可由用户根据具体的使用环境来决定,也可根据压缩率进行自动选择。
如图1的流程图所示,根据本发明的一个具体实施例,对于不包含词组的中文文本,其编码具体步骤如下:
扫描中文文本,统计中文文本中字符的总个数和各个字符的出现频率,存入字符频率表中,其中该表由序号,字符编码和频率三列组成。对字符频率表按频率降序排列并编号。如果总字符数小于4337时,采用1字节和2字节编码方式,如表2所示,即在字符频率表中序号为0至239的字符采用1字节编码,序号大于239的字符采用2字节编码。如果总字符数等于或大于4337,采用1、2及3字节编码方式,如表2所示,即在字符频率表中序号为0至239的字符采用1字节编码,序号为240至2287的字符采用2字节编码,序号大于2287的字符采用3字节编码。
表2不含词组方式的字符编码表
根据本发明的另一个具体实施例,对于包含词组的中文文本,其编码具体步骤如下:
扫描中文文本,统计中文文本中字符的总个数和字符及词组的出现频率,分别存入字符频率表和词组频率表中,其中所述词组包括双字词、三字词、甚至可以根据需要扩展到更多字词。对字符频率表及词组频率表按频率降序进行排序并编号。如表3所示,对排序后的字符频率表中前240字符,采用1字节编码方式,对序号在240至2287之间的字符采用2字节编码方式,对序号大于2287的字符采用3字节编码方式。对排序后的词组频率表中前1536个词组,采用2字节编码方式,对序号大于或等于1536的词组采用3字节编码方式。
表3包含词组方式的字符编码表
字符索引值 | 词组索引值 | 码长(字节) | 编码格式 |
0-127 | 1 | 0xxxxxxx | |
128-191 | 1 | 10xxxxxx | |
191-223 | 1 | 110xxxxx | |
224-239 | 1 | 1110xxxx | |
240-2287 | 2 | 11110xxx xxxxxxxx | |
0-1023 | 2 | 111110xx xxxxxxxx | |
1024-1535 | 2 | 1111110xxxxxxxxx | |
≥2288 | 3 | 11111110xxxxxxxx xxxxxxxx | |
≥1536 | 3 | 11111111xxxxxxxx xxxxxxxx |
如表2和表3的编码表所示,在每个所编码字的前几位均对所编码字所采用的编码字节数进行了标识。例如:对于包含词组的方式,码字“111110xx xxxxxxxx”的前6位“111110”表示了该码字为采用2字节编码。本领域技术人员可以理解,除了在生成的码字中对所编码字所采用的编码字节数进行标识外,还可以采用其它方法来标识。
根据本发明的具体实施例,压缩算法有静态及动态两种压缩方式。根据用户对压缩速度及压缩率的要求,可以选择相应的压缩方式。静态压缩方式使用预先生成的根据汉语频率字典中统计的字符、词组使用频率建立的字符码表和词组码表进行压缩,其具有压缩速度快,不需要传输码表的优点,其中将指向字符码表和词组码表的指针存储在压缩文件中。由于对于不同应用的数据,其字符和词组的频率分布可能不同,从而对应的静态码表也不同,因此,本领域技术人员可以理解,除汉语频率字典外,还可以根据其它中文文本建立字符码表和词组码表。动态压缩方式根据待压缩中文文本动态统计字符和词组频率,动态生成码表,并存入压缩文件中。由于其需要对待压缩文本进行二遍扫描,相比静态压缩方式速度较慢,但通常压缩效果要比静态方式好。动态方式由于要保存动态生成的码表,在文件较小的情况有可能压缩率不及静态方式。
根据上述预先存储的码表或动态生成的码表,压缩待压缩的中文文本,生成压缩数据,并写入压缩文件。
优选的,首先将下列标识写入压缩文件,作为文件头:
FFFF:压缩文件标识,16位,用于供解码器判断是否为根据本发明的方法获得的压缩文件。例如:输入为16个连续的1即0xFFFF表示该压缩文件是根据本发明方法获得的压缩文件,用B1B2代表压缩文件的前两字节,则:如果B1B2==0xFFFF,该压缩文件是根据本发明方法获得的压缩文件。
Stream Flag:流标识,8位,用于区别压缩数据的压缩方式,0x00表示静态压缩方式,0x01表示动态压缩方式。
Char LEN:字符码表长度,即字符码表中字符的个数。如果Stream Flag为0x00静态压缩方式,则该域为8位,域值为静态编码码表指针;如果Stream Flag为0x01动态压缩方式,则该域为16位。
Phrase LEN:词组码表长度,16位,如果没有词组码表则域值为0x0000。但本领域普通技术人员可以理解,中文数据流大多是由词组组成,以词组为单位进行压缩能够获得更大的压缩率。
Character Dictionary:字符码表,各个码字根据其在数据流中出现的频率由大到小排列,每个码字是16位。
Phrase Dictionary:词组码表,此项是可选的。若Phrase LEN域值不是0x0000,则表示支持词组编码。Phrase Dictionary中的词组也根据其在数据流中出现的频率由大到小排序。词组码表每个码字的第一字节为词组长度类型标识,用于表示该词组是双字词还是多字词。词组长度类型标识如果是0x00则表示该词组是双字词,其格式如图3所示,0x00后是该双字词的ANSI编码;如果是0x01则该词组是多字词,该标志后1字节表示多字词长度,之后是ANSI编码格式的多字词组,其格式如图4所示。
从中文文本起始位置开始,读入每一字符或词组,检索码表,根据字符或词组在码表中的位置编码生成压缩数据data,并写入压缩文件,直到中文文本的所有字符和词组均已编码。其中,所述码表包括预先存储的码表或动态生成的码表
优选的,还将以下标识写入压缩文件,作为文件尾部:
EOF:压缩数据结束标记,16位。
MD5:校验值,128位,用于校验压缩数据的完整性。
根据上述压缩方法生成的压缩文件格式如图2所示,包括:
FFFF:压缩文件标识;
Stream Flag:流标识;
Char LEN:字符码表长度;
Phrase LEN:词组码表长度;
Character Dictionary:字符码表;
Phrase Dictionary:词组码表;
Data:压缩数据;
EOF:压缩数据结束标记;
MD5:校验值。
根据本发明的一个具体实施例,对根据本发明的压缩方法生成的压缩文件进行解压缩,具体包括下列步骤。首先读入数据,根据数据流的前两字节的值判断是否为根据本发明方法获得的压缩数据,若不是,则不做任何操作,原样输出数据;否则,根据下一字节的流标识判断是哪种压缩方式。如果是静态压缩方式,则读取下一字节的指针所指向的码表对压缩文件中的数据(data)进行解码;如果为动态压缩方式,则读取下面两字节的字符码表长度和两字节的词组码表长度。根据码表长度,读取字符和词组码表,读入压缩文件内数据(data)并根据码表进行解压缩。解压缩时根据数据的第一字节的值,确定该码字的字节数,然后根据该码字输出码表中对应的字符,即该字符的ANSI编码。重复上述过程,直到读取EOF确定压缩数据均已经解码。优选的,根据MD5判断压缩数据是否完整。
综上,根据字符的使用频率对字符重新编码,使用频率最高的n个字符采用1字节编码,其中0<n≤240;根据总字符数是否小于4337,确定其它字符分别采用2字节或3字节编码。对压缩率的贡献主要由频率最高的n个字符来完成,由表1看出,前240个字符的频率占总字符的70%左右,将其由2字节重新编码为1字节,可节省35%左右的存储空间,由于前4336个字符所占比例几乎已是100%,故采用3字节编码的字符对压缩率的负面影响可以忽略不计。
上述本发明方法,以字节为单位对中文文本进行压缩和解压缩,所以可以与其它压缩方法进行结合。
本发明的压缩方法在与霍夫曼算法结合时,由于本发明的压缩方法只是根据使用频率对各个字符进行了重编码,重编码后的各字符的使用频率并没有发生改变,只是某些字符的编码由2字节变成了1字节或3字节,数据流中的频率分布不平衡状态并没有改变,因此,本发明的压缩方法与霍夫曼结合后,能够比单纯应用霍夫曼算法压缩效果更好。
当本发明的压缩方法与LZSS结合时,本发明的压缩方法是一种基于统计的压缩算法,其与LZSS的作用是互补的,本发明的压缩方法的输出格式或者为单字节编码方式,或者为一到三字节的多字节混合编码方式,完整地保留了原数据流中蕴含的语义信息,即字符串在上下文的重复信息,因而,本发明的压缩方法在与LZSS结合后能够取得更好压缩效果。
本发明的压缩方法在与PPM、BWT结合时,相当于对数据流进行了一遍预处理,本发明的压缩方法的压缩结果并不影响产生数据流的应用中字符的使用频率及相对顺序,再采用PPM、BWT压缩时基本不会对PPM的频率预测机制及BWT的字符转换机制产生大的影响,因此,以上结合使数据的压缩效果更优。
由此可见,由于本发明的压缩方法能充分维持数据流中蕴含的语义信息,其在与其它算法结合使用时,可以在保持本发明的压缩方法本身所获得的压缩效果的前提下,不影响其它算法压缩性能的发挥,从而提高了整体压缩率。
对于本发明的压缩方法的动态方式,码表所占用储存空间是(字符数×2)个字节,平均码表空间在7KB左右。动态方式需预扫描一遍中文文本,统计字符频率,按频率对字符进行排序,最后扫描文件编码输出,时间复杂度为O(wlog2w),其中w为字符个数。本发明的压缩方法的静态方式只需在编码过程中检索码表,时间复杂度为O(w)。对应本发明的压缩方法的解压缩方法只需要根据读入的码字检索码表,进行编码替换,速度非常快,时间复杂度为O(w)。而且,本发明的压缩方法支持部分解压缩。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
Claims (18)
1.一种支持美国国家标准协会(ANSI)编码的中文文本的压缩方法,包括下列步骤:
100)根据待压缩中文文本中的字符在字符码表中的位置,将所述待压缩中文文本中的字符分别用1个或多个字节进行编码,对于出现频率高的字符用1个字节编码,对于出现频率低的字符用2或3个字节编码,其中,所述字符码表包括根据所述待压缩中文文本中的字符的出现频率的降序所排列的字符;
300)将生成的码字写入压缩文件。
2.根据权利要求1所述的压缩方法,其特征在于,所述待压缩中文文本中的字符的出现频率是所述待压缩中文文本中的字符在所述待压缩中文文本中的出现频率,所述压缩方法在所述步骤100)前还包括步骤:
a)统计所述待压缩中文文本中的字符的总个数w和所述待压缩中文文本中的字符的出现频率;
b)根据所述待压缩中文文本中的字符的出现频率的降序,生成所述字符码表。
3.根据权利要求1所述的压缩方法,其特征在于,所述待压缩中文文本中的字符的出现频率来源于汉语频率字典。
4.根据权利要求2所述的压缩方法,其特征在于,还包括步骤:
200)根据待压缩中文文本中的词组在词组码表中的位置,将所述待压缩中文文本中的词组用多个字节编码,其中,所述词组码表包括根据词组在所述待压缩中文文本中出现频率的降序所排列的词组。
5.根据权利要求4所述的压缩方法,其特征在于,在所述步骤200)前还包括步骤:
c)统计所述待压缩中文文本中词组的总个数和所述词组在所述待压缩中文文本中出现频率;
d)根据所述词组在所述待压缩中文文本中出现频率的降序,生成所述词组码表。
6.根据权利要求3所述的压缩方法,其特征在于,还包括步骤:
210)根据待压缩中文文本中的词组在词组码表中的位置,将所述待压缩中文文本中的词组用多个字节编码,其中,所述词组码表包括根据词组在所述汉语频率字典中统计的出现频率的降序所排列的词组。
7.根据权利要求1至6任一项所述的压缩方法,其特征在于,生成的码字中标识了所述生成码字的字节个数。
8.根据权利要求2所述的压缩方法,其特征在于,对于所述字符的总个数w小于4337的情况,所述步骤100)包括步骤:
101)将所述字符码表中第n个字符采用1字节编码,0<n≤240;
102)将所述字符码表中第m个字符采用2字节编码,240<m≤w。
9.根据权利要求2所述的压缩方法,其特征在于,对于所述字符的总个数w等于或大于4337的情况,所述步骤100)包括步骤:
101)将所述字符码表中第n个字符采用1字节编码,0<n≤240;
112)将所述字符码表中的第m个字符采用2字节编码,240<m≤2288;
113)将所述字符码表中的第r个字符采用3字节编码,2288<r≤w。
10.根据权利要求4所述的压缩方法,其特征在于,所述步骤200)还包括步骤:
201)将所述词组码表中第p个词组用2字节编码,0<p≤1536;
202)将所述词组码表中剩余词组采用3字节编码。
11.根据权利要求1至3任一项所述的压缩方法,其特征在于,所述字符包括:ASCII编码、扩展ASCII编码和及ANSI方式的汉字编码。
12.根据权利要求1至3任一项所述的压缩方法,其特征在于,所述步骤100)还包括:
121)将用于区别所述待压缩中文文本中的字符的出现频率的流标识写入所述压缩文件。
13.根据权利要求2所述的压缩方法,其特征在于,所述步骤a)还包括:
a1)将所述字符码表中的所述字符的总个数w写入所述压缩文件。
14.根据权利要求5所述的压缩方法,其特征在于,所述步骤c)还包括:
c1)将所述词组码表中的所述词组的总个数写入所述压缩文件。
15.根据权利要求3所述的压缩方法,其特征在于,所述步骤100)还包括:
131)将所述码表的指针写入所述压缩文件。
16.一种对权利要求1或4所述的压缩方法生成的压缩文件的解压缩方法,包括下列步骤:
1)读所述压缩文件内的数据,确定码字所占字节个数;
2)根据所述码字所占字节个数确定码字长度;
3)根据所述码字输出所述码表中对应位置的字符,直到解码所有码字,完成所述解压缩。
17.根据权利要求16所述的解压缩方法,其特征在于,对于所述码表是根据压缩文件内的数据生成的情况,还包括步骤:
11)读取所述码表长度;
12)根据所述码表长度,读取码表。
18.根据权利要求16所述的解压缩方法,其特征在于,对于所述码表是根据汉语频率词典生成的情况,还包括步骤:
11’)读取指向所述码表的指针;
12’)根据所述码表的指针,读取码表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101199407A CN101350624B (zh) | 2008-09-11 | 2008-09-11 | 一种支持ansi编码的中文文本的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101199407A CN101350624B (zh) | 2008-09-11 | 2008-09-11 | 一种支持ansi编码的中文文本的压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350624A CN101350624A (zh) | 2009-01-21 |
CN101350624B true CN101350624B (zh) | 2011-05-04 |
Family
ID=40269249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101199407A Expired - Fee Related CN101350624B (zh) | 2008-09-11 | 2008-09-11 | 一种支持ansi编码的中文文本的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101350624B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102664634B (zh) * | 2012-04-16 | 2016-02-17 | 中国航空无线电电子研究所 | 一种用于北斗系统收发汉字文本消息时的数据压缩方法 |
CN102801429B (zh) * | 2012-08-16 | 2015-03-04 | 福州大学 | 适用于gb18030的url中文参数压缩方法 |
CN104021121B (zh) * | 2013-02-28 | 2018-01-26 | 北京四维图新科技股份有限公司 | 一种文本数据压缩方法、装置及服务器 |
JPWO2014147672A1 (ja) * | 2013-03-22 | 2017-02-16 | 富士通株式会社 | 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム |
CN104467868A (zh) * | 2014-11-04 | 2015-03-25 | 深圳市元征科技股份有限公司 | 中文文本压缩方法 |
CN105893337B (zh) | 2015-01-04 | 2020-07-10 | 伊姆西Ip控股有限责任公司 | 用于文本压缩和解压缩的方法和设备 |
CN104935406B (zh) * | 2015-05-29 | 2018-03-09 | 祝文闻 | 一种智能电网通信的数据压缩及解压缩方法和智能电网通信系统 |
EP3119003A3 (en) * | 2015-07-13 | 2017-03-01 | Fujitsu Limited | Encoding computer program, encoding method, encoding apparatus, decoding computer program, decoding method, and decoding apparatus |
CN106549674B (zh) * | 2016-10-28 | 2019-07-23 | 银江股份有限公司 | 一种面向电子病历的数据压缩及解压方法 |
CN107196660A (zh) * | 2017-04-24 | 2017-09-22 | 南京数维康信息科技有限公司 | 低功耗数据压缩算法 |
CN108829872B (zh) * | 2018-06-22 | 2021-03-09 | 武汉轻工大学 | 无损压缩文件的快速处理方法、设备、系统及存储介质 |
CN109412604A (zh) * | 2018-12-05 | 2019-03-01 | 云孚科技(北京)有限公司 | 一种基于语言模型的数据压缩方法 |
CN111835676A (zh) * | 2019-04-15 | 2020-10-27 | 宇起数字科技(上海)有限公司 | 一种智能锁具的密码数据的压缩方法、解压方法和传输方法 |
CN111866520A (zh) * | 2019-04-24 | 2020-10-30 | 博世汽车部件(苏州)有限公司 | 编解码方法、编解码设备以及通信系统 |
CN110263339B (zh) * | 2019-06-19 | 2022-12-30 | 新疆大学 | 一种基于维吾尔文音节的可检索式压缩和解压方法 |
CN112416315B (zh) * | 2020-06-16 | 2024-05-14 | 上海哔哩哔哩科技有限公司 | Css代码的压缩方法、电子设备和存储介质 |
CN112800722B (zh) * | 2021-02-09 | 2024-04-26 | 柳州智视科技有限公司 | 基于语义理解的文字组织编码方法 |
CN113742774B (zh) * | 2021-09-03 | 2024-02-09 | 北京字跳网络技术有限公司 | 数据处理方法、装置、可读介质及电子设备 |
CN113792529B (zh) * | 2021-11-17 | 2022-05-06 | 北京华云安信息技术有限公司 | 用于机器学习的文本字符编码方法、装置及电子设备 |
CN114137348B (zh) * | 2021-11-29 | 2023-11-24 | 国网湖南省电力有限公司 | 一种配电终端智能联调验收方法和验收设备 |
CN116915258B (zh) * | 2023-09-12 | 2023-12-01 | 湖南省湘辉人力资源服务有限公司 | 一种企业薪酬管理方法及系统 |
-
2008
- 2008-09-11 CN CN2008101199407A patent/CN101350624B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101350624A (zh) | 2009-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101350624B (zh) | 一种支持ansi编码的中文文本的压缩方法 | |
US8988257B2 (en) | Data compression utilizing variable and limited length codes | |
US8120516B2 (en) | Data compression using a stream selector with edit-in-place capability for compressed data | |
JP5831298B2 (ja) | プログラム、情報処理装置およびインデックス生成方法 | |
US7663511B2 (en) | Dynamic character encoding | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
Nandi et al. | A compression technique based on optimality of LZW code (OLZW) | |
KR20110007865A (ko) | 데이터의 압축방법 | |
CN101534124B (zh) | 一种用于短小自然语言的压缩算法 | |
US20200110767A1 (en) | Context-dependent shared dictionaries | |
Fiergolla et al. | Improving run length encoding by preprocessing | |
CN115189696A (zh) | 一种基于Huffman解码表的硬件压缩解压方法 | |
Klein | Skeleton trees for the efficient decoding of Huffman encoded texts | |
Nandi et al. | Modified compression techniques based on optimality of LZW code (MOLZW) | |
Bhadade et al. | Lossless text compression using dictionaries | |
JPH0779265B2 (ja) | 圧縮データの復号方法 | |
Jrai et al. | Improving LZW Compression of Unicode Arabic Text Using Multi-Level Encoding and a Variable-Length Phrase Code | |
Öztürk et al. | Multi-Stream word-based compression algorithm for compressed text search | |
Shanmugasundaram et al. | Text preprocessing using enhanced intelligent dictionary based encoding (EIDBE) | |
Anisimov et al. | Practical Word-based Text Compression Using the Reverse Multi-Delimiter Codes. | |
Ong et al. | A data compression scheme for Chinese text files using Huffman coding and a two-level dictionary | |
Perl et al. | The cascading of the LZW compression algorithm with arithmetic coding | |
Adiego et al. | Mapping words into codewords on PPM | |
Begum et al. | A Novel Multidictionary Based Text Compression | |
CN110266317A (zh) | 一种基于维吾尔文音节的短文压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110504 Termination date: 20200911 |