压缩方法、解压缩方法、压缩装置以及解压缩装置的制造方法

文档序号:10491781阅读:410来源:国知局
压缩方法、解压缩方法、压缩装置以及解压缩装置的制造方法
【专利摘要】本公开涉及一种压缩方法、解压缩方法、压缩装置以及解压缩装置。所述压缩方法包括使计算机执行处理,所述处理包括:确定目标字符串是否记录在第一字典中,目标字符串为包含在输入数据中的压缩目标,第一字典使压缩码与对应的字符串相关;当目标字符串被记录在第一字典中时,输出与目标字符串对应的压缩码;当目标字符串未记录在第一字典中时,在第一数据中搜索目标字符串,第一数据所积累的字符串是输入数据的一部分并且已经被确定为未记录在第一字典中;当在第一数据中检索到目标字符串时,在与第一字典不同的第二字典中记录匹配的字符串;以及输出与目标字符串在第二字典中的记录号对应的压缩码。
【专利说明】
压缩方法、解压缩方法、压缩装置以及解压缩装置
技术领域
[0001]本文中论述的实施方式涉及编码程序等,更具体地,涉及压缩方法、解压缩方法、压缩装置以及解压缩装置。
【背景技术】
[0002]近年来,已经有使用静态字典对压缩目标文件进行编码的常规技术。静态字典是下述字典:基于普通的英文语言字典、日文语言字典、教科书等来指定词和字符出现在文档中的出现频率,并且对出现频率较高的词分配较短的压缩码。在常规技术中,基于静态字典通过将压缩目标文件中的文本转换成分配给静态字典中的词和字符的压缩码来执行压缩处理,以形成压缩文件。
[0003]例如,日本公开特许公报N0.08-288861、国际专利申请的日本国家公开N0.2004-514366以及日本公开特许公报N0.06-222903公开了常规技术。
[0004]然而,在上述常规技术的情况下,分配给未记录在静态字典中的词的压缩码的长度按照压缩文件的数据而增加,这降低了压缩文件的压缩率。
[0005]例如,在常规技术中所使用的静态字典中,未记录以下词,包括人名、地名以及化名。因此,通过将这些词分成形成这些词的字符并且将这些字符转换成分配给相应的字符的压缩码来执行压缩处理。在这种情况下,降低了压缩目标文件的压缩率。
[0006]根据实施方式的一方面,提供了一种编码程序和一种解压缩程序,所述编码程序和所述解压缩程序防止分配给压缩文件中的词等的字符串的压缩码的长度增加。

【发明内容】

[0007]根据本发明的一方面,一种压缩方法包括:确定包含在输入数据中的作为压缩目标的字符串是否记录在第一字典中,在第一字典中,字符串和与字符串对应的压缩码彼此相关;输出与记录在第一字典中的作为压缩目标的字符串对应的压缩码;当作为压缩目标的字符串未记录在第一字典中时,对照作为压缩目标的字符串检查第一数据,第一数据所积累的字符串用作未被确定为记录在第一字典中的输入数据的一部分;在与第一字典不同的第二字典中记录匹配的字符串;以及输出与作为压缩目标的字符串在第二字典中的记录号对应的压缩码。
【附图说明】
[0008]图1是示出了根据实施方式的信息处理装置的压缩处理的流程的示例的第一视图;
[0009]图2是示出了动态字典部的示例的视图;
[0010]图3是示出了实施方式中的信息处理装置的压缩处理的流程的示例的第二视图;[0011 ]图4是示出了压缩文件的块配置的示例的视图;
[0012]图5是示出了实施方式中的信息处理装置的解压缩处理的流程的示例的视图;
[0013]图6是示出了实施方式中的信息处理装置的配置的功能框图;
[0014]图7是示出了用于压缩的zeIkova树的数据结构的示例的视图;
[0015]图8是示出了用于解压缩的zelkova树的数据结构的示例的视图;
[0016]图9是示出了实施方式中的压缩单元的配置的示例的功能框图;
[0017]图10是示出了实施方式中的解压缩单元的配置的示例的功能框图;
[0018]图11是示出了实施方式中的压缩单元的处理步骤的流程图;
[0019]图12是示出了实施方式中的解压缩单元的处理步骤的流程图;
[0020]图13是示出了计算机的硬件配置的示例的示图;
[0021 ]图14是示出了在计算机中运行的程序的配置的示例的示图;以及
[0022]图15是示出了根据另一实施方式的系统中的装置的配置的示例的视图。
【具体实施方式】
[0023]将参照附图来说明本发明的优选实施方式。实施方式不限制本发明。
[0024]图1是根据实施方式的信息处理装置的压缩处理的流程的示例。在信息处理装置中,在存储器中设置了存储区Al、存储区A2、存储区A3以及存储区A4作为用于压缩处理的工作区。在下面的描述中,存储区Al、存储区A2以及存储区A3分别被称为编码部、参考部以及动态字典部。
[0025]信息处理装置读取作为压缩目标的文件F1,并且从文件Fl中的文本提取在文件Fl中均以头字符开始并且由终止符定界的字符串作为词。例如,文件Fl包括数据“‘"KataokaAtalksA...”。包含词“KataokaA”、“talksA”等。终止符是以下符号:空格(空白)、逗号(,)或者句点(.)。在实施方式中,作为示例由“Λ(三角形)”来表示终止符。
[0026]信息处理装置比较位过滤器Cl与字符串,并且确定字符串是否符合(hit)位过滤器Cl。位过滤器是用于指定使用静态字典来压缩的词的字符串的过滤器。当字符串符合位过滤器Cl时,信息处理装置基于静态字典将字符串转换成与词的字符串对应的压缩码并且输出压缩数据。另一方面,当字符串不符合位过滤器Cl的静态字典时,信息处理装置将字符串转换成与在动态字典中记录的词的字符串对应的压缩码并且输出压缩数据。
[0027]静态字典是下述字典:基于普通的英文语言字典、日文语言字典、教科书等来指定词和字符出现在文档中的出现频率,并且对出现频率较高的词和字符分配较短的压缩码。
[0028]动态字典使不符合位过滤器Cl的字符串被存储在滑动窗口上的编码部中,并且被对照在参考部中积累的字符串进行检查。在动态字典中记录匹配的字符串,并且将匹配的字符串的记录号分配为压缩码。稍后将详细地描述动态字典。
[0029]描述了在信息处理装置生成文件Fl中作为压缩目标的词的字符串“talksA”的压缩数据时的处理。假定词的字符串“talksA”符合位过滤器Cl。
[0030]信息处理装置比较词的字符串“talksA”与位过滤器Cl,并且确定词的字符串“talksA”是否符合位过滤器Cl。由于词的字符串“talksA”符合位过滤器Cl,所以信息处理装置将词的字符串“talksA”编码成记录在静态字典中的压缩码。信息处理装置生成包括标识符“O”和词的字符串“talksA”的压缩码的压缩数据dl。标识符“O”是指示基于静态字典对字符串进行了编码的信息。信息处理装置将压缩数据dl写入存储区A4中。
[0031]然后,描述了在信息处理装置生成文件Fl中作为压缩目标的词的字符串“KataokaΛ”的压缩数据时的处理。假定字符串“KataokaA”不符合位过滤器Cl。
[0032]信息处理装置比较词的字符串“KataokaA”与位过滤器Cl,并且确定词的字符串“KataokaA”是否符合位过滤器Cl。由于词的字符串“KataokaA”不符合位过滤器Cl,所以信息处理装置执行以下处理。
[0033]信息处理装置将词的字符串“KataokaA”存储在存储区Al中,并且比较存储区A2中存储的词的字符串与存储区Al中存储的词的字符串,以搜索“匹配的词”。“匹配的词”是存储区A2中存储的、与存储区Al中存储的词的字符串相匹配的词。例如,当在存储区A2中已经存储有字符串“...KataokaA..?”时,匹配的词是“KataokaA”。信息处理装置在存储区A2中搜索“K”并且顺序地检查“a”、“t”、“a”、“ο”、“k”、“a”以及“Λ”是否在通过搜索而定位的“K”在存储区Α2中的位置之后是以该顺序连续。
[0034]当匹配的词的长度等于或大于预定长度Lmin时,信息处理装置在动态字典部的存储区A3中记录匹配的词“KataokaA”。信息处理装置基于动态字典部中的记录内容来生成压缩码。也就是说,信息处理装置将在动态字典部中记录的匹配的词的记录号指定为字符串“KataokaA”的压缩码。信息处理装置生成包含标识符“I”和词的字符串“KataokaA”的压缩码的压缩数据d2。标识符“I”是指示基于动态字典对字符串进行了编码的信息。信息处理装置将压缩数据d2写入存储区A4中。信息处理装置将在存储区Al中存储的字符串添加至存储区A2,以更新存储区A2。
[0035]存储区A2是数据大小被限定的数据区。例如,存储区A2是大约几千字节至几万字节(例如,64千字节)的存储区。当存储有具有等于或大于针对存储区A2限定的数据大小的数据时,信息处理装置在存储区A2的头部存储的旧数据上存储新数据。存储区A2中存储的数据距离随着数据的存储而更新的写入位置的相对地址指示头部位置。
[0036]存储区A3是根据输入文件的大小限定其数据大小的存储区。例如,存储区A3是大约几千字节至几万字节(例如,64千字节)的存储区。例如,当存储有具有等于或大于针对存储区A3限定的数据大小的数据时,信息处理装置禁止存储新数据。
[0037]图2是示出了动态字典部的示例的视图。如图2中所示的动态字典部包括存储区A3和参考表Tl。参考表Tl以对应方式保存记录号、存储位置以及数据长度。在如图2所示的示例中,以二进制表示记录号、存储位置以及数据长度。记录号是指示匹配的词在存储区A3中被记录的顺序的信息。在实施方式中,第一个记录的数据的记录号被设定成“00000000”。存储位置是指示在存储区A3中存储匹配的词的头字符的位置的信息。数据长度是指示匹配的词的长度的信息。
[0038]例如,当匹配的词“KataokaA”是在存储区A3中第二个记录的匹配的词时,信息处理装置在参考表Tl中针对记录号记录“00000001”作为与匹配的词“KataokaA”对应的记录号。由于匹配的词“KataokaA”的头字符“K”存储在存储区A3中的“5”处,所以信息处理装置针对存储位置记录“000000000101”。由于匹配的词“KataokaA”的数据长度是“8”,所以信息处理装置针对数据长度记录“1000”。
[0039]如在图2中所示,当在动态字典部中记录匹配的词“KataokaΛ”时,匹配的词“KataokaA”的记录号是“00000001”。在这种情况下,信息处理装置将字符串“KataokaA”的压缩码设定成“00000001”。信息处理装置生成包含标识符“I”和记录号“00000001”的压缩数据d2作为字符串“KataokaA”的压缩数据d2。
[0040]图3是示出了实施方式中的信息处理装置的压缩处理的流程的示例的第二视图。信息处理装置读取作为压缩目标的文件Fl,并且从作为压缩目标的文件Fl提取在文件Fl中均以头字符开始并且由终止符定界的字符串。例如,文件Fl包括数据..KataokaAtalksΛ…”。
[0041]在信息处理装置生成文件Fl中作为压缩目标的词的字符串“talksA”的压缩数据时的处理与图1中示出的处理相同,因此省略了对其的说明。
[0042]描述了在信息处理装置生成文件Fl中作为压缩目标的词的字符串“KataokaA”的压缩数据时的处理。假定词的字符串“KataokaA”不符合位过滤器Cl。
[0043]信息处理装置比较词的字符串“KataokaA”与位过滤器Cl,并且确定词的字符串“KataokaA”是否符合位过滤器Cl。由于词的字符串“KataokaA”不符合位过滤器Cl,所以信息处理装置执行以下处理。
[0044]信息处理装置将词的字符串“KataokaA”存储在存储区Al中,并且比较存储区A2中存储的词的字符串与存储区Al中存储的词的字符串以搜索“匹配的词”。例如,当存储区A2中未存储有“KataokaA”时,信息处理装置基于静态字典对词的字符串“KataokaA”的单个字符进行编码。也就是说,信息处理装置基于静态字典对“K”、“a”、“t”、“a”、“ο”、“k”、“a”以及“Λ”中的每个进行编码以生成压缩数据d3。信息处理装置将压缩数据d3写入存储区A4中。
[0045]压缩数据(13具有多条压缩数据(131、(132、(133、(134、(135、(136、(137以及(138。压缩数据d31具有标识符“O”以及记录在静态字典中的“K”的压缩码。压缩数据d32具有标识符“O”以及记录在静态字典中的“a”的压缩码。压缩数据d33具有标识符“O”以及记录在静态字典中的“t”的压缩码。压缩数据d34具有标识符“O”以及记录在静态字典中的“a”的压缩码。压缩数据d35具有标识符“O”以及记录在静态字典中的“ο”的压缩码。压缩数据d36具有标识符“O”以及记录在静态字典中的“k”的压缩码。压缩数据d37具有标识符“O”以及记录在静态字典中的“a”的压缩码。压缩数据d38具有标识符“O”以及记录在静态字典中的“Λ”的压缩码。
[0046]信息处理装置将存储区A4中存储的各条压缩数据存储在压缩文件F2中。
[0047]图4是示出了压缩文件F2的块配置的示例的视图。如图4中所示,压缩文件F2包括头部、压缩数据以及尾部。例如,头部具有标识用于生成压缩文件F2的压缩算法的信息和诸如用于压缩的参数的信息。压缩数据与由信息处理装置生成的各条压缩数据对应。尾部具有在完成压缩处理之后的动态字典部的信息。该动态字典部的信息与如图2中所示的动态字典部的信息对应。
[0048]图5是示出了实施方式中的信息处理装置的解压缩处理的流程的示例的视图。在信息处理装置中,在存储器中设置了存储区B1、存储区B2以及存储区B3作为用于解压缩处理的工作区。信息处理装置在存储区BI上加载压缩文件F2并且顺序地读取各条压缩数据。信息处理装置基于所读取的各条压缩数据来生成各条解压缩数据。
[0049]信息处理装置根据各条压缩数据中包含的标识符来执行生成处理。信息处理装置将生成的各条解压缩数据存储在存储区B3中并且基于存储区B3中存储的各条解压缩数据来生成解压缩文件F3。信息处理装置在存储区B2上加载在图4的尾部中存储的动态字典部的信息。在下面的描述中,存储区BI被适当地称为编码部,并且存储区B2被适当地称为动态字典部。描述了对如在图1中所示的各条压缩数据dl和压缩数据d2的解压缩处理。
[0050]信息处理装置读取压缩数据dl并且确定压缩数据dl的标识符。当压缩数据dl的标识符是“O”时,信息处理装置确定基于静态字典对压缩数据dl进行了编码。信息处理装置比较压缩数据dl与用于解压缩的zelkova树,并且指定由用于解压缩的zelkova树指示的解压缩数据。然后,信息处理装置将解压缩数据写入存储区B3中。
[0051]信息处理装置读取压缩数据d2并且确定压缩数据d2的标识符。当压缩数据d2的标识符是“I”时,信息处理装置确定基于动态字典对压缩数据d2进行了编码。信息处理装置基于压缩数据d2中的压缩码参考动态字典部来生成解压缩数据。
[0052]例如,信息处理装置比较压缩数据d2中包含的记录号与动态字典部的参考表Tl,并且指定在存储区B2中的存储位置和数据长度。信息处理装置从存储区B2读取与存储位置和数据长度对应的数据,并且将所读取的数据设置成解压缩数据。例如,因为压缩数据d2中的记录号指示动态字典部中的“KataokaA”,所以生成“Kataoka”作为解压缩数据。
[0053]图6是示出了实施方式中的信息处理装置的配置的功能框图。如在图6中所示,信息处理装置100包括压缩单元100a、解压缩单元10b以及存储单元100c。
[0054]压缩单元10a是执行如在图1至图3中所示的压缩处理的处理器。解压缩单元10b是执行如在图5中所示的解压缩处理的处理器。存储单元10c中存储有作为压缩目标的文件F1、通过压缩处理提供的压缩文件F2、通过对文件F2进行解压缩而提供的文件F3等。
[0055]信息处理装置100将如在图1、图5等中所示的存储区六1^2^3^4、81、82以及83设置成存储单元100 c。存储单元I OOc中存储有用于压缩的ze Ikova树以及用于解压缩的ze Ikova 树。
[0056]图7是示出了用于压缩的zelkova树的数据结构的示例的视图。如图7中所示,用于压缩的zelkova树50具有二元语法、位图、指针、基础词、字符串长度、出现频率、码长度以及压缩码。其中,二元语法、位图、指针、基础词以及字符串长度与位过滤器Cl对应。基础词、字符串长度、出现频率、码长度以及压缩码与静态字典C2对应。
[0057]二元语法是指示两个字符的字符串的信息。位图指示与二元语法的字符串对应的位图。例如,与“aa”对应的位图是“0_0_0_0_0”。指针是指示与位图对应的基础词的位置的指针。
[0058]基础词是在静态字典C2中记录的词。字符串长度是与基础词对应的字符串长度。出现频率是基础词的出现频率。码长度是压缩码的码长度。压缩码是分配给基础词的压缩码。
[0059]图8是示出了用于解压缩的zelkova树的数据结构的示例的视图。如图8中所示,用于解压缩的zelkova树60具有多个分支60-1至60-n以及多个叶61-1至61-m。预定位串被分配给分支60-1至60-n中的每个分支。信息处理装置100比较压缩数据的位串与分配给分支60-1至60-n的位串,并且指定与符合压缩数据的位串的分支连接的叶。该叶中存储有与压缩数据对应的字符串的信息。
[0060]例如,叶的数据结构如附图标记61所示。例如,叶中存储有叶标识信息、压缩码长度以及字符码或者至基础词的指针。叶标识信息是唯一地标识叶的信息。压缩码长度是指示与分支60-1至分支60-n的位串进行了比较的压缩数据的位串的有效长度的信息。字符码或者至基础词的指针是在压缩码被解压缩时唯一地指示解压缩数据的信息。
[0061 ] 例如,假定位串“010111110111101”符合分支60-4,连接至分支60-4的叶61-4的压缩码长度是“U”,并且由至基础词的指针所指示的基础词是“talksA”。在这种情况下,从上述位串的头部至第11位的位串“01011111011”是与基础词“talksΛ”对应的压缩码。
[0062]图9是示出了实施方式中的压缩单元的配置的示例的功能框图。如在图9中所示,压缩单元10a包括文件读取单元101、确定单元102、第一编码单元103、第二编码单元104、更新单元105以及文件写入单元106。
[0063]文件读取单元101是读取文件Fl中的内容部分的数据的处理器。文件读取单元101从头部起扫描所读取的数据中包含的字符串,顺序地提取由终止符定界的字符串,并且将所提取的字符串顺序地输出至确定单元102。
[0064]例如,当文件Fl中的内容部分的词的字符串是“Kataoka Atalks AaboutA...”时,文件读取单元101向确定单元102以该顺序输出相应词的字符串“KataokaA”、“talksΛ,,、“aboutΛ,,等。
[0065]确定单元102是比较字符串与位过滤器Cl并且确定字符串是否符合位过滤器Cl的处理器。当字符串符合位过滤器Cl时,确定单元102将字符串输出至第一编码单元103。当字符串不符合位过滤器Cl时,确定单元102将字符串输出至第二编码单元104。
[0066]参照图7来描述确定单元102进行的处理。假定作为确定目标的词的字符串是“talkA”。确定单元102从该字符串的头部起每二元语法将字符串与位过滤器Cl的二元语法进行比较,并且指定位图。例如,当词的字符串是“talkA”时,确定单元102组合与“ta”、“al”、“lk”以及“kA”对应的位图。当每个位图的所有值在数字上都是“O”时,确定单元102将组合的位图的对应数字设置成“O”。相比之下,当位图的值包含至少一个“I”时,确定单元102将组合的位图的对应数字设置成“I”。从而,组合了位图。
[0067]例如,假定“ta”的位图是“0_0_0_0_0”、“al”的位图是“0_1_0_0_0”,“lk”的位图是“0_0_1_0_0”,并且“kA”的位图是“O j_l_0_0”。在这种情况下,通过组合这些位图而提供的位图是“0_1_1_0_0”。
[0068]确定单元102比较组合的位图与位过滤器Cl的指针,并且指定位于由与位图对应的指针指示的位置处的基础词。确定单元102以根据所指定的基础词的顺序来搜索与字符串对应的基础词。当存在与字符串对应的基础词时,确定单元102确定字符串符合位过滤器Cl。另一方面,当不存在与字符串对应的基础词时,确定单元102确定字符串不符合位过滤器Cl。
[0069]第一编码单元103是基于静态字典C2对从确定单元102获取的字符串进行编码的处理器。第一编码单元103参考静态字典C2,并且根据静态字典C2来指定与字符串对应的基础词且指定与所指定的基础词对应的压缩码。然后,第一编码单元103生成包含标识符“O”和在静态字典C2中记录的字符串的压缩码的压缩数据,并且将压缩数据输出至文件写入单元 106。
[0070]第二编码单元104是基于动态字典对从确定单元102获取的词的字符串进行编码的处理器。第二编码单元104将词的字符串存储在用作编码部的存储区Al中。第二编码单元104比较存储区Al中的字符串与用作参考部的存储区A2中存储的各条数据,并且搜索匹配的词。
[0071]当匹配的词的长度等于或大于预定长度Lmin时,第二编码单元104在动态字典部的存储区A3中记录匹配的词。第二编码单元104基于动态字典部中记录的内容来生成压缩码。也就是说,第二编码单元104将在动态字典部中记录的匹配的词的记录号指定为词的字符串的压缩码。第二编码单元104生成包含标识符“I”和在动态字典中的记录号的压缩数据,并且将压缩数据输出至文件写入单元106。
[0072]例如,当词的字符串“KataokaA”是在存储区A3中第二个记录的匹配的词时,第二编码单元104在参考表Tl中针对记录号记录“00000001”作为与匹配的词“KataokaA”对应的记录号。由于匹配的词“KataokaA”的头字符“K”存储在存储区A3的“5”处,所以第二编码单元104针对存储位置记录“000000000101”。由于匹配的词“KataokaA”的数据长度是“8”,所以第二编码单元104针对数据长度记录“1000”。
[0073]如图2中所示,当假定要将匹配的词“KataokaA”记录在动态字典部中时,第二编码单元104将匹配的词“KataokaA”的记录号设定成“00000001”。在这种情况下,第二编码单元104将词的字符串“KataokaA”的压缩码设定成“00000001”。第二编码单元104生成包含标识符“I”和记录号“00000001”的压缩数据作为词的字符串“KataokaA”的压缩数据,并且将压缩数据输出至文件写入单元106。
[0074]另一方面,当匹配的词的长度小于预定长度Lmin时,第二编码单元104基于静态字典C2对词的字符串的单个字符进行编码。例如,当与词的字符串“KataokaA”对应的匹配的词的长度小于长度Lmin时,第二编码单元104基于静态字典对“K”、“a”、“t”、“a”、V’、“k”、“a”以及“Λ”中的每一个进行编码,以生成如图3中所示的压缩数据。
[0075]当与作为编码目标的词的字符串相同的词的字符串已经记录在存储区A3中时,第二编码单元104将已经记录的词的字符串的记录号指定为词的字符串的压缩码。例如,第二编码单元104比较作为编码目标的词的字符串与存储区A3中的词的字符串。当与作为编码目标的词的字符串相同的字符串未记录在存储区A3中时,第二编码单元104执行上述匹配的词搜索。
[0076]更新单元105是在由第二编码单元104进行的搜索匹配的词完成之后通过将存储在存储区Al中的字符串存储在存储区Α2中来更新存储区Α2的处理器。更新单元105在每次由第二编码单元104进行的搜索匹配的词完成时更新存储区Α2。
[0077]文件写入单元106是从第一编码单元103和第二编码单元104获取各条压缩数据并且将所获取的各条压缩数据写入存储区Α4的处理器。
[0078]图10是示出了实施方式中的解压缩单元的配置的示例的功能框图。如在图10中所示,解压缩单元10b包括文件读取单元110、标识符确定单元111、第一解压缩单元112、第二解压缩单元113、更新单元114以及文件写入单元115。
[0079]文件读取单元110是对存储区BI上的压缩文件F2中的压缩数据进行读取的处理器。当对在存储区BI中存储的压缩数据的处理完成时,文件读取单元110从压缩文件F2读取新的压缩数据,并且更新存储区BI中存储的压缩数据。
[0080]文件读取单元110读取压缩文件F2的尾部中存储的动态字典部的信息,并且将所述信息存储在存储区Β2中。
[0081]标识符确定单元111是读取存储区BI中存储的压缩数据的标识符并且确定标识符是“O”还是“I”的处理器。标识符与压缩数据的头部位对应。标识符“O”指示基于静态字典对压缩数据进行了编码。标识符“I”指示基于动态字典对压缩数据进行了编码。
[0082]当压缩数据的标识符是“O”时,标识符确定单元111将压缩数据输出至第一解压缩单元112。当压缩数据的标识符是“I”时,标识符确定单元111将压缩数据输出至第二解压缩单元113。
[0083]第一解压缩单元112是使用用于解压缩的zelkova树60对压缩数据进行解压缩的处理器。用于解压缩的zelkova树60的数据结构与如图8中所示的数据结构对应。第一解压缩单元112对分配至zelkova树60的分支的位串与除标识符之外的压缩数据进行比较,并且指定与具有和压缩数据相同的位串的分支对应的叶。第一解压缩单元112参考所指定的叶,并且生成由作为压缩数据的解压缩数据的基础词的指针所指示的字符串,并且将所生成的解压缩数据输出至文件写入单元115。
[0084]例如,在图8中,对于解压缩单元112,假定位串“010111110111101”符合zelkova树60的分支60-4,连接至分支60-4的叶61-4的压缩码是“11”,并且由至基础词的指针所指示的基础词是“talksA”。在这种情况下,解压缩单元112生成“talksA”作为与压缩数据的位串中从头部至第11位的位串“01011111011”对应的解压缩数据。
[0085]第二解压缩单元113是使用已存储在存储区B2中的动态字典部的信息来对压缩数据进行解压缩的处理器。第二解压缩单元113将标识符从压缩数据中排除,以获取动态字典部中的记录号。第二解压缩单元113比较所获取的记录号与参考表Tl,并且指定在存储区B2中存储的解压缩数据的存储位置和数据长度。第二解压缩单元113从存储区B2获取与存储位置和数据长度对应的词的字符串,并且将所获取的词的字符串生成为解压缩数据。
[0086]例如,描述了在从压缩数据获取的记录号为“00000001”的情况下由第二解压缩单元113进行的处理。第二解压缩单元113比较记录号“00000001”与参考表Tl,并且获取存储位置“000000000101”和数据长度“1000” O第二解压缩单元113参考存储区B2,并且获取词的字符串“KataokaA”,词的字符串“KataokaA”的头部存储在存储位置“000000000101”处并且其数据长度是“1000”。第二解压缩单元113将获取的词的字符串“KataokaA”设定成解压缩数据,并且将解压缩数据输出至文件写入单元115。
[0087]更新单元114是对存储压缩数据的存储区BI进行更新的处理器。当压缩数据的标识符是“O”时,更新单元114从存储区BI中删除标识符和与由第一解压缩单元112读取的压缩数据的压缩码长度对应的位串。当压缩数据的标识符是“I”时,更新单元114从存储区BI中删除由第二解压缩单元113读取的压缩数据。
[0088]文件写入单元115是从第一解压缩单元112和第二解压缩单元113获取各条解压缩数据并且将所获取的各条解压缩数据写入存储区B3中的处理器。
[0089]接下来,将描述分别如图9和图10中所示的压缩单元10a和解压缩单元10b的处理步骤。
[0090]图11是示出了实施方式中的压缩单元的处理步骤的流程图。如图11中所示,压缩单元10a执行预处理(步骤SlOl)。在步骤SlOl处的预处理中,压缩单元10a在存储单元I OOc中确保存储区Al、存储区A2以及存储区A3。
[0091]压缩单元10a读取作为压缩目标的文件Fl(步骤S102),并且提取至终止符的字符串作为词(步骤S103)。压缩单元10a比较字符串与位过滤器Cl,并且确定字符串是否符合位过滤器Cl (步骤S104)。
[0092]当字符串不符合位过滤器Cl时(在步骤S104处为否),压缩单元10a参考动态字典(步骤S105)并且确定是否已经在动态字典中记录了字符串(步骤S106)。当在动态字典中记录了字符串时(在步骤S106处为是),压缩单元10a使处理进行至步骤S109。
[0093]另一方面,当未在动态字典中记录字符串时(在步骤S106处为否),压缩单元10a执行搜索匹配的词(步骤S107)。压缩单元10a更新动态字典(步骤S108)。
[0094]压缩单元10a输出包含标识符“I”和动态字典中的记录号的压缩数据(步骤S109)。压缩单元10a执行写入压缩数据(步骤S110),并且确定处理位置是否是文件Fl的终点(步骤S111)。当处理位置不是文件Fl的终点时(在步骤Slll处为否),则压缩单元10a使处理返回至步骤S103。当处理位置是文件F2的终点时(在步骤Slll处为是),压缩单元10a完成处理。
[0095]当在步骤S104处字符串符合位过滤器Cl时(在步骤S104处为是),压缩单元10a指定记录在静态字典C2中的压缩码(步骤S112)。压缩单元10a输出包含标识符“O”和压缩码的压缩数据(步骤S113),并且压缩单元10a使处理返回至步骤S110。
[0096]图12是示出了实施方式中的解压缩单元的处理步骤的流程图。如图12中所示,解压缩单元10b执行预处理(步骤S201)。在步骤S201处的预处理中,解压缩单元10b在存储单元10c中确保存储区B1、存储区B2以及存储区B3。
[0097]解压缩单元10b读取压缩文件F2(步骤S202),并且读取用于解压缩的zelkova树60和动态字典(步骤S203)。例如,解压缩单元10b在存储区B2中存储已在尾部中存储的与动态字典有关的信息。
[0098]解压缩单元10b确定压缩数据的标识符是否是“I”(步骤S204)。当标识符是“O”时(在步骤S204处为否),解压缩单元10b比较用于解压缩的zelkova树60与压缩数据,并且指定解压缩数据(步骤S205)。然后,解压缩单元10b使处理进行至步骤S207。
[0099]当压缩数据的标识符是“I”时(在步骤S204处为是),解压缩单元10b基于动态字典中的记录号来指定解压缩数据(步骤S206)。解压缩单元10b执行将解压缩数据写入存储区B3中(步骤S207)。
[0100]解压缩单元10b确定处理位置是否是压缩文件F2的终点(步骤S208)。当处理位置不是压缩文件F2的终点时(在步骤S208处为否),解压缩单元10b使处理返回至步骤S204。当处理位置是压缩文件F2的终点时(在步骤S208处为是),解压缩单元10b关闭压缩文件F2(步骤 S209)。
[0101]接下来,将描述实施方式中的信息处理装置100的效果。当信息处理装置100使用静态字典C2来压缩作为压缩目标的字符串时,信息处理装置100使用位过滤器Cl来确定在静态字典中是否记录有作为压缩目标的字符串。当信息处理装置100检测到未记录在静态字典中的字符串时,信息处理装置100在动态字典中记录所检测到的字符串并且将动态字典中的记录号设定成压缩码。因此,信息处理装置100可以将不存在于静态字典中的字符串压缩为动态字典中的记录号而防止压缩率改变。此外,可以防止压缩数据的数据长度增加。
[0102]实施方式中的信息处理装置100搜索与未记录在位过滤器Cl中的字符串匹配的词。当匹配的词的长度等于或大于预定长度时,信息处理装置100在动态字典中记录匹配的词并且将匹配的词压缩为记录号。因此,可以减少匹配的词的压缩码的数据长度。
[0103]实施方式中的信息处理装置100搜索与未记录在位过滤器Cl中的字符串匹配的词。当匹配的词的长度小于预定长度时,信息处理装置100使用静态字典来压缩匹配的词的字符串的单个字符。该处理可以防止动态字典的信息量增加。
[0104]此外,实施方式中的信息处理装置100在压缩码的标识符是“O”时基于用于解压缩的树和压缩码对压缩码进行解压缩。当压缩码的标识符是“Γ时,实施方式中的信息处理装置100基于动态字典部和压缩码对压缩码进行解压缩。因此,实施方式中的信息处理装置100可以防止压缩数据的数据长度增加并且可以准确地对压缩数据进行解压缩。
[0105]以下描述实施方式中使用的硬件和软件。图13是示出了计算机I的硬件配置的示例的示图。例如,计算机I包括处理器301、随机存取存储器(RAM)302、只读存储器(R0M)303、驱动装置304、存储介质305、输入接口(I/F)306、输入装置307、输出接口(I/F)308、输出装置309、通信接口(I/F)310、存储局域网(SAN)接口(I/F)311以及总线312。这些硬件使用总线312连接。
[0106]RAM 302是可读和可写存储装置。例如,对于RAM 302,可以使用半导体存储器例如静态RAM(SRAM)和动态RAM(DRAM)或者并非RAM的闪速存储器。ROM 303还包括可编程ROM(PR0M)。驱动装置304是对在存储介质305中记录的信息执行读取和写入中的至少一种的装置。存储介质305中存储有由驱动装置304写入的信息。存储介质305是以下存储介质:例如硬盘、闪速存储器如固态硬盘(SSD)、光盘(CD)、数字通用盘(DVD)以及蓝光光盘。例如,计算机I包括用于多种类型的存储介质中的每一种的驱动装置304和存储介质305。
[0107]输入接口306是连接至输入装置307并且将从输入装置307接收的输入信号传输至处理器301的电路。输出接口 308是连接至输出装置309并且使输出装置309根据来自处理器301的指示执行输出的电路。通信接口 310是通过网络3执行通信控制的电路。例如,通信接口 310是网络接口卡(NIC) AAN接口 311是对与经由存储局域网连接至计算机I的存储装置的通信执行控制的电路。例如,SAN接口 311是主机总线适配器(HBA)。
[0108]输入装置307是根据操作来传输输入信号的装置。例如,输入装置是键盘、键入装置例如附接至计算机I的主体的按钮或者指示装(pointing device)如鼠标和触摸板。输出装置309是根据计算机I的控制来输出信息的装置。例如,输出装置309是图像输出装置(显示装置)例如显示器,或者是音频输出装置例如扬声器。例如,输入/输出装置如触摸屏用作输入装置307和输出装置309。例如,输入装置307和输出装置309可以与计算机I集成,或者可以是不包括在计算机I中而是外部地连接至计算机I的装置。
[0109]例如,处理器301在RAM 302上读取ROM 303或存储介质305中存储的程序,并且根据所读取的程序的步骤执行压缩单元10a的处理或者解压缩单元10b的处理。在这种情况下,RAM 302用作处理器301的工作区。ROM 303和存储介质305存储程序文件(稍后将描述的应用程序24、中间件(middleWare)23、0S 22等)和数据文件(作为压缩目标的文件Fl、压缩文件F2等),并且RAM 302用作处理器301的工作区,使得存储单元10c的功能得以运行。参照图14来描述由处理器301读取的程序。
[0110]图14是示出了在计算机I中运行的程序的配置的示例的示图。在计算机I中,对如图13中所示的硬件组21(301至312)执行控制的操作系统(0S)22操作。处理器301使用根据OS 22的步骤来操作,以对硬件组21执行控制和管理。控制和管理使得由硬件组21执行根据应用程序24和中间件23的处理。此外,在计算机I中,在RAM 302上读取中间件23或应用程序24,并且由处理器301执行中间件23或应用程序24。
[0111]当调用压缩功能时,处理器301基于中间件23或应用程序24的至少一部分来执行处理,使得(使用通过基于OS 22控制硬件组21而执行的处理)实现压缩单元10a的功能。此夕卜,当调用解压缩功能时,处理器301基于中间件23或应用程序24的至少一部分来执行处理,使得(使用通过基于OS 22控制硬件组21而执行的处理)实现解压缩单元10b的功能。可以将压缩功能和解压缩功能并入应用程序24本身中,或者压缩功能和解压缩功能可以是通过根据应用程序24被调用来执行的中间件23的一部分。
[0112]由应用程序24(或中间件23)的压缩功能提供的压缩文件F2可以基于压缩文件F2中的压缩字典Dl而被部分地解压缩。当压缩文件F2的中部被解压缩时,禁止对解压缩目标的一部分的压缩数据的解压缩处理,而由此减少了处理器301上的负荷。此外,作为解压缩目标的压缩数据部分地形成(develop)在RAM 302上,从而减少了工作区。
[0113]图15是示出了根据另一实施方式的系统中的装置的配置的示例的视图。图15中的系统包括计算机la、计算机lb、基站2以及网络3。计算机Ia至少以无线或者有线的方式连接至连接到计算机Ib的网络3。
[0114]如图15中示出的计算机Ia和计算机Ib中的任一计算机可以包括如图6中示出的压缩单元10a和解压缩单元100b。计算机Ia可以包括压缩单元100a,并且计算机Ib可以包括解压缩单元100b。可替换地,计算机Ib可以包括压缩单元100a,并且计算机Ia可以包括解压缩单元100b。计算机Ia和计算机Ib都可以包括压缩单元10a和解压缩单元100b。
[0115]在下文中,将描述上述实施方式的修改的一部分。不仅可以适当地进行下面的修改而且可以在不偏离本发明的范围的范围内适当地进行设计改变。除文件中的数据之外,压缩处理目标可以是从系统输出的监测消息。例如,执行以下处理:通过上述压缩处理对顺序地存储在缓冲器中的监测消息进行压缩并且将经压缩的监测消息存储为日记文件。例如,可以基于数据库中的一页执行压缩或者可以基于多页共同地执行压缩。
[0116]此外,上述压缩处理的目标数据不限于如上所述的字符信息。可以对仅由数值形成的信息或者图像或音频的数据执行上述压缩处理。例如,通过音频合成提供的具有大量数据的文件包含数据中的重复内容,因此期望通过动态字典提高该文件的压缩率。明显的是,当仅使用文件中的一部分时,通过部分解压缩消除了过量的解压缩处理。此外,单个帧的图像还与通过固定相机拍摄的移动图像类似,因此,移动图像包含重复的内容。通过对移动图像施加上述压缩处理可以针对移动图像提供与针对文档数据和音频数据的效果相同的效果。
[0117]本发明的实施方式提供能够防止与压缩文件中的词等的字符串对应的压缩码的长度增加的效果。
【主权项】
1.一种通过计算机执行的压缩方法,所述压缩方法包括使所述计算机执行处理,所述处理包括: 确定目标字符串是否记录在第一字典中,所述目标字符串为包含在输入数据中的压缩目标,所述第一字典使压缩码与对应的字符串相关; 当所述目标字符串被记录在所述第一字典中时,输出与所述目标字符串对应的压缩码; 当所述目标字符串未记录在所述第一字典中时,在第一数据中搜索所述目标字符串,所述第一数据所积累的字符串是所述输入数据的一部分并且已经被确定为未记录在所述第一字典中; 当在所述第一数据中检索到所述目标字符串时,在与所述第一字典不同的第二字典中记录匹配的字符串;以及 输出与所述目标字符串在所述第二字典中的记录号对应的压缩码。2.根据权利要求1所述的压缩方法,其中,所述处理还执行:搜索与未记录在所述第一字典中的所述目标字符串匹配的词;当所述匹配的词的长度等于或大于预定长度时在所述第二字典中记录所述匹配的词;以及所述输出对基于所述记录号的信息进行输出。3.根据权利要求1或2所述的压缩方法,其中,所述处理还执行:搜索与未记录在所述第一字典中的所述目标字符串匹配的词;以及当所述匹配的词的长度小于预定长度时基于所述第一字典输出与所述目标字符串的各个字符对应的压缩码。4.一种通过计算机执行的解压缩方法,所述解压缩方法包括使所述计算机执行处理,所述处理包括: 确定压缩码的标识符是第一标识符还是第二标识符; 当所述压缩码的标识符是所述第一标识符时,基于使得码串与解压缩信息彼此对应的信息和所述压缩码来对所述压缩码进行解压缩;以及 当所述压缩码的标识符是所述第二标识符时,基于由包含在压缩数据中的与记录位置相关的信息指示的位置的信息来对所述压缩码进行解压缩。5.一种压缩装置,包括: 确定单元(102),所述确定单元(102)确定目标字符串是否记录在第一字典中,所述目标字符串为包含在输入数据中的压缩目标,所述第一字典使压缩码与对应的字符串相关; 第一编码单元(103),所述第一编码单元(103)当所述目标字符串被记录在所述第一字典中时输出与所述目标字符串对应的压缩码;以及 第二编码单元(104),所述第二编码单元(104):当所述目标字符串未记录在所述第一字典中时,在第一数据中搜索所述目标字符串,所述第一数据所积累的字符串是所述输入数据的一部分并且已经被确定为未记录在所述第一字典中;当在所述第一数据中搜索到所述目标字符串时,在与所述第一字典不同的第二字典中记录匹配的字符串;以及输出与所述目标字符串在所述第二字典中的记录号对应的压缩码。6.根据权利要求5所述的压缩装置,其中,所述第一编码单元(103):执行搜索,搜索与未记录在所述第一字典中的所述目标字符串匹配的词;当所述匹配的词的长度等于或大于预定长度时在所述第二字典中记录所述匹配的词;以及输出基于所述记录号的信息。7.根据权利要求5或6所述的压缩装置,其中,所述第一编码单元(103):执行搜索,搜索与未记录在所述第一字典中的所述目标字符串匹配的词;以及当所述匹配的词的长度小于预定长度时基于所述第一字典输出与所述目标字符串的各个字符对应的压缩码。8.—种解压缩装置,包括: 确定单元(111),所述确定单元(111)确定压缩码的标识符是第一标识符还是第二标识符; 第一解压缩单元(112),所述第一解压缩单元(112)在所述压缩码的标识符是所述第一标识符时,基于使得码串与解压缩信息彼此对应的信息和所述压缩码来对所述压缩码进行解压缩;以及 第二解压缩单元(113),所述第二解压缩单元(113)在所述压缩码的标识符是所述第二标识符时,基于由包含在压缩数据中的与记录位置相关的信息指示的位置的信息来对所述压缩码进行解压缩。
【文档编号】H03M7/30GK105846825SQ201610059698
【公开日】2016年8月10日
【申请日】2016年1月28日
【发明人】片冈正弘, 铃木泰裕, 松村量
【申请人】富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1