低误查率的大规模词典存储方法及查询方法

文档序号:6480368阅读:257来源:国知局

专利名称::低误查率的大规模词典存储方法及查询方法
技术领域
:本申请涉及词典的计算机存储与查询领域,特别涉及计算机执行的低误查率的大规模词典存储与查询方法。
背景技术
:随着计算机的快速发展,利用计算机来实现不同语种之间的翻译技术,早已为人所熟知。如同人在翻译之前必须掌握两种语言的词汇和语法一样,计算机在进行语言翻译之前,其存储器中也必定存储机器词典和机器语法。计算机在翻译过程中,首先要通过查原文词典给出所输入原文的译文代码和语法信息,然后再根据译文代码和语法信息从译文词典中找出所要翻译的译文。如中国国家专利局申请号200610136705.1的文件提出了一种精确机器翻译的方法及其装置,如图l所示,其方法包括以下步骤S101,以句子为单位,以谓语动词为核心,对句子成分进行精确分类,从而建立"普遍语法公式"。S103,建立源语言数据库和目标语言数据库。S105,对源语言的具体句子进行分析,推导出源语言的具体句子的象数化公式。S107,将源语言的象数化公式转换为目标语言的具体句子的象数化公式。S109,在源语言数据库和目标语言数据库中——检索出相对应的词和词组,从而得到相对应的目标语言的具体句子。上述精确机器翻译的方法可以极大的提升翻译准确性、传情性、同步性。然而不管是何种机器翻"^争技术,都不可避免的要经过查词典的过程。对于大规模的词典来说,其查询速度直接决定了机器翻译的效率。现有技术中,利用哈希函数(hash)技术储存关键字以提高词典查询速度6是一种常用的方法,即将关键字通过哈希函数计算后再进行储存,从而达到压缩词典的目的。但利用哈希函数技术进行储存时不可避免的会出现碰撞问题,例如关键词keyA和关键字keyB,两者的内容不同,但通过哈希函数运算后的值仍可能相同,即等式/^/7(fe>^)=/^A(fe;^)成立。为了解决这个问题,人们又提出了完美哈希函数的构造策略,完美哈希函数是指对词典中的每个词条,用某种哈希函数运算后不存在碰撞的问题,这些算法称为完美哈希。如图2所示,其为现有的一种利用完美哈希函数进行词典查询的流程图。整个过程可分为构建词条索引过程S200和查询过程S204。构建词条索引过程S200包括以下步骤S201,对词典进行有序匹配,找出若干个哈希函数,使得词典中的每个词条都有对应的哈希函数。S203,对有序匹配过程中的数据进行处理,并生成完美哈希函数索引。查询过程S204包括以下步骤S205,查询完美哈希函数索引,并利用完美哈希函数索引中的哈希函数对待查询的词条进行计算。S207,判断算出的值是否大于词典中词条值的最大值,若不大于词典中词条值的最大值,则待查询词条存在于词典中。现有的这种完美哈希函数通常是基于词典中词条值是连续均匀分布的情况下来构建的,所以其在判断某词条是否存在时,往往是与词典中词条值的最大值或最小值进行比较。如果词条值大于词典中的最大值或小于词典中的最小值时,则认为词条不存在,如果词条的值在词典的值域范围内,则认为词条存在。但实际的词典中的值并不一定是连续的,少数几个常用词的出现次数可能要远远的高于其它的词,同时少数几个偏僻词的出现次数要远远低于其它词。如在电子商务中,词汇"供应**产品"的出现次数特别高。而通过现有的这种完美哈希函数对分布不均匀的词典中的词条进行计算时,就可能会出现误查询。以查询词条在词典中出现的次数为例。假设一个词典中的词条n-gram是7不均匀分布的,若词典中n-gram!出现了10次,n-gram2~n-gram100000出现的次数在500~1500之间,n-gram咖謝出现了10000次,n-gram^ow的值是这个词典的最大值。这样如果通过现有的完美哈希函数计算出来的某个g(n-grami)为8000次,2<i<100000,若根据值域来判断,8000<10000,说明这个n-grami存在于词典中。但是实际上词典中n-gram2~n-gram100000之间,并不一定存在着这个n-grami,即可能根本没有一个词条是出现了8000次的,所以就导致了误查询的出现。利用现有的完美哈希函数构建的词典索引来进行查询时,当查询一个词典中存在的词条时,那返回的值无疑是正确的。但若查询一个不在词典中的词条时,可能也会返回一个值,这就造成了误查。也即是说,完美哈希函数只对已知的词典中的词条"完美",而对未知的词并不"完美"。而当现有的这种完美哈希函数被运用到机器翻译中时,若翻译一个计算机存储器中不存在的词条时,可能就会造成错误的翻译。
发明内容本申请提供了一种低误查率的大规模词典存储方法,以解决现有的机器翻译技术中,利用完美哈希函数进行词典存储会发生错翻译的技术问题。本申请提供了一种低误查率的大规模词典存储与查询方法,以解决现有的机器翻译技术中,利用完美哈希函数进行词典查询会发生错翻译的技术问题。本申请提供了一种低误查率的大规模词典存储方法,以解决现有的词典存储技术中,利用完美哈希函数进行存储的词典存在误查询可能的技术问题。本申请提供了一种低误查率的大规模词典查询方法,以解决现有的词典查询技术中,利用完美哈希函数进行词典查询存在误查询可能的技术问题。本申请提出一种低误查率的大规模词典存储方法,用以压缩并存储机器翻译时所需要的词典数据,包括以下步骤首先,将机器翻译时所需要的现有的词典数据按照设定的格式进行排列。其次,读取词典数据,并利用8Bloomfilter技术生成Bloomfilter索引。最后,读取词典凝:据,并利用完美哈希算法生成完美哈希索引。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在生成完美哈希索引时,存储所用的哈希函数的个数及对应的每个哈希函数的参数。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,生成Bloomfilter索引时包括以下步骤首先,在计算机的存储器中设置一个数组。然后,利用相互独立的若干个哈希函数把词典数据中的每个词条进行运算后映射到数组上。最后,将数组中映射有哈希值的位置设置标示,并生成Bloomfilter索引。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,将数组中映射有哈希值的位置设置标示具体为将所述数组中映射有哈希值的位置置T。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在利用哈希函数把现有词典数据中的每个词条进行运算后映射到数组上之前还包括以下步骤通过词典数据的规模和Bloomfilter索引期望的误查率确定数组的大小。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在确定了数组的大小之后还包括以下步骤根据词典数据的规模和数组的大小确定Bloomfilter索引所用到的哈希函数的个数。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,生成完美哈希索引时包括以下步骤首先,将词典数据中的词条进行有序匹配,使得每个词条都有一个相应的哈希函数,并将每个词条与其相应的哈希函数的参数作为一个元素进行储存。然后,按照储存的先后顺序将元素进行处理,并生成完美哈希索引。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在进行有序匹配过程中,釆用不大于十个哈希函数对词典进行有序匹配。本申请提出一种对上述的低误查率的大规模词典存储方法所形成的词典的查询方法,用以在计算机进行语言翻译时,对待翻i奪的词条进行查询,包括以下步骤首先,获取待翻译词条的若干个候选翻译项。然后,查询Bloomfilter索引,并判断候选翻译项是否存在。接着,查询完美哈希索引,并通过从完美哈希索引中得到的哈希函数计算存在的候选翻译项的分值。最后,获取分值最高的候选翻译项,并作为待翻译词条的翻译结果。依照本申请较佳实施例所述的低误查率的大规模词典查询方法,计算候选翻译项的分值时包括以下步骤首先,读取完美哈希索引中候选翻译项所对应的哈希函数的参数。其次,根据哈希函数的参数还原哈希函数。最后,候选翻译项经过所对应的哈希函数的计算,得到每个候选翻译项的分值。依照本申请较佳实施例所述的低误查率的大规模词典查询方法,判断候选翻译项是否存在时包括以下步骤首先,通过与生成Bloomfilter索引同样的哈希函数把候选翻译项经过运算后映射到数组上。然后,判断数组中映射有哈希值的位置是否都有标示。最后,若都有标示,则返回候选翻译项存在。本申请提出一种低误查率的大规模词典存储方法,用以压缩并存储现有的词典数据,包括以下步骤首先,将现有的词典数据中的词条按照设定的格式进行排列。其次,读取词典数据,并利用Bloomfilter技术生成Bloomfilter索引。最后,读取词典数据,并利用完美哈希算法生成完美哈希索引。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在生成完美哈希索引时,存储所用的哈希函数的个数及对应的每个哈希函数的参数。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,生成Bloomfilter索引时包括以下步骤首先,在计算机的存储器中设置一个数组。其次,利用相互独立的若干个哈希函数把词典数据中的每个词条进行运算后映射到数组上。最后,将数组中映射有哈希值的位置设置标示,并生成Bloomfilter索引。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,将数组中映射有哈希值的位置设置标示具体为将所述数组中映射有哈希值的位置置T。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在利用10哈希函数把现有词典数据中的每个词条进行运算后映射到数组上之前还包括以下步骤通过词典数据的规模和Bloomfilter索引期望的误查率确定数组的大小。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在确定了数组的大小之后还包括步骤根据词典数据的规模和数组的大小确定Bloomfilter索引所用到的些哈希函数的个数。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,生成完美哈希索引时包括以下步骤首先,将词典数据中的词条进行有序匹配,使得每个词条都有一个相应的哈希函数,并将每个词条与其相应的哈希函数的参数作为一个元素进行储存。然后,按照储存的先后顺序将元素进行处理,并生成完美哈希索引。依照本申请较佳实施例所述的低误查率的大规模词典存储方法,在进行有序匹配过程中,采用不大于十个哈希函数对词典进行有序匹配。本申请提出一种对上述的低误查率的大规模词典存储方法所形成的词典的查询方法,包括以下步骤首先,查询Bloomfilter索引,并判断待查询词条是否存在。然后,若词条存在,则查询完美哈希索引,得到词条的值。依照本申请较佳实施例所述的低误查率的大规模词典查询方法,查询Bloomfilter索引时包括以下步骤首先,通过与生成Bloomfilter索引同样的哈希函数把待查询的词条经过运算后映射到数组上。然后,判断数组中映射有哈希值的位置是否都有标示。最后,若都有标示,则返回待查询词条存在。依照本申请较佳实施例所述的低误查率的大规模词典查询方法,查询完美哈希索引时包括以下步骤首先,读取完美哈希索引中待查询词条所对应的哈希函数的参数。然后,根据哈希函数的参数还原哈希函数。最后,通过待查询词条所对应的哈希函数运算后得到待查询词条的哈希值。相对于现有技术,本申请包括以下优点本申请在利用完美哈希技术来查词典之前,先通过Bloomfilter技术判断词条本身是否存在于词典中,用词条本身是否存在来代替现有技术中以值域判断词条是否存在,从而降低了词典查询的误查率,提升了查询效果。另外,因为本申请的完美哈希索引所存储的哈希函数只需占用很少的空间,因此很大限度地压缩了词典的存储,节省了计算机的存储空间。当然,实施本发明的任一产品必不一定需要同时达到以上所述的所有优点。图1为中国国家专利局申请号200610136705.1的文件提出的实施例的一种精确机器翻译的方法的流程图2为现有的一种利用完美哈希函数进行词典查询的流程图3为本申请实施例的一种低误查率的大规模词典存储方法流程图4为本申请实施例的一种低误查率的大规模词典查询方法流程图5为本申请实施例的一种Bloomfilter索引的构建流程图6为本申请实施例的一种完美哈希索引的构建流程图7为本申请实施例的一种有序匹配过程的示意图8为本申请实施例的一种判断候选翻译项是否存在时的流程图9为本申请实施例的一种低误查率的大规模词典存储方法流程图10为本申请实施例的一种低误查率的大规模词典查询方法的流程图。具体实施例方式本申请的主要思想是在词典存储及查词典时结合了Bloomfilter技术和完美哈希技术。在词典存储时,首先,将现有的词典数据中的词条按照设定的格式进行排列。其次,读取词典数据,并利用Bloomfilter技术生成Bloomfilter索引。最后,读取词典数据,并利用完美哈希算法生成完美哈希索引。在词典查询时,先通过Bloomfilter技术过滤掉未在词典中的词条,只有留下来的词条才通过完美哈希函数进行查询。其中,本申请中所述的Bloomfilter技术是一种空间利用率^[艮高的概率数据结构,它常被用来;f企测一个元素是否存在于一个特定的集合中。以下结合附图,具体说明本发明。本申请提出一种低误查率的大规模词典存储方法,用以压缩并存储机器翻译时所需要的词典数据。请参见图3,其为本申请实施例的一种低误查率的大规模词典存储方法流程图,其包括以下步骤S301,将现有的词典数据按照设定的格式进行排列。现有的词典数据可以是从某网站用户日志中获取的,该用户日志中记录有登录该网站的用户的历史查询词。排列的方式可以采用二元语言模型,如表1所示<table>tableseeoriginaldocumentpage13</column></row><table>表1表l中的"供应八相机"、"供应APVC"等表示现有词典中的词条,"A"符号表示这个词条是二元语言形式,即由两个词语组成。,"7000"、"9000"等表示对应词条在词典中出现的次数。如表1表示包含"供应"、"相机"的词条出现的次数是7000次。除此之外,也可以采用其它的排列方式,如三元语言模型、四元语言模型等。S303,读取词典数据,并利用Bloomfilter技术生成Bloomfilter索引,并进行存储。利用Bloomfilter技术生成Bloomfilter索引的基本思想是用一系列相互独立的哈希函数把词典中的每个词条映射到数组中,并在这些位置设置标示,如图5所示,其为本申请实施例的一种Bloomfilter索引的构建流程图。S501,在计算机的存储器中设置数组。此数组一般设置在内存中。S503,通过现有词典的规模和Bloomfilter索引期望的误查率确定数组的大小。S505,根据现有词典的规模和数组的大小确定Bloomfilter索引所用到的哈希函数的个数。S507,利用相互独立的若干个哈希函数把现有词典中的每个词条进行运算后映射到数组上。这里所用到的哈希函数可以是随机选取的。S509,将数组中映射有哈希值的位置设置标示,并生成Bloomfilter索引。为了便于理解,现给出Bloomfilter索引建立的程序伪代码如下符号说明Hash函凄t蔟A,(x)—=0EndForFor/e=1EndForEndfor上述伪代码中表示Bloomfilter索引的规模大小,S表示词典中词条的集合,n-gram是自然语言处理词典常用的一个语言模型,这里指代S中的词条。此段伪代码是将索引数组A—B中具有哈希值的位置置"1",其它位置置"0",其索引结构如表2所示14<table>tableseeoriginaldocumentpage15</column></row><table>表2值个数表示了Bloomfilte索引的值的个数,相当于似,。接下来的一系列值中,T表示此bit被置"1","0"表示没被置T。实践中,在建立Bloomfilte索引之前要先确定所用到的哈希函数的个数K与Bloomfilter索引期望的误查率p,然后可以通过公式K,=/2*M/e,与/I^I"(1-(l-j^)"e—%,可以推导出Bloomfilter索引的数组大小M,=2p〃"2*|S|。而现有词典的规模ISI在其存储到计算机的存储器中时可以计算获得,所以M,的大小可以根据Bloomfilter索引期望的误查率p来随时调整。其中,上述Bloomfilter索引期望的误查率p的等式中,k是哈希函数个数,n是词典中的词条个数,m是位数组的个数。在确定了Bloomfilter索引中数组的大小以及其误差率后便可以构建此Bloomfilter索引了。S305,读取词典数据,并利用完美哈希算法生成完美哈希索引,其中,完美哈希索引包括所用的哈希函数的个数及对应的每个哈希函数的参数。建立了Bloomfilter索引之后,还需要建立完美哈希索引。如图6所示,其为本申请实施例的一种完美哈希索引的构建流程图,其包括以下步骤S601,将现有词典中的词条进行有序匹配,使得每个词条都有一个相应的哈希函数,并将一个词条与其相应的哈希函数的参数作为一个元素进行储存。S603,按照储存的先后顺序将元素进行处理,并生成完美哈希索引。有序匹配的目的是找出若千个哈希函数,使得对词条集合S中的每个词条"-gram,,OS7'<|S|),都用某个对应的哈希函数/^化,0^/<尺计算出哈希值ZmA,("—gram,)。不同的词条"—gram^可能只于应不同的Aas^函凌t,长口w—gra附,只于对应/za^等。满足这ISI个/aW值都是唯一的。同时将处理w—gram,的力l页序,口w—gram对应的哈希函数保存在應m^/中,m。WM是指一种队列,里面可以依次存放词条,每个词条的记录和对应的哈希函数。如果有序匹配过程失败,则更换哈希函数,继续尝试,直到找到所有满足条件的哈希函数为止。实践证明,当M21.23I5"I时,失败的概率比较小。为了便于理解,下面给出有序匹配过程的伪代码(〃表示说明)输入n画gram的集合S,Hash函凄t簇/,(x)—[O,M),其中O《i<K输出有序的匹配集m加c/7^/,或者失败〃初始化Matched为空〃初始化r2/的每个元素为空For/e"("—g薩,)牟,("—g扁,)]o即完美哈希索引包含两个部分,分别为哈希函数索引和值索引,如表3所示<table>tableseeoriginaldocumentpage17</column></row><table>表3表3中哈希函数的参数一般有两个组成部分,即函数类型和函数种子。函数类型指定了哈希算法,如JustinSobel的哈希算法,peterJ.Weinberger的哈希算法等等。函数种子指各种哈希算法的参考值。这2个参数可以有效的复原哈希函数,同时节省了存储哈希函数的开销。例如JustinSobel的哈希算法如下unsignedintCJSHash::hash(constchar*key,size—tkeyLen)unsignedinthash=m—seed;for(std:ize—ti=0;i<keyLen;i++)hashA=((hash《5)+key[i]+(hash>>2));returnhash;而其种子就是程序中的m_seed。本申请所用的有序匹配过程只用到少数几个哈希函数(图7的实施例中只用了三个哈希函数),因此在完美哈希索引中所存储的哈希函数参数只占用了极小的存储空间。值索引记录了值的个数和每个值的具体值。值的具体值按照,)(w—gram)]=v(w—)(^)—gram)]来确定。在实践中,设置完美哈希索引的规模M2为略大于词典的规模ISI,M2越靠近ISI,则此完美哈希索引越节省空间,但同时越难找到哈希函数簇。一般取M"l.ljS|。针对上面介绍的低误查率的大规模词典存储方法,本申请还提出一种低误查率的大规模词典查询方法,其用于在计算机进行语言翻译时,利用存储方法构建的词典对待翻译的词条进行查询,如图4所示,其包括以下步骤S401,获取待翻译词条的若干个候选翻译项。此过程可以通过现有计算机的语法转换技术来实现。如词条"喜欢"翻译成英语可以是"like"或"love",这里"like"与"love"即为词条"喜欢"的候选翻译项。S403,查询Bloomfilter索引,并判断候选翻译项是否存在。示,因此判断候选翻译项是否存在于词典中,就相当于判断候选翻译项通过哈希函数映射在数组中的位置是否有标示的过程。如图8所示,判断候选翻译项是否存在的过程包括以下步骤S801,通过与建索引时相同的哈希函数把候选翻译项经过运算后映射到Bloomfilter索引的数组上。S803,判断数组中映射有哈希值的位置是否都有标示。如果数组中映射有哈希值的位置有一个或多个没有标示,则说明这个候选翻译项不存在,则计算机返回候选翻译项不存在的信息。S805,若都有标示,则返回候选翻译项存在。为了便于理解,现给出通过查询Bloomfilter索引判断候选翻译项是否存在的伪代码输入输出是否存在—gramFor/》doIf(^—5[/;,("_gram)]==0)thenReturn不存在EndIfEndForReturn存在S405,查询完美哈希索引,并通过从完美哈希索引中得到的哈希函数计算存在的候选翻译项的分值。查询完美哈希索引时,首先通过读取哈希函数索引部分,得到哈希函数的参数,并构建哈希函数,然后用这些哈希函数计算存在的候选翻译项的分值g("—gram):g("—graw)=X[/z,("—gmm)]。这里所i兌的^芙选翁3i,项的分<直是指候选翻译项在现有词典中;现的次数。S407,获取分值最高的候选翻译项,并作为待翻译词条的翻译结果。以"我喜欢吃苹果"这个句子的翻译为例,若计算机通过现有的语法转19换技术得到这个句子的候选翻译项有"Ilikeetingapple"和"Iloveeating汰pple"。为了确定"我喜欢吃苹果"的正确翻译,分別对候选翻译项"IHkeeating卿k"和"Iloveeating邵ple"傲Bloomfilter索引查询,假设得出候选翻译项"Ilikeeatingapple"和"Iloveeatingapple"都在词典中存在,然后再分別对"Ilikeeatingapple"和"Iloveeating邵ple"傲完美哈希索引查询并分别进行哈系函数计算。若得到"I他eeatingapple"的分值是鹏O,而"Hoveeatingapple"的分值是10,则表明词典中"Ilikeeatingapple"出现了賺0次》而"Iloveeatingappk',出现了10次,1000>10,因此翻译的结果是"Ilikeeating本申请提出的Bloomfilter索引与完美哈希索引相结合的思想,不仅适用于机器翻译领域中在语言翻译时对词条出现次数的查询,也适用于其它领域中任意情况的词、值的词典查询。因此本申请另提出一种低误查率的大规模词典存储与查询方法,用以压缩现有的词典数据,并对词条进行查询,其分为存储过程与查询过程。请参见图9,其为本申请实施例的一种低误查率的大规模词典存储方法流程图。S901,将现有的词典数据中的词条按照设定的格式进行排列。排列的方式可以根据实际需要来设置,并不局限于以词条在词典中出现的次数。如可以以词条的代号排列、以词条长度排列等。S903,读取词典数据,并利用Bloomfilter技术生成Bloomfilter索引。利用Bloomfilter技术生成Bloomfilter索引的基本思想是用一系列相互独立的哈希函数把词典中的每个词条映射到数组中,并在这些位置设置标示,标示的形式通常是置"1"。此过程与前述的Bloomfilter索引构建过程相同,此处不再详细存又述。S905,读取词典数据,并利用完美哈希算法生成完美哈希索引,其中,完美哈希索引包括所用的哈希函数的个数及对应的每个哈希函数的参数。构建完美哈希索引时,首先,将现有词典中的词条进行有序匹配,使得每个词条都有一个相应的哈希函数,并将一个词条与其相应的哈希函数的参数作为一个元素进行储存。其次,按照储存的先后顺序将元素进行处理,并生成完美哈希索引。这里,词典中词条通过索引的哈希函数算出的值可以是词条在词典中出现的次数,也可以是其它的整数值。请参见图10,其为本申请实施例的一种低误查率的大规模词典查询方法流程图。S1001,查询Bloomfilter索引,并判断待查询词条是否存在。查询Bloomfilter索引时,通过与构建Bloomfilter索引时相同的哈希函数将词条经过运算后映射到Bloomfilter索引的数组上,并判断数组上映射有哈希值的位置是否都有标示,都有标示则表示词条存在于词典中。此步骤与前述的Bloomfilter索引的查询过程相同,此处不再详细存又述。S1003,若词条存在,则查询完美哈希索引,得到词条的值。查询完美哈希索引时,首先,读取完美哈希索引中待查询词条所对应的哈希函数的参数。其次,根据哈希函数的参数还原哈希函数。最后,通过待查询词条所对应的哈希函数运算后得到待查询词条的哈希值。出现误查的唯一可能是待查的词条不在词典中,如果待查的词条在词典中则不可能误查。本申请的目的就是尽可能地降低这种误查发生的可能性。例如查询词条"数码相机",用Bloomfilter技术过滤时,用Bloomfilter索引中的所有哈希函数运算后得到词条"数码相机"在索引中的所有的值爿_5[~(数码相机)]==1,说明词条"数码相机"在词典内,而进入完美哈希运算。如果Bloomfilter索引中通过哈希函数运算后的值有一个不为1时,则说明词条"数码相机"不在词典内,则不会再进入完美哈希运算。与现有技术相比,本申请包括以下优点本申请在利用完美哈希技术来查词典之前,先通过Bloomfilter技术判断词条本身是否存在于词典中,用词条本身是否存在来代替现有技术中以值域判断词条是否存在,从而降低了词典查询的误查率,提升了查询效果。另外,因为本申请的完美哈希索引所存储的哈希函数只需占用很少的空间,因此很大限度地压缩了词典的存储,节21省了计算机的存储空间。以上公开的仅为本发明的几个具体实施例,但本发明并非局限于此,任何本领域的技术人员能思之的变化,都应落在本发明的保护范围内。权利要求1、一种低误查率的大规模词典存储方法,用以压缩并存储机器翻译时所需要的词典数据,其特征在于,包括以下步骤将机器翻译时所需要的现有词典数据按照设定的格式进行排列;读取词典数据,并利用Bloomfilter技术生成一Bloomfilter索引;读取词典数据,并利用完美哈希算法生成一完美哈希索引。2、如权利要求1所述的低误查率的大规模词典存储方法,其特征在于,在生成所述完美哈希索引时,存储所用的哈希函数的个数及对应的每个哈希函凄史的参凄史。3、如权利要求1所述的低误查率的大规模词典存储方法,其特征在于,生成所述Bloomfilter索引时包括以下步骤在计算机的存储器中设置一数组;利用相互独立的若干个哈希函数把词典数据中的每个词条进行运算后映射到所述数组上;将所述数组中映射有哈希值的位置设置一标示,并生成所述Bloomfilter索引。4、如权利要求3所述的低误查率的大规模词典存储方法,其特征在于,将所述数组中映射有哈希值的位置设置一标示具体为将所述数组中映射有哈希值的位置置"1"。5、如权利要求3所述的低误查率的大规模词典存储方法,其特征在于,在利用所述哈希函数把现有词典数据中的每个词条进行运算后映射到所述数组上之前还包括以下步骤通过词典数据的规4莫和所述Bloomfilter索引期望的误查率确定所述数组的大小。6、如权利要求5所述的低误查率的大规模词典存储方法,其特征在于,在确定了所述数组的大小之后还包括步骤根据词典数据的规模和所述数组的大小确定所述Bloomfilter索引所用到的所述哈希函数的个数。7、如权利要求1所述的低误查率的大规模词典存储方法,其特征在于,生成所述完美哈希索引时包括以下步骤将词典数据中的词条进行有序匹配,使得每个词条都有一个相应的哈希函数,并将所述每个词条与其相应的哈希函数的参数作为一个元素进行储存;按照储存的先后顺序将所述元素进行处理,并生成所述完美哈希索引。8、如权利要求7所述的低误查率的大规模词典存储方法,其特征在于,在进行有序匹配过程中,采用不大于十个哈希函数对词典进行有序匹配。9、一种对权利要求1-8任一项所述的低误查率的大规模词典存储方法所形成的词典的查询方法,用以在计算机进行语言翻译时,对待翻译的词条进行查询,其特征在于,包括以下步骤获取待翻译词条的若干个候选翻译项;查询所述Bloomfilter索引,并判断所述候选翻译项是否存在;查询所述完美哈希索引,并通过从所述完美哈希索引中得到的哈希函数计算存在的所述候选翻译项的分值;获取分值最高的候选翻译项,并作为待翻译词条的翻译结果。10、如权利要求9所述的低误查率的大规模词典查询方法,其特征在于,计算所述候选翻译项的分值时包括以下步骤读取所述完美哈希索引中所述候选翻译项所对应的哈希函数的参数;根据所述哈希函数的参数还原哈希函数;所述候选翻译项经过所对应的哈希函数的计算,得到每个候选翻译项的分值。11、如权利要求9所述的低误查率的大规模词典查询方法,其特征在于,判断所述候选翻译项是否存在时包括以下步骤通过与生成Bloomfilter索引同样的所述哈希函数把候选翻译项经过运算后映射到所述数组上;判断所述数组中映射有哈希值的位置是否都有所述标示;若都有所述标示,则返回候选翻i奪项存在。12、一种低误查率的大规模词典存储方法,用以压缩并存储现有的词典数据,其特征在于,包括以下步骤将现有的词典数据中的词条按照设定的格式进行排列;读取词典数据,并利用Bloomfilter技术生成一Bloomfilter索引;读取词典数据,并利用完美哈希算法生成一完美哈希索引。13、如权利要求12所述的低误查率的大规模词典存储方法,其特征在于,在生成所述完美哈希索引时,存储所用的哈希函数的个数及对应的每个哈希函数的参数。14、如权利要求12所述的低误查率的大规模词典存储方法,其特征在于,生成所述Bloomfilter索引时包括以下步骤在计算机的存储器中设置一数组;利用相互独立的若干个哈希函数把词典数据中的每个词条进行运算后映射到所述数组上;将所述数组中映射有哈希值的位置设置一标示,并生成所述Bloomfilter索引。15、如权利要求14所述的低误查率的大规模词典存储方法,其特征在于,将所述数组中映射有哈希值的位置设置一标示具体为将所述数组中映射有哈希值的位置置'T'。16、如权利要求14所述的低误查率的大规模词典存储方法,其特征在于,组上之前还包括以下步骤通过词典数据的规^t和所述Bloomfilter索引期望的误查率确定所述数组的大小。17、如权利要求16所述的低误查率的大规模词典存储方法,其特征在于,在确定了所述数组的大小之后还包括步骤根据词典数据的规模和所述数组的大小确定所述Bloomfilter索引所用到的所述哈希函数的个数。18、如权利要求12所述的低误查率的大规模词典存储方法,其特征在于,生成所述完美哈希索引时包括以下步骤将词典数据中的词条进行有序匹配,使得每个词条都有一个相应的哈希函数,并将所述每个词条与其相应的哈希函数的参数作为一个元素进行储存;按照储存的先后顺序将所述元素进行处理,并生成所述完美哈希索引。19、如权利要求18所述的低误查率的大规模词典存储方法,其特征在于,在进行有序匹配过程中,采用不大于十个哈希函数对词典进行有序匹配。20、一种对权利要求12-19任一项所述的低误查率的大规模词典存储方法所形成的词典的查询方法,其特征在于,包括以下步骤查询所述Bloomfilter索引,并判断待查询词条是否存在;若词条存在,则查询所述完美哈希索引,得到词条的值。21、如权利要求20所述的低误查率的大规模词典查询方法,其特征在于,查询所述Bloomfilter索引时包括以下步骤'.通过与生成Bloomfilter索引同样的所述哈希函数把待查询的词条经过运算后映射到所述数组上;判断所述数组中映射有哈希值的位置是否都有所述标示;若都有所述标示,则返回待查询词条存在。22、如权利要求20所述的低误查率的大规模词典查询方法,其特征在于,查询所述完美哈希索引时包括以下步骤读取所述完美哈希索引中待查询词条所对应的哈希函数的参数;根据哈希函数的参数还原哈希函数;通过待查询词条所对应的哈希函数运算后得到待查询词条的哈希值。全文摘要本申请提出一种低误查率的大规模词典存储方法及查询方法,其低误查率的大规模词典存储方法用以压缩并存储机器翻译时所需要的词典数据,包括以下步骤首先,将机器翻译时所需要的现有的词典数据按照设定的格式进行排列。其次,读取词典数据,并利用Bloomfilter技术生成Bloomfilter索引。最后,读取词典数据,并利用完美哈希算法生成完美哈希索引。本申请可以进一步降低词典查询时错误的发生几率。文档编号G06F17/30GK101464899SQ20091000364公开日2009年6月24日申请日期2009年1月13日优先权日2009年1月13日发明者磊侯,健孙,孙海涛,勤张申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1