CN101534124A - 一种用于短小自然语言的压缩算法 - Google Patents

一种用于短小自然语言的压缩算法 Download PDF

Info

Publication number
CN101534124A
CN101534124A CN200810239753A CN200810239753A CN101534124A CN 101534124 A CN101534124 A CN 101534124A CN 200810239753 A CN200810239753 A CN 200810239753A CN 200810239753 A CN200810239753 A CN 200810239753A CN 101534124 A CN101534124 A CN 101534124A
Authority
CN
China
Prior art keywords
character
natural language
word
binary string
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.)
Granted
Application number
CN200810239753A
Other languages
English (en)
Other versions
CN101534124B (zh
Inventor
赵沁平
杨硕磊
魏攀
郝爱民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN2008102397532A priority Critical patent/CN101534124B/zh
Publication of CN101534124A publication Critical patent/CN101534124A/zh
Application granted granted Critical
Publication of CN101534124B publication Critical patent/CN101534124B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种用于短小自然语言的压缩算法:(1)对自然语言中每一个字出现的次数进行大量统计,并计算出每一个字出现的字频;(2)用得到的字频,将自然语言分为高频字符、低频字符和ASCII码字符,对属于累积频率总和为α的高频字符、属于其它频率总和为1-α,看作一个字符Φ的低频字符、看作一个字符Ψ的ASCII码字符组合在一起进行编码,得到初步的编码结果,α的取值范围为97%-99%;(3)调整参数α,使得初步的固定编码的结果小于16个bit,得到最后的固定编码结果表;(4)对输入的短小自然语言采用重编码的方式实现压缩,得到压缩后的二进制串;(5)对第四步已压缩的二进制串进行还原,实现解压缩,还原为自然语言。本发明对于自然语言文本的压缩比在1.5左右且和文本的长度无关,在压缩文本小于800Byte的情况下,比现在通用的LZ算法压缩比高。

Description

一种用于短小自然语言的压缩算法
技术领域
本发明涉及一种用于短小自然语言的压缩算法,主要用于对手机短信息(SMS),聊天对话等的压缩。
背景技术
在无损压缩领域,基于字典原理的LZ(Lempel-Ziv)压缩算法以其快速有效的压缩效果成为许多通用压缩工具如ARJ、RKZIP、Gzip、Winrar等的技术实现的核心算法。
基于字典的LZ系列编码包括:LZ77算法、LZSS算法、LZ78算法、LZW算法等几种基本算法,LZ78和LZW是通用数据压缩的主流。LZ78和LZW两种算法的编译码方法较为复杂,实现起来较为困难,不适合在单片机、手机上实现。
游程编码是针对一些文本数据的特点所设计的,这种算法通过统计待压缩数据中的重复字符、去除文本中的冗余字符或字节中的冗余位,从而达到减少数据文件所占的存储空间的目的。压缩处理的流程类似于空白压缩,区别仅在于要在压缩指示字符之后加上一个字符,用于表明压缩对象。随后是该字符的重复次数。由于该算法是针对文件的某些特点所设计的,所以应用起来具有一定的局限性。
哈夫曼编码也称前缀编码,它是根据每个字符出现的频率而进行编码的,要求任一字符的编码都不是其它任一字符编码的前缀且字符编码的总长度为最短。它主要应用于通信及数据的传送以及对信息的压缩处理等方面,哈夫曼编码的基础是依据字符出现的频率值而构造一棵哈夫曼树,从而实现最短的编码表示最常用的数据块或出现频率最高的数据。
上述算法在针对短小文本的效果都不好,经过测试LZ算法对小于200Byte的文本几乎没有效果,而且算法复杂,在单片机、手机等计算能力不强的计算机上不容易实现,游程编码局限性很大,传统的哈夫曼编码因为要记录字典,对于小文本的压缩可能比原来的文本还大。
发明内容
本发明的技术解决问题是:克服了现有压缩算法的不足,提供一种针对短小自然语言文本的无损压缩算法,该算法的比现有压缩算法的压缩比高。
本发明的技术解决方案:一种用于短小自然语言的压缩算法,步骤如下:
第一步,对自然语言中每一个字出现的次数进行大量统计,一般在30多万次以上统计,并计算出每一个字出现的字频,得到字频采样表;
第二步,基于第一步中获得的字频,将自然语言分为高频字符、低频字符和ASCII码字符,对属于累积频率总和为α的高频字符、属于其它频率总和为1-α,看作一个字符Φ的低频字符、看作一个字符Ψ的ASCII码字符组合在一起进行编码,得到初步的编码结果;所述的编码采用哈夫曼编码方法,a的取值范围为95%-99%;
第三步,调整参数a,使得初步的固定编码的结果小于16个bit,得到最后的固定编码结果表,即固定编码字典;
第四步,基于第三步得到的固定编码结果表,对输入的短小自然语言采用重编码的方式实现压缩,得到压缩后的二进制串B;
第五步,根据第三步得到的固定编码结果表,对第四步已压缩的二进制串进行还原,实现解压缩,还原为自然语言。
所述第四步对短小自然语言重编码方法如下:
a.对于一个需要编码的短小自然语言中的字符A,查找该字符A是否属于频率总和为α的自然语言,如果属于,则A编码为A对应的二进制串;
b.如果该字A属于其它频率总和为1-α的自然语言,则编码为字符Φ对应二进制串加上该字A的原码;
c.如果A为ASCII码,则编码为ASCII码对应的二进制串B加上该字A的7位ASCII码。
所述第五步中还原为自然语言的方法如下:
d.对每一次从待解码的二进制串B中读入一个比特,插入至二进制串C中,直到二进制串C在固定编码中有对应的结果;
e.如果二进制串C对应的字符为Φ,则还原为从B中继续读出的原码;
f.如果二进制串C对应的字符为Ψ,则从B中继续读出7bit,还原为ASCII码。
本发明的原理:本发明主要运用统计学原理,在自然语言中研究对象的全体(总体)为所有字符的结合,如汉语中总体为汉字、符号、拉丁文字的集合的并集。
设自然语言的符号集合为X={x1,x2,x3……,xn},如汉语中汉字、符号、拉丁文字的集合的并集。xi为X中的一个字符,xi∈X;
X的分布函数为F(xk)=fk,且 Σ i = 1 n f i = 1 ;
一个短小自然语言文本即是对X的抽样,假设一次自然语言为u=u1,u2,u3……,um,假设xi的编码后长度为Ii,假设求文本编码后的长度为L
L(u)为自然语言u1,u2,u3……,um编码后的长度, E ( L ( u ) ) = E ( L ( u 1 , u 2 , u 3 · · · · · · , u m ) ) = m × Σ i = 1 n ( f i × l i ) , 为了达到L(u)的期望最小,即
Figure A200810239753D00052
最小,只需要对总体X的每个字符{x1,x2,x3……,xn}以频率{f1,f2,f3……,fn}进行哈夫曼编码。
对于分布函数F(xk)中的参数f1,f2,f3……,fn的求得,可采用频率估计法,对大量的抽样进行频率估计,即发明内容中的第一步。
本发明与现有技术相比的优点在于:
(1)现有的压缩算法压缩后的文本显示或隐示包含了编码字典;而本发明将编码字典固定(即权利要求1的步骤(3)所述),不包含在编码后的文本中,因此在压缩文本小于800Byte的情况下,比现在通用的LZ算法压缩比高(高多少,最好给出具体的数值比较),减小了占用的存储空间,所以针对短小的自然语言文本比现有算法有优势,在单片机手机上易于实现,可用于短信息的压缩,聊天对话的压缩等。
(2)此外,本发明的压缩方法合理的处理了不常见字和汉字中夹杂符号的情况,使得算法实用性增强,另外也使得字典不至于太大。压缩算法实质为简单的查找替换操作,运算简单,计算需要资源少。
(3)另外,本发明的方法在被解压二进制串中不包含编码字典的情况下利用固定编码字典还原文本,使得文本在比较短小的时候仍然具有一定压缩比,进一步达到了压缩短小文本的目的。
附图说明
图1为本发明方法的实现流程图;
图2为本发明中的压缩的流程图;
图3为本发明中的还原为自然语言的流程图;
图4为本发明和LZ算法的对比,依次改变数据量对比压缩比;
图5为本发明的一个应用场景,一个用J2ME实现的手机短信压缩程序的使用效果。
具体实施方式
本发明在手机上实现了一个短信息压缩程序,短信息服务(Short Message Service简称SMS),是通过手机发送和接收有限长度的文本信息的功能。根据GSM无线数字蜂窝通信系统网络规范,一条短信息可以包含160个英文字母(7bit编码)或70个中文汉字Unicode编码。短信息在发送前先压缩在收到后进行解压缩。开发环境使用SUN公司的J2ME技术实现。
首先进行字频的统计,对于手机的应用场景,采样总体为所有汉字、标点、符号、拉丁字母等。本发明对344209个字进行统计,为了使得采样更加具有通用性,根据应用特点分类采样了一些小说、新闻、短信等文字。并对出现的概率进行了计算,得到字频采样表,表1列出字频前10的汉字。
表1
Figure A200810239753D00061
然后根据统计的词频对字符进行编码,生成固定编码字典。基于上一步中获得的字频,将自然语言分为高频字符、低频字符和ASCII码字符。首先选出统计结果中属于累积频率总和为α的高频字符,并将其它频率总和为1-α的字符算为一个汉字,助记符为Φ,对应字频为1-α,将所有ASCII码字符算为一个汉字,助记符为Ψ,它的字频为所有ASCII码的字频总和。将选出的高频字和对应的频率和Φ、Ψ合在一起进行编码,编码算法使用哈夫曼编码,即按照哈夫曼算法对于每个字符的字频生成哈夫曼树,调整参数α使得编码二进制串的结果小于16个bit。经过调整后,实例中编码的汉字为2368个,α取值为98%。进行编码后使得每个汉字有一个二进制串对应,此对应关系为一张编码表,即固定编码字典。如“的”对应的二进制01101b,Φ对应二进制011101b。该编码字典只生成一次,结果保存在文件中,最后字典文件大小为11.8kByte,因为字典不大,方便在手机中使用。表2列出词频前10的汉字的原码和对应的二进制。
表2
Figure A200810239753D00071
压缩和解压缩即根据固定编码字典对需要压缩的文字编码和解码的过程。本发明该过程在手机中实现,实现过程运用了SUN公司的J2ME技术。
压缩即编码过程中,对于一个需要压缩字A,如果A为ASCII码则编码为Ψ加上A的7位ASCII码。否则在固定编码表中查找A是否属于累积频率总和为α的高频字符,如果不属于,编码为Φ对应二进制加上A的原码。如果属于,直接编码为A对应的二进制串。
例如在本发明实现中:Φ的编码为b01110,Ψ的编码为b01111。A如果拉丁字母‘a’的情况下,‘a’的ASCII码为b1100001,则编码为b01111+b1100001即b011111100001。A如果为生僻字“航”,“航”的GB2312码为0xBABD即b1011101010111101。因为GB2312的每一个汉字的编码对应二进制的第一个bit必定为1,因此只用记录去掉两个bit的剩下14个bit,因此A字编码为Φ对应二进制串加上A的原码b011101+b01110100111101即b01110101110100111101。这种情况下,虽然编码后结果会增大。但出现这种生僻字的概率是很小的,因此这样编码也是科学的。A如果为“我”字,则直接编码为“我”对应二进制串b010000。图2为压缩过程的流程图。
对于解压缩(解码)的过程为,每次从待解压字串B中读入一个比特到另一个二进制串C,直到二进制串C在编码表中有对应的字符。如果对应的字符不是Φ和Ψ,解码为所对应的字符的码。如果对应的字符是Φ,则继续读出14个二进制,该二进制前每7位加上共两个二进制1还原为原码。如果对应的字符是Ψ,继续读7个bit,还原为ASCII码。例如解压程序收到二进制串0100000010001111对其进行解压缩,过成如下:先读一位2进制‘0’到C,查找字典。并没有和‘0’对应的汉字。于是读下一个2进制,C变为‘01’,查找字典。没有和‘01’对应的汉字。一直读下去一直到C为‘010000’时,‘我’字和其进行对应。解压出‘我’字。C清空。同理解压出‘是’字。这样就实现了解压缩。对于读到C为01111,则继续向后读取7位,前面加0变为8位,还原为ASCII码。对于读到011101即继续向后读取14位,加上两个1变为16位,还原为汉字。图3展示了解压缩过程的流程。
本发明不但适用于中文的压缩,也可以适用于日语、韩语等国语言。还可以支持拉丁语系的文字(如英语、德语、法语等)。
对于日语、韩语等类似中文的语言,其处理方式如实施例和中文一样。对于拉丁语系的文字(如英语、德语、法语等),本发明可针对常用的词进行编码,对于常用词以外的词,可采用类似处理不常用汉字的方法,运用原码表示。
本发明不但可以在手机短信上运用,还可以在实时聊天工具中使用(如QQ、MSN中),聊天过程使用大量的短小自然语言,如将这些数据在发送前客户端先进行压缩接收客户端收到和再解压显示。这样在传输过程中会一定程度的降低网络的带宽占用,也使得服务器的计算负载有所减轻,还起到了一定的加密作用。
本发明的性能测试:为了对比该发明相比现有算法在一定范围内的优越性,选取了流行的采用LZ算法的压缩软件winrar和本发明算法进行对比。选取了大小从1Byte到3kByte大小不等的样本文本,记录压缩前的文本大小和压缩后的文本大小,计算压缩比。对比结果如图4所示。由图可以看出,本算法的压缩比和被压缩的文本长度无关,据统计,本发明对于汉字的平均压缩比为1.47。而LZ算法的压缩比随着文本长度的增加而增加在样本文本小于500Byte时压缩比为1,也就是基本没有压缩效果。经测试本发明在被压缩数据小于800Byte时比现有LZ算法更有优势。
图5为本发明的应用场景一个用J2ME实现的手机短信压缩程序的使用效果。一条短信息可以包含70个中文(16bit编码),通过使用本发明后平均一条短信可以包含105个汉字,增加单条信息包含的信息量。
本发明未详细阐述的部分属本领域技术人员公知技术。

Claims (3)

1、一种用于短小自然语言的压缩算法,其特征在于步骤如下:
第一步,对自然语言中每一个字出现的次数进行30多万次以上统计,并计算出每一个字出现的字频,得到字频采样表;
第二步,基于第一步中获得的字频,将自然语言分为高频字符、低频字符和ASCII码字符,对属于累积频率总和为α的高频字符、属于其它频率总和为1-α,看作一个字符Φ的低频字符、看作一个字符Ψ的ASCII码字符组合在一起进行编码,得到初步的编码结果;所述的编码采用哈夫曼编码方法,a的取值范围为95%-99%;
第三步,调整参数a,使得初步的固定编码的结果小于16个bit,得到最后的固定编码结果表,即固定编码字典;
第四步,基于第三步得到的固定编码结果表,对输入的短小自然语言采用重编码的方式实现压缩,得到压缩后的二进制串B;
第五步,根据第三步得到的固定编码结果表,对第四步已压缩的二进制串进行还原,实现解压缩,还原为自然语言。
2、根据权利要求1所述的用于短小自然语言的压缩算法,其特征在于:所述第四步中对短小自然语言重编码方法如下:
(1)对于一个需要编码的短小自然语言中的字符A,查找该字符A是否属于频率总和为α的自然语言,如果属于,则A编码为A对应的二进制串;
(2)如果该字A属于其它频率总和为1-α的自然语言,则编码为字符Φ对应二进制串加上该字A的原码;
(3)如果A为ASCII码,则编码为ASCII码对应的二进制串B加上该字A的7位ASCII码。
3、根据权利要求1所述的用于短小自然语言的压缩算法,其特征在于:所述第五步中还原为自然语言的方法如下:
(1)对每一次从待解码的二进制串B中读入一个比特,插入至二进制串C中,直到二进制串C在固定编码中有对应的结果;
(2)如果二进制串C对应的字符为Φ,则还原为从B中继续读出的原码;
(3)如果二进制串C对应的字符为Ψ,则从B中继续读出7bit,还原为ASCII码;
CN2008102397532A 2008-12-16 2008-12-16 一种用于短小自然语言的压缩算法 Expired - Fee Related CN101534124B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102397532A CN101534124B (zh) 2008-12-16 2008-12-16 一种用于短小自然语言的压缩算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102397532A CN101534124B (zh) 2008-12-16 2008-12-16 一种用于短小自然语言的压缩算法

Publications (2)

Publication Number Publication Date
CN101534124A true CN101534124A (zh) 2009-09-16
CN101534124B CN101534124B (zh) 2011-03-23

Family

ID=41104545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102397532A Expired - Fee Related CN101534124B (zh) 2008-12-16 2008-12-16 一种用于短小自然语言的压缩算法

Country Status (1)

Country Link
CN (1) CN101534124B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567294A (zh) * 2010-12-09 2012-07-11 北京大学 文本数据处理方法和装置
CN102811113A (zh) * 2012-07-12 2012-12-05 中国电子科技集团公司第二十八研究所 一种字符型报文压缩方法
CN105915443A (zh) * 2016-06-15 2016-08-31 Tcl移动通信科技(宁波)有限公司 一种移动终端对即时通信信息的处理方法及系统
CN106357275A (zh) * 2016-08-30 2017-01-25 国网冀北电力有限公司信息通信分公司 一种哈夫曼压缩方法及装置
CN106790462A (zh) * 2016-12-08 2017-05-31 东软集团股份有限公司 短句传输方法及系统、服务器、发送客户端、接收客户端
CN109412604A (zh) * 2018-12-05 2019-03-01 云孚科技(北京)有限公司 一种基于语言模型的数据压缩方法
CN111866520A (zh) * 2019-04-24 2020-10-30 博世汽车部件(苏州)有限公司 编解码方法、编解码设备以及通信系统
CN117651076A (zh) * 2023-11-29 2024-03-05 哈尔滨工程大学 适配跨域多信道保密信源编码压缩解压方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567294A (zh) * 2010-12-09 2012-07-11 北京大学 文本数据处理方法和装置
CN102811113A (zh) * 2012-07-12 2012-12-05 中国电子科技集团公司第二十八研究所 一种字符型报文压缩方法
CN102811113B (zh) * 2012-07-12 2014-12-10 中国电子科技集团公司第二十八研究所 一种字符型报文压缩方法
CN105915443A (zh) * 2016-06-15 2016-08-31 Tcl移动通信科技(宁波)有限公司 一种移动终端对即时通信信息的处理方法及系统
CN106357275A (zh) * 2016-08-30 2017-01-25 国网冀北电力有限公司信息通信分公司 一种哈夫曼压缩方法及装置
CN106357275B (zh) * 2016-08-30 2019-12-17 国网冀北电力有限公司信息通信分公司 一种哈夫曼压缩方法及装置
CN106790462A (zh) * 2016-12-08 2017-05-31 东软集团股份有限公司 短句传输方法及系统、服务器、发送客户端、接收客户端
CN106790462B (zh) * 2016-12-08 2019-12-06 东软集团股份有限公司 短句传输方法及系统、服务器、发送客户端、接收客户端
CN109412604A (zh) * 2018-12-05 2019-03-01 云孚科技(北京)有限公司 一种基于语言模型的数据压缩方法
CN111866520A (zh) * 2019-04-24 2020-10-30 博世汽车部件(苏州)有限公司 编解码方法、编解码设备以及通信系统
CN117651076A (zh) * 2023-11-29 2024-03-05 哈尔滨工程大学 适配跨域多信道保密信源编码压缩解压方法

Also Published As

Publication number Publication date
CN101534124B (zh) 2011-03-23

Similar Documents

Publication Publication Date Title
CN101534124B (zh) 一种用于短小自然语言的压缩算法
US9223765B1 (en) Encoding and decoding data using context model grouping
CN101783788B (zh) 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置
CN112953550B (zh) 数据压缩的方法、电子设备及存储介质
Awan et al. LIPT: A lossless text transform to improve compression
CN102880703B (zh) 中文网页数据编码、解码方法及系统
EP1266455A1 (en) Method and apparatus for optimized lossless compression using a plurality of coders
CN113965207B (zh) 一种基于deflate霍夫曼编码的动态码表生成装置和方法
Vijayalakshmi et al. LOSSLESS TEXT COMPRESSION FOR UNICODE TAMIL DOCUMENTS.
Mahmood et al. An Efficient 6 bit Encoding Scheme for Printable Characters by table look up
US7023365B1 (en) System and method for compression of words and phrases in text based on language features
CN116827354B (zh) 一种文件数据分布式存储管理系统
Rathore et al. A brief study of data compression algorithms
US9235610B2 (en) Short string compression
KR100494876B1 (ko) 2바이트 문자 데이터 압축 방법
CN102891730B (zh) 基于bcd码卫星短报文的编码方法和装置
Shanmugasundaram et al. IIDBE: A lossless text transform for better compression
Shukla et al. A Comparative Analysis of Lossless Compression Algorithms on Uniformly Quantized Audio Signals
Ghuge Map and Trie based Compression Algorithm for Data Transmission
EP2113845A1 (en) Character conversion method and apparatus
Shanmugasundaram et al. Text preprocessing using enhanced intelligent dictionary based encoding (EIDBE)
Arif et al. An enhanced static data compression scheme of Bengali short message
CN102567294A (zh) 文本数据处理方法和装置
Mahmood et al. Efficient compression scheme for large natural text using zipf distribution
Rani et al. A survey on lossless text data compression techniques

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110323

Termination date: 20131216