一种基于树结构的语言库压缩方法和系统的制作方法

文档序号:6601895阅读:133来源:国知局
专利名称:一种基于树结构的语言库压缩方法和系统的制作方法
技术领域
本发明涉及数据压缩方法和系统,特别是一种基于树结构的语言库压缩方法和系统。
背景技术
树结构在载体上的实现有赖于一般树与二叉树的等价转换和在存储器中按深度搜索存放树节点。前者被用来设定节点的数据结构而后者对该结构优化并使之走向实际应用。例如从词汇add,adding, added, adds组成的一般树转换为二叉树可得出节点的数据结构。从一般树(图1)到对应的二叉树(图2)可得节点的数据结构为<KPXBPXE0WXL>。 将该二叉树按深度搜索存放(图3),可优化节点数据结构为<KXB><E0WXL>,省去了指针开销。但从某节点到其兄弟节点要越过该节点的所有子辈节点,比如从节点(i)到兄弟节点(e)要经过(i)所有子辈节点(n),(g)。当然也可以从词库直接生成二叉树。由于语言库树结构的深度与该库中最长的词汇有关而宽度与词库中词的总量有关,因此语言库树结构的特点是深度有限宽度很大。随着词汇量的加大更是如此。最后,在载体上引擎实现的方法是用一些数组或向量当作堆栈作为工作平台,从树的指定地点进入,按深度优先搜索扫描树节点,存入匹配的节点或指针信息入栈并找出满足指定条件的字或词汇。定义<K>是子辈节点标志位,意为Kid ;<Β>是兄弟节点标志位,意为Brother ;<E0ff> 是词标志位,意为 End of Word ;<L> 是字母,意为 Letter ;<ST>是子树标志位,意为Sub Tree ;<pK>是子辈指针标志位;<ρΒ>是兄弟指针标志位;[]表示该括号里的内容不出现或最多出现1次;{}表示该括号里的内容不出现或出现多次;〈Pointer〉= {<1,X X X X X X X>, }<0, XXXXX X X〉,是由 1 个或多个字节组成的指针定义。<0/1,ΧΧΧΧΧΧΧ>表示字节(Byte),X表示二进制位(bit)。其中当首位为1时表示后面的字节仍为该指针部分,直到最后一个字节首位为0时为止;所有的X组成了该指针值。<KP>是子辈节点指针;〈Pointer〉结构。<BP>是兄弟节点指针;〈Pointer〉结构。现有的基于树结构的DAWG压缩法被Zi Corp应用在其文本输入法产品eZiText 上。其节点数据结构是<KXB><E0W><L><pK>[<KP>]<pB>[<BP>]。其基本生成原理为从树的底层叶子节点或从叶子节点的父节点开始从左到右,从下到上逐步归约寻找子树范例 (first sub tree),然后将其后发现的同类去掉其所有节点并用指针指向该范例,从而达到数据库压缩的目的。通过如下(表1) 一组词汇举例说明有向无环图压缩法(DAWG)的压缩过程
conventioncongressesionalextremistsensationconventionalcongressesionalIyextremistssensationalconventionalismessentialextremitiessensationaliseconventionalistessentialismextremitysensationallyconventionalistsessentialistsecularismvocationconventionalitiesessentialistssecularistvocationalconventionalityessentialitiessecularistsvocationalismsconventionallyessentialitysecularitiesvocationallycongressesionextremismsecularity其二叉树结构(图4)共有118个节点,以32个字母为限的数据结构为例,用一个字节容纳3个标志位和1个字母<KXB><E0WXL>,共需要118个字节。DAffG的压缩过程是从底层倒数第二层归约开始(图5),再逐渐往上归约(图6), 如此反复往上得最后结果(图7),可压缩到83个节点和6个指针。按DAWG节点定义〈K XBXEOffXLXpK) [<KP>] <ρΒ> [<ΒΡ>],每个节点需5/4个字节,这里每个指针按一个字节, 由此经DAWG压缩后共需要110个字节,压缩了原树的7%。通过研究发现该压缩法存在理论上的严重缺陷和应用上的局限性,具体表现在(I)DAWG压缩法从设计理念上只能压缩树结构中的ending,也即词汇的后缀部分,不能压缩树结构中间的广大区域,而且这种设计理念本质上无法加以改进。(2)每一个子树范例(first sub tree)固定在词库树结构中,所有来自它同类指向它首节点的指针以该节点在库中的地址为代价,地址越大指针所占空间也越大.如果范例在树中相对靠后,则势必增加所有指向它指针的成本而导致压缩比下降,甚至无效。例如在压缩阿拉伯语、印度语等词库时就存在这种情况,压缩印度语词库时尤为明显。C3)不同语种特性差异很大且期望压缩比也不同。子树范例节点数、同类个数以及指针大小都是影响压缩比的重要因素。在不同语种甚至同样语种不同词汇量的情况下,并不是所有子树及其同类都应该或有必要被归约。并不是每个子树范例都应该或有必要被同类归约,既达不到到预期压缩比,还增加了搜索负担。很显然,DAWG压缩法过于单一,且难以优化。(4)DAffG中的节点需要顾及很多方面,除了原有 < 子辈节点标志位X兄弟节点标志位X词标志位X字母 > 外,还要增加 < 子辈指针标志位X兄弟指针标志位 >,以及当其不为0时其后紧随的子辈指针和或兄弟指针是单字节的还是多字节的,在搜索中增加了引擎对节点的遍历成本。因此,由于节点数据结构过于复杂导致DAWG结构臃肿,从而直接影响了引擎的搜索速度。综上所述,DAffG压缩法效率不高且不适合对大型数据库的压缩和快速搜索。

发明内容
本发明的目的在于提供一种基于树结构的语言库压缩方法和系统,主要解决现有 DAWG压缩法效率不高且不适合对大型数据库的压缩和快速搜索技术问题。为实现上述目的,本发明是这样实现的一种基于树结构的语言库压缩方法,其特征在于它包括如下步骤A通过搜索单元遍历存放于主树存储单元内的主树,选出压缩比最好的子树;B将步骤A搜索到的子树范例连接到子树集合存储单元的子树节点上,用当前编号赋予该子树节点并以该节点替代主树上该子树及其同类的出现,然后再将子树节点编号计数器加1 ;C循环执行步骤A,直到无法寻找到子树为止。所述的基于树结构的语言库压缩方法,其特征在于所述的最佳压缩比子树的选择方法是选取子树范例节点个数*同类子树个数结果值最大的子树。所述的基于树结构的语言库压缩方法,其特征在于所述的子树包括无出口子树和有出口子树。一种实施如上所述方法的基于树结构的语言库压缩系统,其特征在于它包括用于在主树存储单元中选出压缩比最好子树的搜索单元;用于存放主树的主树存储单元;用于存放子树的子树集合存储单元,该子树集合存储单元包括一子树节点编号计数器;用于控制最佳压缩比子树的搜索、子树存储以及子树节点替代的调度模块。本发明的压缩方法与现有的DAWG压缩法相比的有益效果在于1、本发明方法中子树从主树中的脱离缓解了在主树中指向子树的地址开销,也使主树结构简洁规模缩小。从而为快速扫描和动态链接打下基础。动态链接方式为本发明首创,与子树压缩法相匹配,使搜索过程灵活高效。2、本发明方法中子树同时兼备有或无出口提高了同类的扩大面,进而也提高了树结构的压缩率。3、本发明方法中集合中的子树范例相互独立则意味着可通过优化手段将子树范例根据其使用频率从高到低的顺序排列使主树得到最多的子树短节点,进而缩小尺寸。4、本发明方法中最佳子树的选择可方法多样以适应不同语种和不同尺寸的数据库。综上所述,本发明压缩方法的有益效果无论从设计理念上还是实践中都是DAWG 压缩法所不具备的。


图1是一般树的结构示意图;图2是图1对应的二叉树的结构示意图;图3是二叉树按深度搜索存放模式的结构示意图;图4是包含表1词汇组信息的二叉树结构示意图;图5是从底层倒数第二层开始的DAWG压缩步骤1示意图;图6是从底层倒数第二层开始的DAWG压缩步骤2示意图;图7是从底层倒数第二层开始的DAWG压缩步骤3示意图;图8是本发明压缩方法的数据结构示意图;图9A是子树数据结构无出口子树示意图;图9B是子树数据结构有出口子树示意图;图10是本发明压缩法中包含表1词汇组信息初始的数据结构示意图;图11是本发明压缩法中首次执行步骤A时的数据结构示意图;图12是本发明压缩法中首次执行步骤B时的数据结构示意图;图13是本发明压缩法中第二次执行步骤A时的数据结构示意图;图14是本发明压缩法中第二次执行步骤B时的数据结构示意图;图15是本发明压缩法中第三次执行步骤A时的数据结构示意图;图16是本发明压缩法中第三次执行步骤B时的数据结构示意图;图17是本发明系统的结构示意图。
具体实施例方式由于现有DAWG压缩法本质上已不存在改善的空间,本发明提供了一种基于树结构的语言库压缩方法和系统,它不但从实践中而且在理论上克服背景技术的不足,使之适用于对大型数据库的压缩和快速搜索。具体内容如下一、定义数据结构将树结构数据库中的所有子树范例都提出树外构成子树集合Sub Treekt,而在主树Main Tree中除去所有子树及其同类并在它们出现的地方用子树节点来代替(图8)。 主树和子树的节点在存储器中都是按深度搜索存放的。整个主树只有具有共同数据结构的普通节点和子树节点,若用字节为单位,当某语言数据库按32个字母为限时,一个字节单位可容纳3个标志位和1个字母,其共同结构为<ST>,<KXBXE0ff><L>, [<Byte>],这里 <Byte>表示一个字节单位。而按64个字母为限时,一个字节单位可容纳2个标志位和1个字母,其共同结构为:<K>, <B>, <STXE0WXL>, [<Byte>]。当<ST>值为0时该节点为普通节点。其开销为1或2个标志位+1个字节,当<ST>为1时是子树节点。子树节点又分为短节点和长节点。当<E0W>为0时与普通节点等长,是短节点,其<L>的内容为该子树在系统中的子树编号。而当<E0W>为1时为长节点,表明其后的字节与<L> 一起组成了该子树在系统中的子树编号。以此定义的主树形状小巧,结构简洁。引擎只要最多2个判断就能验明节点尺寸,快速越过。将所有子树范例提出树外组成集合大大减少了子树地址码在主树中的开销。集合中的子树范例相互独立则意味着可通过优化手段将子树范例根据其使用频率从高到低的顺序排列使主树得到最多的子树短节点,进而缩小尺寸。带有<KXB>的子树节点也意味着其不仅能压缩树结构中的后缀部分,还能压缩中间部分,填补了 DAWG的压缩空白。子树Sub Tree i (i = 1,2,3,. . .,N)是由普通节点或再加上一个作为出口的子树短节点组成,其首节点可以有兄弟意味着它是由一个子树或一个兄弟子树群构成,简称子树。子树的生成结构有如下规定1、由普通节点组成的子树是无出口子树(后缀子树ending sub tree),如图9A, 只能与主树中<K>等于零的子树节点相匹配。由普通节点和一个子树短节点组成的子树是有出口子树,如图9Β。2、当子树节点<Β>不等于零则意味着该节点在主树中有兄弟节点相连。引擎进入相应的子树后在搜索过程中将<Β>值动态地链接到没有兄弟的子树首节点或其最后一个兄弟节点上。也就是在主树中子树节点<Β>值只与相应的子树中没有兄弟的子树首节点或其最后一个兄弟节点有关。3、子树内不允许存在任何代表子树集合中子树的子树节点,没有递归定义,其内的子树短节点只起过渡、定位和连接作用。它既不允许出现在子树首节点或其兄弟节点的位置上,也不允许有属于它的子辈节点,其<κ>值内部为0以备引擎在扫描时根据具体情况动态链接。4、作为出口的子树短节点在主树中对应的子树节点<Κ>等于零时不起作用,从而使子树成为后缀子树。如果在主树中对应的子树节点<Κ>不等于零,则该过度节点让位并在此将<κ>所指的在主树中的子辈节点相连。子树中所有节点等长意味着结构简洁和引擎能高效搜索,带有子树节点的子树同时兼备有或无出口子树提高了同类的扩大面,进而也提高了树结构的压缩率。事实上,引擎在载体上实现扫描的逻辑过程是通过判断,越过无关节点,存入匹配的节点信息入栈并当匹配节点中<E0W>不等于0时找出满足指定条件的字或词汇。通过考察子树,尤其是考察 <K>不等于0的子树节点相应子树范例的首节点极其兄弟节点有无匹配信息时,摆脱了主树中其子辈节点的拖累,判断快速高效,无关的普通或子树节点一越而过。而只有当引擎进入了匹配的子树后随着扫描过程的推进在堆栈中才动态地将主树中的子辈节点链接到位, 还原树的本来面目。这种动态链接方式为本发明首创,与子树压缩法相匹配,使搜索过程灵活高效、个性鲜明。无论从设计理念上还是实践中都是DAWG压缩法所不具备的。二、本发明压缩方法的具体步骤如下A通过搜索单元遍历存放于主树存储单元内的主树,选出压缩比最好的子树;B将步骤A搜索到的子树范例连接到子树集合存储单元的子树节点上,用当前编号赋予该子树节点并以该节点替代主树上该子树及其同类的出现,然后再将子树节点编号计数器加1 ;C循环执行步骤Α,直到无法寻找到子树为止。所述的最佳压缩比子树的最佳选择方法是选取子树范例节点个数*同类子树个数结果值最大的子树。所述的子树包括无出口子树和有出口子树。当然,也可以按照先选取树范例节点个数最大的子树,当该条件选择的结果唯一时,则该子树为最佳压缩子树;而当该条件选择结果不唯一时,则再判断同类子树个数的数量以确定最佳压缩比的子树。我们仍然以表1所列的一组词汇举例说明本发明方法,其位于主树存储单元内的主树结构如图10所示。当第一次循环执行本发明方法步骤A时,如图11所示;当第一次循环执行步骤B 时,如图12所示。当第二次循环执行本发明方法步骤A时,如图13所示;当第二次循环执行步骤B 时,如图14所示。当第三次循环执行本发明方法步骤A时,如图15所示;当第一次循环执行步骤B 时,如图16所示。三、用于本发明方法的系统结构,如图17所示它包括用于在主树存储单元中选出压缩比最好子树的搜索单元;用于存放主树的主树存储单元;用于存放子树的子树集合存储单元,该子树集合存储单元包括一子树节点编号计数器;用于控制最佳压缩比子树的搜索、子树存储以及子树节点替代的调度模块。所述的调度模块可选择TMS320C6416,它是TI公司于2000年推出的一款具有 C64XX系列新内核的高性能DSI^s芯片。TMS320C6416采用一种高性能的先进的VLIW(非常长指令字)结构,其内部具有8个并行处理单元。因单指令字长为32位,8个指令可组成长达256位的指令包,由内部专门的指令分配模块同时分配到8个处理单元同时运行。 因此在600MHz主频时,TMS320C6416的最大处理能力高达4800MIPS(百万条指令/秒)。 TMS320C6416核心电压为1. 2V,外围电压为3. 3V,主频为400MHz 1GHz,并且在600MHz主频下,能够提供83 级器件。所述的主树存储单元和子树集合存储单元可以使用100M以上的大容量存储设备,也可以将一个大容量存储设备分隔为两个大容量存储区域以分别作为主树存储单元和子树集合存储单元。所述的搜索单元也可以使用TMS320C6416。四、本发明方法的实施效果以下表2是用部分语言数据库分别用DAWG和本发明方法的结果比较
权利要求
1.一种基于树结构的语言库压缩方法,其特征在于它包括如下步骤A通过搜索单元遍历存放于主树存储单元内的主树,选出压缩比最好的子树; B将步骤A搜索到的子树范例连接到子树集合存储单元的子树节点上,用当前编号赋予该子树节点并以该节点替代主树上该子树及其同类的出现,然后再将子树节点编号计数器加1 ;C循环执行步骤A,直到无法寻找到子树为止。
2.根据权利要求1所述的基于树结构的语言库压缩方法,其特征在于所述的最佳压缩比子树的选择方法是选取子树范例节点个数*同类子树个数结果值最大的子树。
3.根据权利要求1所述的基于树结构的语言库压缩方法,其特征在于所述的子树包括无出口子树和有出口子树。
4.一种实施如权利要求1或2或3所述方法的基于树结构的语言库压缩系统,其特征在于它包括用于在主树存储单元中选出压缩比最好子树的搜索单元; 用于存放主树的主树存储单元;用于存放子树的子树集合存储单元,该子树集合存储单元包括一子树节点编号计数器;用于控制最佳压缩比子树的搜索、子树存储以及子树节点替代的调度模块。
全文摘要
本发明涉及数据压缩方法和系统,特别是一种基于树结构的语言库压缩方法和系统。它包括如下步骤A通过搜索单元遍历存放于主树存储单元内的主树,选出压缩比最好的子树;B将步骤A搜索到的子树范例连接到子树集合存储单元的子树节点上,用当前编号赋予该子树节点并以该节点替代主树上该子树及其同类的出现,然后再将子树节点编号计数器加1;C循环执行步骤A,直到无法寻找到子树为止。它主要解决现有DAWG压缩法效率不高且不适合对大型数据库的压缩和快速搜索技术问题。
文档编号G06F17/30GK102222075SQ20101016463
公开日2011年10月19日 申请日期2010年4月15日 优先权日2010年4月15日
发明者李朝中 申请人:李朝中
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1