专利名称:一种基于自适应字典树的电子词典单词检索方法
技术领域:
本发明属于电子学习产品的技术领域,特别是涉及一种在电子词 典中进行单词检索的方法。
背景技术:
目前在电子词典中进行单词检索的方法有多种,可以分为无索引 结构的检索和索引结构的检索。由于无索引结构的检索效率差,占用 空间大, 一般都会使用索引结构的检索。在索引结构中,比较常用的有两种方法字典树检索方法和基于 单词词头的二分搜索方法。这两种方法都存在着明显的优缺点。在字典树检索方法中,运用了空间换效率的概念,由于使用了完整的满n叉树结构,因此单词可以直接定位命中,但是为了构造完整的字典树,使用了大量无用的结点,造成极大的空间浪费。在基于单词词头的二分搜索中,由于一般的电子词典里面,单词 词头的长度差异比较大,为了满足二分搜索中每个元素的大小一致的 特点,必须将每个单词的词头扩展到最长的单词词头的长度,造成空 间的浪费,使得在内存有限的环境中不能将数据载入内存来搜索,降 低了二分搜索的效率,而且有些硬件条件不支持二分搜索的来回指针 移动。因此在索引结构的单词检索中,在考虑单词检索时间效率的同时,要尽量控制索引结构层的大小,目的是减少空间的浪费,同时能 够将索引结构层载入内存进行检索,这样才能更好的提高检索的效 率。发明内容本发明的目的在于克服现有技术的不足,提出一种基于自适应字 典树的电子词典单词检索方法,来提高电子词典中单词检索的效率, 它可以在保持二分搜索的效率的基础上,减少空间的浪费,达到时间 与空间的平衡。为了实现发明目的,采用的技术方案如下一种基于自适应字典树的电子词典单词检索方法,包括了以下的 步骤1) 在自适应字典树中进行单词前缀的匹配,若在字典树中能命 中要查找的单词则返回相关单词信息,否则进入2);2) 在分段的二分搜索层进行单词检索,找到要检索的单词或最 接近的单词的信息并返回。所述的基于自适应字典树的电子词典单词检索方法,将单词的检 索分成了前缀匹配和完整单词匹配两个步骤。其中,前缀匹配是使用 自适应字典树来实现的,而完整单词匹配是使用了分段的二分搜索。 如果在前缀匹配中找到要检索的单词,则返回,否则就再进行分段的 二分搜索。比如单词"about",若自适应字典树里面包含了前缀 "about",则可以在树中找到该单词,否则就要在所有以"about"为前缀的单词里面进行二分搜索。所述的基于自适应字典树的电子词典单词检索方法,使用了字典 树跟二分搜索结合,那么在进行前缀检索的时候只需要对字典树进行 操作,由于空间不大,可以直接载入内存;而进行二分搜索的时候, 由于属于同个前缀的单词的数量也在一定范围之内,也可以载入内存 进行操作,这样就可以利用内存访问速度远快于外存的特点来获得更 高的效率。所述的自适应字典树的层数和结点个数是可以调整的,这个主要 是为了适合不同的资源的要求,若内存空间较大,那么字典树的层数 和结点个数可以增多,因此自适应字典树并不是一棵满n叉树(n是指 所有要检索的单词中所包含的不重复的字符个数,比如英文单词里面 只有26个字母,则n为26)。所述的自适应字典树的大小是通过一个参数来控制的,这里定义 为distance,是指某个前缀所包含的单词的数量。所有所含单词数量 少于distance的前缀都需要在字典树进行构造,假设现设distance为 6,而以"zo"为前缀的单词数量少于6,那么在字典树里面就要构 造代表"zo"的结点,即可以在字典树里面检索到"zo"这个前缀。所述的分段二分搜索,这里的分段的概念是指进行二分搜索不是 针对所有的单词来进行,而是针对某个特定前缀所包含的所有单词来 进行的。通过在字典树里面确定前缀后,在分段二分搜索中的单词数 量可以控制在一定范围,因此这部分操作可以载入到内存中进行。本发明的技术特点主要体现如下-1、 将电子词典中的单词检索分为了前缀匹配和完整匹配两个部 分,使得每个步骤所占用的空间减少,从而可以载入内存进行操作, 利用内存访问速度快的特点来提高检索的效率。2、 对字典树进行了改进,通过使用了参数控制来实现自适应的 特点,可以根据不同的资源条件的限制(如内存等)来调整字典树的 层数和结点个数,消除了字典树中大量的无用结点,减少了空间的浪3、 对二分搜索方法进行了改进,在保证它的时间效率的同时减 少了空间的占用,而且将二分搜索的搜索范围进行了分段,使得每次 的单词检索的空间縮小,可以载入内存进行操作,提高效率。
图l为自适应字典树的结构图。 图2为分段二分搜索的说明图。 图3为基于自适应字典树的单词检索流程。
具体实施方式
下面结合附图对本发明进行进一步阐述本发明中的自适应字典树的结构如图所示(这里以英文单词为 例,因为只包含a z的26个字母),它不是一棵满n叉树,它根据单 词的前缀来进行构造的。其中根结点是一个虚拟的结点,由于存在着 以"a", "b"等开头的单词,因此第一层的结点里面包括了 "a", "b"等。而在第二层的结点当中,由于不存在以"aa"为前缀的单词,因 此第一层的"a "的子结点里面不包含"a",以此类推。所述的自适应字典树的层数和结点数是可以控制的,假设现在将 distance的值设置为25,如果以"ba"为前缀的单词的数量有200个, 即大于distance,则在字典树里面"ba"可以继续生成其它的子结点, 如"bag",但是当以"bag "为前缀的单词数量为20个,那么"bag "下面就不继续生成子结点,这样就可以控制字典树的层数,从而满 足具体的资源的条件。所述的自适应字典树为了能够在载入内存后方便的进行操作,这 里对树结点的结构采取了等大小的设计,即每个结点所占空间的大小 一样,这样将字典树从外存读到内存的时候就不需要解析成物理上的 树的结构,方便操作。具体的结点结构的设计如表1所示表i自适应字典树结点的结构字段定义存储类型存储长度结点标识字符char型l字节子结点在树中偏移unsigned long型4个字节子结点个数char型l个字节指向分段二分搜索位置的指针unsigned long型4个字节所述的自适应字典树可以进行单词前缀的匹配,假设在自适应字典树中构造了前缀"bagg ",那么当查询单词"bag "的时候就可以 直接在字典树中命中,返回单词的信息,若要査询单词"baggage", 那么在字典树里面只完成了前缀匹配,即匹配了" bag "这个前缀, 然后根据结点中指向分段二分搜索位置的指针,可以找到以"bag" 为前缀的所有单词的开始位置,从而使用二分搜索的方法来进行完整 的单词匹配,从而找到要检索的单词或最接近的单词的信息并返回。所述的分段二分搜索如图2所示,仅仅针对属于同个前缀的所有 单词进行二分搜索,每个单词所占空间还是最长的单词词头的长度, 尽管在词典中单词词头的长度差异较大,但是属于同个前缀的单词词 头长度差异相对较小,所以这里使用二分搜索所浪费的空间不大。而 且参数distance的设置实际上也控制了分段二分搜索要搜索的单词数 量是小于distance的,因此可以控制所使用的空间。所述的基于自适应字典树的电子词典单词检索方法,其流程主要 如图3所示,包括了以下的一些步骤1) 输入要检索的单词;2) 将自适应字典树载入内存,在自适应字典树中进行单词的 前缀匹配,若在树中能查找到该单词,则返回该单词的信 息;否则进入3)3) 根据在字典树结点中获得的指向分段二分搜索的指针定位 到该前缀所包含所有单词的开始位置;4) 将该分段所包含的所有单词信息载入内存,进行二分搜索, 若找到要检索的单词,则返回相关信息,否则返回最接近 的单词信息。测试实例根据上面设计的基于自适应字典树的电子词典单词检索方法,这 里结合附图,以单词"baggage"为例子说明该检索方法的具体操作 1)由于该单词的第一个字母是"b",则首先在第一层树结点中顺序找到标识符为"b"的树结点②,由于还没读到该单词的最后一 个字母,并且结点②还有子结点,因此跳到结点②的第一个子结点⑥。 (参照附图1中的说明)2) 由于第二个字母是"a",则从树结点⑥开始,顺序找到标识 符为"a"的树结点,即是树结点⑥。由于还没读到单词最后一个字 母并且树结点⑥还有子结点,所以还要继续在索引树中进行匹配。于 是,从树结点⑥跳转到树结点⑧。3) 由于"baggage"的第三个字母是"g",所以从树结点⑧开始, 找到标示符为"g"的树结点(D。由于树结点⑨没有子结点,所以结 束字典树前缀查找,从树结点⑨跳到该树结点对应的分段二分搜索的 位置。4) 使用二分搜索的方法在前缀为"bag"的所有单词中进行搜索, 直到查找到单词"baggage"或最接近的单词并返回相关信息。
权利要求
1. 一种基于自适应字典树的电子词典单词检索方法,其特征在于其主要步骤包括1)在自适应字典树中进行单词前缀的检索,若在字典树能命中单词检索则返回相关单词信息,否则进入2);2)在分段的二分搜索层进行完整单词的检索,找到要检索的单词或最接近的单词的信息并返回。
2、 根据权利要求1所述的一种基于自适应字典树的电子词典单 词检索方法,其特征在于将单词检索分成单词前缀的检索和完整单词 匹配结合的两层检索方法。
3、 根据权利要求1或2所述的一种基于自适应字典树的电子词典单词检索方法,其特征在于使用了自适应的字典树进行单词前缀的 检索,使用分段二分搜索进行完整单词的匹配。
4、 根据权利要求1所述的一种基于自适应字典树的电子词典单 词检索方法,其特征在于动态字典树通过一个参数distance来控制树 的层数和树结点的个数,以适应不同的内存的限制。
5、 根据权利要求1或4所述的一种基于自适应字典树的电子词 典单词检索方法,其特征在于distance是指属于相同前缀的单词个数, 可以根据资源的要求进行动态配置。
6、 根据权利要求1所述的一种基于自适应字典树的电子词典单 词检索方法,其特征在于分段的二分搜索利用了属于相同前缀的单词 的词头长度差异相对较小的特点来减少空间的占用。
7、 根据权利要求6所述的一种基于自适应字典树的电子词典单词检索方法,其特征在于分段二分搜索的方法,可以将二分搜索的范 围縮小,从而可以在搜索的时候载入内存,有效的应用二分搜索的效
全文摘要
本发明公开了一种基于自适应字典树的电子词典单词检索方法,它涉及到一种电子词典中单词检索的技术。它定义了一种两层的检索结构,包括自适应字典树前缀匹配层和分段二分搜索的完整单词匹配层。检索方法为首先在自适应字典树进行单词前缀的匹配,如果能够命中则返回单词信息,否则进入分段二分搜索层进行检索,找到要检索的单词或与它最接近的单词的信息并返回。利用本发明可以有效的提高单词检索的效率,保证时间效率与空间占用的平衡。
文档编号G06F17/30GK101271466SQ20081002779
公开日2008年9月24日 申请日期2008年4月30日 优先权日2008年4月30日
发明者王建民, 罗笑南, 黄达尧 申请人:中山大学