CN101520771A - 一种对词库压缩编码及解码的方法和系统 - Google Patents
一种对词库压缩编码及解码的方法和系统 Download PDFInfo
- Publication number
- CN101520771A CN101520771A CN200910038254A CN200910038254A CN101520771A CN 101520771 A CN101520771 A CN 101520771A CN 200910038254 A CN200910038254 A CN 200910038254A CN 200910038254 A CN200910038254 A CN 200910038254A CN 101520771 A CN101520771 A CN 101520771A
- Authority
- CN
- China
- Prior art keywords
- letter
- frequency
- coding
- word
- dictionary
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种对词库压缩编码的方法,包括:A.统计词库中各个单词后生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组;B.将第一频率表中的每组频率数据按照大小顺序进行排序,将每组频率数据位于相同序位的频率数据相加,得到包括若干个和频率的第二频率表;C.对和频率进行哈夫曼编码获得对应的二进制码,将获得的二进制码分配给第二频率表中每个和频率所对应的序位,生成编码表;D.根据所述编码表中首字母、每个字母的各个后续字母所在序位对应的二进制码,替换词库中单词的字母,生成单词对应的二进制编码。本发明还提供了一种对词库压缩编码的系统,以及一种对词库编码进行解码的方法和系统。本发明提高了词库中单词编码的压缩率,而且解码简单。
Description
技术领域
本发明涉及压缩编码技术,特别是涉及一种对词库压缩编码及解码的方法和系统。
背景技术
传统的对词库的压缩编码大多采用的是哈夫曼编码,哈夫曼编码根据单词中字母的出现次数的高低构造哈夫曼树,出现次数越高的字母分配的二进制码码长越短,从而使得词库中全体单词的平均码长尽可能短,但是这样对单词进行哈夫曼编码的压缩率还不够,根据统计数据显示,采用哈夫曼编码对英文词库的压缩率是48.84%,对俄文词库的压缩率是48.64%,对土耳其文词库的压缩率是51.68%,对阿拉伯文词库的压缩率是56.50%,对葡萄牙文词库的压缩率是46.45%,可见对于各种语言词库的压缩率还有可以提高的空间;而采用其他的Lzw压缩算法运算量又太大,我们需要一种解码简单,压缩率更高的词库压缩方法。
哈夫曼编码的特点是各个编码间的频率差越大,即重码率越大,其压缩率就越高,利用哈夫曼编码的这个特点,提高哈夫曼编码压缩率的关键是提高编码的重码率。
发明内容
基于现有技术中的不足,本发明需要解决的问题之一是提供一种对词库压缩编码的方法,能够提高词库中单词编码的重码率,从而提高对词库中单词进行哈夫曼编码的压缩率。
本发明需要解决的问题之二是提供一种对词库压缩编码的系统,能够提高词库中单词编码的重码率,从而提高对词库中单词进行哈夫曼编码的压缩率。
本发明需要解决的问题之三是提供一种对词库编码进行解码的方法,能够快速简单地对编码后的单词进行解码。
本发明需要解决的问题之四是提供一种对词库编码进行解码的系统,能够快速简单地对编码后的单词进行解码。
为解决本发明的问题之一,本发明提供以下技术方案:一种对词库压缩编码的方法,包括以下步骤:
A、统计词库中各个单词后生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组,所述首字母频率数据组包括每个字母在词库单词中作为首字母的出现次数,所述后续字母频率数据组包括每个字母的各个后续字母在词库单词中的出现次数;
B、将所述第一频率表中的每组频率数据按照大小顺序进行排序,再将所述第一频率表中各组位于相同序位的频率数据进行相加,得到包括若干个和频率的第二频率表;
C、对所述的若干个和频率进行哈夫曼编码获得对应的若干个二进制码,将获得的二进制码分配给第二频率表中每个和频率所对应的序位,生成编码表;
D、根据所述编码表中首字母、每个字母的各个后续字母所在序位对应的二进制码,替换词库中单词的字母,生成单词对应的二进制编码。
作为本发明一种对词库压缩编码的方法的一种实施方式,所述步骤A具体包括以下步骤:
A1、获取一个单词,读取其首字母;
A2、判断当前读取的字母是否是首字母,如果是,该字母作为首字母的频率加一,如果不是,该字母作为当前前续字母的后续字母的频率加一;
A3、将当前读取的字母作为当前前续字母;
A4、判断当前读取的字母是否是单词的最后一个字母,如果不是,读取下一个字母,并返回A2,如果是最后一个字母,则返回A1,直到词库中的所有单词都被统计;
A5、生成第一频率表,所述第一频率表包括若干组数据,每组数据对应一个字母的各个后续字母的出现次数,还包括一组对应各个首字母出现次数的数据。
作为本发明一种对词库压缩编码的方法的一种实施方式,所述第一频率表中的首字母频率数据组以及若干组后续字母频率数据组作为该频率表中的行数据;所述步骤B中的相同序位为位于第二频率表中同一列的位置。
作为本发明一种对词库压缩编码的方法的一种实施方式,所述步骤C具体包括:
C1、将所述的若干个和频率作为若干个节点构造哈夫曼树;
C2、将哈夫曼树中节点的左孩子路径标识为0,右孩子路径标识为1,然后获得各个和频率对应节点到根节点的路径,得到各个和频率对应的二进制码;
C3、在第二频率表中,将获得的二进制码分配给其对应的和频率所在的列,然后将第二频率表中的频率数据用相应的后续字母替换,生成编码表。
作为本发明一种对词库压缩编码的方法的一种实施方式,所述步骤D包括:
D1、获取一个单词;
D2、从编码表中对应首字母的行中找到该单词首字母所在的列,用该列对应的二进制码替换该首字母;D3、读取下一个字母及其前续字母;
D4、从编码表中找到该前续字母所在的行,在该行中找到当前读取字母所在的列,用该列对应的二进制码替换当前读取字母,返回D3,直到单词的最后一个字母被替换,生成单词所对应的二进制编码,再返回D1。
为解决本发明的问题之二,本发明提供以下技术方案:提供一种对词库压缩编码的系统,其包括:词库,用于存储单词;统计模块,用于统计词库中各个单词后生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组,所述首字母频率数据组包括每个字母在词库所有单词中作为首字母的出现次数,所述后续字母频率数据组包括在词库所有单词中每个字母的各个后续字母的出现次数;存储模块,用于存储所述第一频率表、以及哈夫曼编码模块生成的编码表;第二频率表生成模块,用于将所述第一频率表中的每组频率数据按照大小顺序进行排序,再将所述第一频率表中各组位于相同序位的频率数据进行相加,得到包括若干个和频率的第二频率表;哈夫曼编码模块,用于对所述的若干个和频率进行哈夫曼编码获得对应的若干个二进制码,将获得的二进制码分配给第二频率表中每个和频率所对应的序位,生成编码表;编码替换模块,用于利用所述存储模块中的编码表,根据该编码表中首字母、每个字母的各个后续字母所在序位对应的二进制码,替换词库中单词的字母,生成单词对应的二进制编码。
为解决本发明的问题之三,本发明提供以下技术方案:本发明还提供一种对词库编码进行解码的方法,包括以下步骤:
E、获取一个单词的二进制码;
F、将步骤E中的二进制码拆分成若干个编码表中包含的二进制码;
G、用于根据编码表查找与所述拆分后的二进制码所对应的首字母或每个字母的各个后续字母,并用查到的字母替换二进制编码生成单词。
为解决本发明的问题之四,本发明提供以下技术方案:一种对词库编码进行解码的系统,包括:编码词库,用于存储二进制编码单词;输入模块,用于从所述编码词库中获取一个单词的二进制编码;编码表存储模块,用于存储编码表,所述编码表包括每个字母的各个后续字母对应的二进制码,以及每个字母作为首字母所对应的二进制码;拆分模块,用于将所述单词的二进制编码拆分成N个编码表中包含的二进制码;查找替换模块,用于根据编码表查找与所述拆分模块拆分后的二进制码所对应的首字母或每个字母的各个后续字母,生成字母单词。
与现有技术相比,本发明对后续字母的出现次数进行排序,将每列的频率相加得到的若干个列频率进行哈夫曼编码,生成一张编码表,根据此编码表得到的单词二进制编码增加了字母的重码率,从而提高了压缩率。另,显而易见地,对词库的二进制编码的解码只需按照编码表将编码拆分成若干个二进制码,并在编码表中查找对应的字母进行替换就可以完成一个单词的解码,该解码过程算法简单,运算量小。
附图说明
结合附图对本发明作进一步阐述,但附图中的实施例不构成对本发明的任何限制。
图1是本发明实施例中的一种对词库压缩编码的方法流程图。
图2是图1中步骤S01的详细流程图。
图3是图1步骤S03在一个实施方式中所构造的哈夫曼树。
图4是本发明实施例中的一种对词库编码进行解码的方法流程图。
图5是本发明实施例中的一种对词库压缩编码的系统结构示意图。
图6是本发明实施例中的一种对词库编码进行解码的系统结构示意图。
具体实施方式
本发明根据事先提供的字符序列数据库(比如英文单词库),计算出每个字符序列中每个字符作为首字符出现的频率,以及每个字符的后续字符的出现频率,从而生成一张字符频率表。此频率表是按照降序排列,即频率高的序列号小,频率低的序列号大。将每列的频率相加得到的若干个列频率进行哈夫曼编码,生成一张编码表,根据此编码表得到的单词二进制编码增加了字母的重码率,从而提高了单词库的压缩率。
下面结合以下实施例对本发明作进一步说明,参考图1,一种对词库压缩编码的方法,包括以下步骤:
步骤S01,统计词库中各个单词后生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组,所述首字母频率数据组包括每个字母在词库单词中作为首字母的出现次数,所述后续字母频率数据组包括每个字母的各个后续字母在词库单词中的出现次数;其中后续字母的意思是:如英文单词make,字母m的后续字母是a,字母a的后续字母是k,k的后续字母是e,而e没有后续字母;单词的首字母m是“NU”的后续字母,“NU”是指单词的开始,“NU”的后续字母是每个单词的首字母。
步骤S02,将所述第一频率表中的每组频率数据按照大小顺序进行排序,再将所述第一频率表中各组位于相同序位的频率数据进行相加,得到包括若干个和频率的第二频率表;
步骤S03,对所述的若干个和频率进行哈夫曼编码获得对应的若干个二进制码,将获得的二进制码分配给第二频率表中每个和频率所对应的序位,生成编码表;
步骤S04,根据所述编码表中首字母、每个字母的各个后续字母所在序位对应的二进制码,替换词库中单词的字母,生成单词对应的二进制编码。
下面将详细阐述对词库进行压缩编码的整个过程。
图2是图1中步骤S01的详细流程图,步骤S01中所述的“逐个统计词库中的各个单词,计算出每个字母的各个后续字母的出现次数”是指统计词库中每个字母的后续字母,将词库中的单词逐个统计,每个单词又逐个字母统计。具体包括如下步骤:
步骤S011,获取一个单词;
步骤S012,读取其首字母;
步骤S013,判断当前读取的字母是否是首字母;
步骤S014,如果是,该字母作为首字母的频率加一,然后执行步骤S016;
步骤S015,如果不是,该字母作为当前前续字母的后续字母的频率加一;
步骤S016,将当前读取的字母作为当前前续字母;
步骤S017,判断当前读取的字母是否是单词的最后一个字母;
步骤S018,如果不是,读取下一个字母,并返回步骤S013;
步骤S019,如果是最后一个字母,则返回步骤S011,直到词库中的所有单词都被统计完。
统计完成后可以生成第一频率表,如下所示的表1,是根据英文词库统计出来的后续字符频率表。该第一频率表的每行对应一个字母的各个后续字母的出现次数。其中第二行是以“NU”作为前续字母的各个首字母的出现次数,第一列对应的是各个前续字母。
表1
编码 | b | c | d | e | f | g | h | i | j | k | 1 | m | n | o | p | q | s | t | u | v | x | v | ||||
NU | 1623 | 661 | 960 | 1180 | 4151 | 567 | 745 | 569 | 3196 | 45 | 628 | 1845 | 847 | 1330 | 1274 | 855 | 73 | 1298 | 2958 | 2155 | 644 | 386 | 379 | 155 | 884 | 675 |
a | 14 | 375 | 244 | 167 | 19 | 30 | 185 | 20 | 144 | 0 | 76 | 933 | 124 | 908 | 13 | 93 | 1 | 627 | 228 | 1110 | 38 | 31 | 40 | 11 | 125 | 12 |
b | 131 | 37 | 0 | 1 | 163 | 0 | 0 | 0 | 141 | 1 | 1 | 521 | 3 | 2 | 145 | 0 | 0 | 65 | 37 | 4 | 41 | 0 | 1 | 0 | 0 | 0 |
c | 365 | 1 | 17 | 1 | 601 | 0 | 1 | 281 | 251 | 0 | 197 | 56 | 0 | 0 | 140 | 0 | 0 | 66 | 69 | 215 | 82 | 0 | 0 | 0 | 94 | 0 |
d | 119 | 4 | 0 | 43 | 552 | 3 | 36 | 3 | 293 | 1 | 1 | 101 | 4 | 9 | 131 | 1 | 0 | 45 | 144 | 3 | 46 | 3 | 3 | 0 | 53 | 0 |
e | 208 | 15 | 111 | 3594 | 154 | 35 | 44 | 10 | 53 | 1 | 9 | 383 | 117 | 1048 | 49 | 60 | 7 | 2318 | 3946 | 339 | 39 | 43 | 40 | 22 | 71 | 10 |
. | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
然后对表1中各行的频率按照从大到小的顺序进行排列,并给排列后的表格的每列分配一个序列号,如表1中的字母a的后续字符中t的频率是最高的,后续字符1的频率其次,n的再次,这样我们就可以将t排在字母a的后续字母第一位,它的序列号为1;1排在第二位,它的序列号为2;n排在第三位,它的序列号为3;这样按频率从高到低一直排下去;然后再将表中每列的频率相加得到若干个列频率(即上述的和频率),在表中最后一行增加一行存放各列的列频率,增加一行存放各列列频率的百分比,生成第二频率表(若表2所示)。
表2
编码 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
N1 | 4151 | 3196 | 2958 | 2155 | 1845 | 1523 | 1330 | 1298 | 1274 | 1180 | 960 | 884 | 855 | 847 | 745 | 675 | 661 | 644 | 628 | 669 | 667 | 386 | 379 | 155 | 73 | 45 |
a | 1110 | 933 | 008 | 627 | 375 | 244 | 228 | 185 | 167 | 144 | 125 | 124 | 93 | 76 | 40 | 38 | 31 | 30 | 20 | 19 | 14 | 13 | 12 | 11 | 1 | 0 |
b | 521 | 163 | 145 | 141 | 131 | 65 | 41 | 37 | 37 | 4 | 3 | 2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
c | 601 | 365 | 2B1 | 251 | 215 | 197 | 140 | 94 | 82 | 69 | 66 | 56 | 17 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
d | 552 | 293 | 144 | 131 | 119 | 101 | 53 | 46 | 45 | 43 | 36 | 9 | 4 | 4 | 3 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
e | 3946 | 3594 | 2318 | 1048 | 383 | 339 | 208 | 154 | 117 | 111 | 71 | 50 | 53 | 49 | 44 | 43 | 40 | 39 | 35 | 22 | 15 | 10 | 10 | 9 | 7 | 1 |
. | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
频率 | 34837 | 18295 | 12941 | 8417 | 6421 | 5389 | 4261 | 3676 | 2932 | 2556 | 2054 | 1700 | 1444 | 1313 | 1120 | 995 | 929 | 844 | 791 | 677 | 641 | 448 | 415 | 182 | 86 | 48 |
百分比 | 30.72% | 16.13% | 11.41% | 7.42% | 5.65% | 4.76% | 3.76% | 3.24% | 2.59% | 2.25% | 1.81% | 1.50% | 1.27% | 1.16% | 0.99% | 0.88% | 0.82% | 0.74% | 0.70% | 0.60% | 0.57% | 0.40% | 0.37% | 0.16% | 0.08% | 0.04% |
参考图3,对上述得到的各个列频率进行哈夫曼编码,具体包括:
S031、对表2中每列对应的列频率作为节点构造哈夫曼树;哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树;所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度。
S032、将哈夫曼树中节点的左孩子路径标识为0,右孩子路径标识为1,然后获得各个列频率对应节点到根节点的路径,得到各个列频率所对应的二进制码;
S033、在表2中,将获得的二进制码分配给其对应列频率所在的列,存放在第一行,用相应的后续字母替换表2中的频率,生成编码表(如表3所示)。
表3
哈夫曼编码 | 11 | 101 | 011 | 1001 | 0101 | 0001 | 0011 | 10001 | 01001 | 00001 | 00101 | 100001 | 00001 | 000001 | 001001 | 1000001 | 1000000 | . |
NU | e | i | s | t | 1 | a | n | r | o | d | c | y | p | m | g | z | b | . |
a | t | 1 | n | r | b | c | s | g | d | i | y | m | p | k | w | u | v | . |
b | 1 | e | o | i | a | r | u | b | s | t | m | n | d | j | k | w | c | . |
c | e | a | h | i | t | k | o | y | u | s | r | 1 | c | b | d | g | f | . |
d | e | i | s | o | a | 1 | y | u | r | d | g | n | b | m | f | h | t | . |
e | s | d | r | n | 1 | t | a | e | m | c | y | p | i | l | g | v | w | . |
. | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
根据上面的编码表(表3),用其中的二进制码替换词库中各个单词的字母,生成单词对应的二进制编码。
替换的规则是:每个字母,根据其编码是由字母本身和它的前续字母决定的,首字母的前续字母是NU。如有一个单词是‘eda’,首先确定首字母‘e’的编码,由于e是首字母,所以它的前续字母是NU,在表3中,找到NU的后续字母为‘e’的编码是‘11’,再查找‘d’的编码,‘d’的前续编码是‘e’,在表3中找到‘e’的后续字母为‘d’的编码是‘101’,按此方法找到‘a’的编码是‘0101’,得到该单词‘eda’对应的二进制编码是‘111010101’。
相应地,针对上述得到的单词编码,其解码过程与编码过程是相反的。它的解码顺序是从第一个编码开始,第一个编码的前续编码肯具体步骤如下:
步骤S11、获取一个单词的二进制编码;
步骤S12、将所述单词的二进制编码拆分成N个编码表中包含的二进制码,初始化X为1;
步骤S13、在编码表中存放首字母的行中查找第X个二进制码对应的字母作为其替换字母,并作为当前前续字母;
步骤S14、将X加1;
步骤S15、在编码表中找到当前前续字母对应的行,在该行中查找第X个二进制码对应的字母作为其替换字母,并作为当前前续字母;
步骤S16、判断X是否小于N,如果是,返回步骤S14,否则返回步骤S11。
例如有一串二进制编码为‘0001000100001’,首先根据哈夫曼树得到的编码序列是‘0001’、‘0001’、‘10001’。第一个编码的前序编码是NU,则在表3中,找到NU的‘0001’编码的后续字母是‘a’,将‘a’作为当前前续编码;在当前前续字母‘a’的后续编码中找到‘0001’对应的字母是‘c’;再将‘c’作为当前前续字母,找到它的后续编码为‘10001’的字母是‘c’,这样就解码得出对应的字符串是
‘acc’。
关于压缩率的比较如下:
从表2提供的频率统计我们可以看出,01~04这四个编码的占用率之和达到了65.68%,其中01编码的占用率就达到了30.72%。表4是原始词库中各个字母的使用频率统计表,从此表中可以看出,前面8个字母的使用频率之和才为65.60%。可以看出,使用本发明的二次编码的重码率要比原来未使用二次编码时的重码率高的多,这就使得本发明的二次编码的压缩率比原来未使用二次编码时的压缩率高。
表4
字母 | i | e | n | 1 | a | t | O | S??? | r |
频率 | 18301 | 14726 | 9974 | 7803 | 6568 | 6196 | 5903 | 4928 | 4607 |
百分比 | 16.14% | 12.98% | 8.79% | 6.88% | 5.79% | 5.46% | 5.2% | 4.35% | 4.06% |
表5是几种语言的采用本发明所述二次编码的压缩率和直接哈夫曼编码压缩率的对比表,从表中可以看出,使用本发明所述二次编码压缩率要比直接哈夫曼编码压缩率要高10%以上,平均高出16%。
表5
语言字库 | 哈夫曼压缩压缩率 | 二次编码压缩 | 二次编码比哈夫曼压缩率高 |
英文 | 48.84% | 56.71% | 16.11% |
俄文 | 48.64% | 58.79% | 20.87% |
土耳其文 | 51.68% | 59.10% | 14.36% |
阿拉伯文 | 56.50% | 62.59% | 10.78% |
葡萄牙文 | 46.45% | 56.08% | 20.73% |
与上述所说的编码方法相对应,本发明还提供了一种对词库压缩编码的系统,参考图5,该系统包括:词库1;统计模块2,用于逐个统计词库中的各个单词,计算出每个字母的各个后续字母的出现次数,生成第一频率表,所述第一频率表的每行对应一个字母的各个后续字母的出现次数,还包括一行各个字母作为首字母的出现次数;存储模块3,用于存储所述第一频率表、以及哈夫曼编码模块生成的编码表;第二频率表生成模块4,用于对所述第一频率表中各行的频率按照从大到小的顺序进行排序,再将每列的频率相加得到若干个列频率,生成第二频率表;哈夫曼编码模块5,用于对所述的列频率进行哈夫曼编码,每个列频率所在的列对应一个二进制码,用相应的后续字母替换第二频率表中的频率,生成编码表;编码替换模块6,用于根据所述存储模块中的编码表,用所述的二进制码替换各个单词中的字母,生成单词对应的二进制编码。
与上述所说的解码方法相对应,本发明还提供了一种对词库编码进行解码的系统,参考图6,该系统包括:编码词库11;输入模块22,用于从所述编码词库中获取一个单词的二进制编码;编码表存储模块33,用于存储编码表;拆分模块44,用于将所述单词的二进制编码拆分成N个编码表中包含的二进制码;查找替换模块55,用于在编码表中存放首字母的行中查找第1个二进制码对应的字母作为其替换字母,并作为当前前续字母;接着继续在编码表中找到当前前续字母对应的行,在该行中查找第2个二进制码对应的字母作为其替换字母,直到最后一个二进制码被替换成字母,得到所获取二进制编码对应的单词。
本发明巧妙的利用单词字母间的前后依赖规则,使用中间编码,大幅增加词库中字母的重码率,加大字母间的频率差,充分发挥哈夫曼编码的优点,使其压缩率大大的提高。
最后应当说明的是,以上实施例仅用于说明本发明的技术方案,而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。
Claims (9)
1.一种对词库压缩编码的方法,其特征在于,包括以下步骤:
A、统计词库中各个单词后生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组,所述首字母频率数据组包括每个字母在词库单词中作为首字母的出现次数,所述后续字母频率数据组包括每个字母的各个后续字母在词库单词中的出现次数;
B、将所述第一频率表中的每组频率数据按照大小顺序进行排序,再将所述第一频率表中各组位于相同序位的频率数据进行相加,得到包括若干个和频率的第二频率表;
C、对所述的若干个和频率进行哈夫曼编码获得对应的若干个二进制码,将获得的二进制码分配给第二频率表中每个和频率所对应的序位,生成编码表;
D、根据所述编码表中首字母、每个字母的各个后续字母所在序位对应的二进制码,替换词库中单词的字母,生成单词对应的二进制编码。
2.根据权利要求1所述的一种对词库压缩编码的方法,其特征在于,所述步骤A具体包括以下步骤:
A1、获取一个单词,读取其首字母;
A2、判断当前读取的字母是否是首字母,如果是,该字母作为首字母的频率加一,如果不是,该字母作为当前前续字母的后续字母的频率加一;
A3、将当前读取的字母作为当前前续字母;
A4、判断当前读取的字母是否是单词的最后一个字母,如果不是,读取下一个字母,并返回A2,如果是最后一个字母,则返回A1,直到词库中的所有单词都被统计;
A5、将统计后的数据生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组,其中首字母频率数据组对应每个字母在词库单词中作为首字母的出现次数,所述后续字母频率数据组对应每个字母的各个后续字母在词库单词中的出现次数。
3.根据权利要求2所述的一种对词库压缩编码的方法,其特征在于,所述第一频率表中的首字母频率数据组以及若干组后续字母频率数据组作为该频率表中的行数据;所述步骤B中的相同序位为位于第二频率表中同一列的位置。
4.根据权利要求3所述的一种对词库压缩编码的方法,其特征在于,所述步骤C具体包括:
C1、将所述的若干个和频率作为若干个节点构造哈夫曼树;
C2、将哈夫曼树中节点的左孩子路径标识为0,右孩子路径标识为1,然后获得各个和频率对应节点到根节点的路径,得到各个和频率对应的二进制码;
C3、在第二频率表中,将获得的二进制码分配给其对应的和频率所在的列,然后将第二频率表中的频率数据用相应的后续字母替换,生成编码表。
5.根据权利要求4所述的一种对词库压缩编码的方法,其特征在于,所述步骤D包括:
D1、获取一个单词;
D2、从编码表中对应首字母的行中找到该单词首字母所在的列,用该列对应的二进制码替换该首字母;
D3、读取下一个字母及其前续字母;
D4、从编码表中找到该前续字母所在的行,在该行中找到当前读取字母所在的列,用该列对应的二进制码替换当前读取字母,返回D3,直到单词的最后一个字母被替换,生成单词所对应的二进制编码,再返回D1。
6.一种对权利要求1中所述词库压缩编码进行解码的方法,其特征在于,包括以下步骤:
E、获取一个单词的二进制码;
F、将步骤E中的二进制码拆分成若干个编码表中包含的二进制码;
G、用于根据编码表查找与所述拆分后的二进制码所对应的首字母或每个字母的各个后续字母,并用查到的字母替换二进制编码生成单词。
7.一种对词库压缩编码的系统,其特征在于,包括:
词库,用于存储单词;
统计模块,用于统计词库中各个单词后生成第一频率表,该第一频率表包括一组首字母频率数据组以及若干组后续字母频率数据组,所述首字母频率数据组包括每个字母在词库所有单词中作为首字母的出现次数,所述后续字母频率数据组包括在词库所有单词中每个字母的各个后续字母的出现次数;
存储模块,用于存储所述第一频率表、以及哈夫曼编码模块生成的编码表;
第二频率表生成模块,用于将所述第一频率表中的每组频率数据按照大小顺序进行排序,再将所述第一频率表中各组位于相同序位的频率数据进行相加,得到包括若干个和频率的第二频率表;
哈夫曼编码模块,用于对所述的若干个和频率进行哈夫曼编码获得对应的若干个二进制码,将获得的二进制码分配给第二频率表中每个和频率所对应的序位,生成编码表;
编码替换模块,用于利用所述存储模块中的编码表,根据该编码表中首字母、每个字母的各个后续字母所在序位对应的二进制码,替换词库中单词的字母,生成单词对应的二进制编码。
8.一种对词库编码进行解码的系统,其特征在于,包括:
编码词库,用于存储二进制编码单词;
输入模块,用于从所述编码词库中获取一个单词的二进制编码;
编码表存储模块,用于存储编码表,所述编码表包括每个字母的各个后续字母对应的二进制码,以及每个字母作为首字母所对应的二进制码;
拆分模块,用于将所述单词的二进制编码拆分成N个编码表中包含的二进制码;
查找替换模块,用于根据编码表查找与所述拆分模块拆分后的二进制码所对应的首字母或每个字母的各个后续字母,生成字母单词。
9.根据权利要求8所述的一种对词库编码进行解码的系统,其特征在于:
所述编码表包括若干行,各行分别对应一个字母的各个后续字母,还包括一行作为首字母的字母,该编码表中的各列分别对应有一个二进制码;
所述查找替换模块,用于在编码表中存放首字母的行中查找第1个二进制码对应的字母作为其替换字母,并作为当前前续字母;接着继续在编码表中找到当前前续字母对应的行,在该行中查找第2个二进制码对应的后续字母作为其替换字母,直到最后一个二进制码被替换成字母,得到所获取二进制编码对应的单词。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910038254A CN101520771A (zh) | 2009-03-27 | 2009-03-27 | 一种对词库压缩编码及解码的方法和系统 |
EP09842107A EP2413250A4 (en) | 2009-03-27 | 2009-12-23 | METHOD AND SYSTEM FOR COMPRESSED CODING AND DECODING FOR WORD MATERIAL |
PCT/CN2009/075898 WO2010108373A1 (zh) | 2009-03-27 | 2009-12-23 | 一种对词库压缩编码及解码的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910038254A CN101520771A (zh) | 2009-03-27 | 2009-03-27 | 一种对词库压缩编码及解码的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101520771A true CN101520771A (zh) | 2009-09-02 |
Family
ID=41081367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910038254A Pending CN101520771A (zh) | 2009-03-27 | 2009-03-27 | 一种对词库压缩编码及解码的方法和系统 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2413250A4 (zh) |
CN (1) | CN101520771A (zh) |
WO (1) | WO2010108373A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010108373A1 (zh) * | 2009-03-27 | 2010-09-30 | 广东国笔科技股份有限公司 | 一种对词库压缩编码及解码的方法和系统 |
CN103457700A (zh) * | 2013-08-20 | 2013-12-18 | 重庆邮电大学 | Ndn/ccn网络中的数据包内容名称编码压缩方法 |
CN108092670A (zh) * | 2017-11-03 | 2018-05-29 | 西安万像电子科技有限公司 | 编码方法和装置 |
CN109412604A (zh) * | 2018-12-05 | 2019-03-01 | 云孚科技(北京)有限公司 | 一种基于语言模型的数据压缩方法 |
CN111010194A (zh) * | 2018-10-07 | 2020-04-14 | 吕志强 | 重新表示式二进制数据可逆性压缩法 |
CN111506781A (zh) * | 2020-04-21 | 2020-08-07 | 四川创智联恒科技有限公司 | 一种大幅压缩数据库体积的方法、系统、终端设备和可读存储介质 |
CN111898135A (zh) * | 2020-02-12 | 2020-11-06 | 北京京东尚科信息技术有限公司 | 数据处理方法、数据处理装置、计算机设备和介质 |
CN117155406A (zh) * | 2023-10-30 | 2023-12-01 | 深圳市成为高科技有限公司 | 一种社会调查数据智能管理系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019895B (zh) * | 2012-12-28 | 2015-01-28 | 华为技术有限公司 | 文件存储方法及装置 |
CN116614139B (zh) * | 2023-07-20 | 2023-09-19 | 酒仙网络科技股份有限公司 | 一种售酒小程序内用户交易信息压缩存储方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1031680C (zh) * | 1992-08-22 | 1996-04-24 | 声宝股份有限公司 | 中文文件档压缩处理方法及装置 |
JP3161697B2 (ja) * | 1997-04-18 | 2001-04-25 | 富士ゼロックス株式会社 | 符号化装置、復号装置および符号化復号装置ならびにそれらの方法 |
US6606040B2 (en) * | 2001-02-13 | 2003-08-12 | Mosaid Technologies, Inc. | Method and apparatus for adaptive data compression |
CN101520771A (zh) * | 2009-03-27 | 2009-09-02 | 广东国笔科技股份有限公司 | 一种对词库压缩编码及解码的方法和系统 |
-
2009
- 2009-03-27 CN CN200910038254A patent/CN101520771A/zh active Pending
- 2009-12-23 EP EP09842107A patent/EP2413250A4/en not_active Withdrawn
- 2009-12-23 WO PCT/CN2009/075898 patent/WO2010108373A1/zh active Application Filing
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010108373A1 (zh) * | 2009-03-27 | 2010-09-30 | 广东国笔科技股份有限公司 | 一种对词库压缩编码及解码的方法和系统 |
CN103457700A (zh) * | 2013-08-20 | 2013-12-18 | 重庆邮电大学 | Ndn/ccn网络中的数据包内容名称编码压缩方法 |
CN103457700B (zh) * | 2013-08-20 | 2017-03-01 | 重庆邮电大学 | Ndn/ccn网络中的数据包内容名称编码压缩方法 |
CN108092670A (zh) * | 2017-11-03 | 2018-05-29 | 西安万像电子科技有限公司 | 编码方法和装置 |
CN108092670B (zh) * | 2017-11-03 | 2019-06-07 | 西安万像电子科技有限公司 | 编码方法和装置 |
CN111010194A (zh) * | 2018-10-07 | 2020-04-14 | 吕志强 | 重新表示式二进制数据可逆性压缩法 |
CN111010194B (zh) * | 2018-10-07 | 2024-08-09 | 吕志强 | 重新表示式二进制数据可逆性压缩法 |
CN109412604A (zh) * | 2018-12-05 | 2019-03-01 | 云孚科技(北京)有限公司 | 一种基于语言模型的数据压缩方法 |
CN111898135A (zh) * | 2020-02-12 | 2020-11-06 | 北京京东尚科信息技术有限公司 | 数据处理方法、数据处理装置、计算机设备和介质 |
CN111506781A (zh) * | 2020-04-21 | 2020-08-07 | 四川创智联恒科技有限公司 | 一种大幅压缩数据库体积的方法、系统、终端设备和可读存储介质 |
CN117155406A (zh) * | 2023-10-30 | 2023-12-01 | 深圳市成为高科技有限公司 | 一种社会调查数据智能管理系统 |
CN117155406B (zh) * | 2023-10-30 | 2024-02-02 | 深圳市成为高科技有限公司 | 一种社会调查数据智能管理系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2413250A4 (en) | 2012-09-26 |
WO2010108373A1 (zh) | 2010-09-30 |
EP2413250A1 (en) | 2012-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101520771A (zh) | 一种对词库压缩编码及解码的方法和系统 | |
US20060087460A1 (en) | Method of generating Huffman code length information | |
CN1998241B (zh) | 用于对xml文档编码和/或解码的方法及装置 | |
CN104283567A (zh) | 一种名称数据的压缩、解压缩方法及设备 | |
CN103858433A (zh) | 分层熵编码及解码 | |
CN101976253A (zh) | 一种中文变异文本匹配识别方法 | |
CN105356968B (zh) | 基于循环置换矩阵的网络编码的方法及系统 | |
US11070231B2 (en) | Reducing storage of blockchain metadata via dictionary-style compression | |
US20030212696A1 (en) | Binary-ordered compression for unicode | |
CN115104305A (zh) | 用于图压缩的多上下文熵编码 | |
CN100578943C (zh) | 一种优化的霍夫曼解码方法和装置 | |
CN107436865B (zh) | 一种词对齐训练方法、机器翻译方法及系统 | |
JPH08167852A (ja) | データ圧縮方法及び装置 | |
US20040107297A1 (en) | Method for improving the functions of the binary representation of mpeg-7 and other xml-based content descriptions | |
CN103024380A (zh) | 一种数据的熵编码方法和装置 | |
US9319064B2 (en) | Method for coding a data stream | |
CN102446218A (zh) | 一种支持xml数据动态更新的编码方法 | |
CN110569487B (zh) | 一种基于高频率字符替代算法的Base64扩展编码方法及系统 | |
Islam et al. | A Dynamic 5 Bit Data Compression Scheme by Using Set Change Table (5BDC) | |
CN101707484B (zh) | 一种适合硬件实现的快速指数哥伦布码解码方法 | |
Platos et al. | Optimizing alphabet using genetic algorithms | |
Platos et al. | Evolving alphabet using genetic algorithms | |
US20240232158A1 (en) | Compact Probabilistic Data Structure For Storing Log Data | |
Islam et al. | A lossless bit isolation algorithm for data compression by using static dictionary | |
CN116501781B (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090902 |