用于查找串的方法和设备的制作方法

文档序号:6478411阅读:178来源:国知局
专利名称:用于查找串的方法和设备的制作方法
技术领域
本发明涉及一种在包括许多长串或一个长串的数据库中查找与查询串部分匹配或精确匹配的最终数目的结果串的方法。
本发明也涉及一种查找引擎。
本发明也涉及一种工具。
本发明也涉及一种用于执行该方法的计算机系统。
本发明进一步涉及一种用于执行该方法的计算机程序产品。
另外,本发明进一步涉及一种设备。
背景技术
US5963957公开了一种具有音乐数据库的信息处理系统。所述音乐数据库存储音乐音符的单音调参考序列。这些参考序列都被标准化到相同的音阶度,以按照编排顺序进行存储。应用一种所谓的N-ary来查找输入音符串与特定参考序列之间的匹配。从而所述信息处理系统提供与匹配的参考序列相关联的目录参考信息。
在Du,D.W.和Chang,S.C.(1994)的“an approach to designingvery fast approximate string matching algorithms”,IEEE Transactionson Knowledge and Data Engineering,6,4,620-633中进一步公开了另一种串匹配的方法。
在现有技术中,检索方法使用精确匹配的算法。然而,已知的检索方法典型地尝试精确匹配,即执行查找或匹配以找到完全匹配。
然而在许多实际应用中所存在的问题就是,查找的只是一个完全匹配。结果,另一个问题是,即使这些结果只包含很小的误差,虽然它们非常有用,但是没有匹配结果可以提供。
进一步存在的问题就是,查找大数据库需要大量时间,并且相应地需要使用较强的处理能力。
在许多实际应用中,获得部分匹配(而不是完全匹配)就已经足够了。出现这样的情况是因为,不管作为输入来进行查找尝试的查询串还是得到的匹配串都可能具有较小的误差,但是得到部分匹配的结果还是比完全没有结果好。所述误差典型地是由于包括在该查询串中或所查找的数据库中的不当数据产生的。

发明内容
通过所述方法可以解决上述以及其它问题,其中该方法包括步骤将该查询串划分成第一数目的输入查询串;换言之,在该步骤中,该查询串被分割成为所述第一数目的小片段的子串,即分割成为所述输入查询串。
确定所述第一数目的输入查询串中每一串的第二数目的相邻串,其中所述第二数目的相邻串中的每一串具有预定的第一数目的误差;换言之,在该步骤中,该第二数目的相邻串取决于该查询串的长度、所应用的串表中不同离散符号的大小、以及在该相邻串中所允许的误差的数目。
通常,对于所述第一数目的输入查询串中的每一串,确定所述第二数目的相邻串。它们中的每一个都分别具有预定的第一数目的误差,其大于或等于零。
基于查找方法查找数据库,为所述第二数目的相邻串中的每一串查找第三数目的精确匹配;从而,就是基于给定的查找方法查找数据库,为所述第二数目的相邻串中的每一串查找(第三)数目的精确匹配;该查找方法可以是q-gram标引方法、后继树法、或散列法。
将从该数据库所查找的所述精确匹配的串联接成第四数目的中间串,其中包括在每一所述中间串中的所述查找的精确匹配的串在所述数据库中是彼此相互接续的;并且根据所述第四数目的中间串确定最终数目的结果串,其中每一最终数目的结果串相比于所述查询串具有最大预定第二数目的误差。
对于最后两个步骤,在图5中、即在步骤400和500中对其进行解释。
作为该方法的结果,每一所述最终数目的结果串是所述查询串(在开始段落中所提到的)的精确或部分匹配。
因而就可以实现得到完全匹配或只包含细小误差的部分匹配。
进一步,(对于完全或部分匹配)该方法可以使用相对较低的处理能力快速地查找大数据库。
由于与前面所述关于该方法相同的原因,所述设备、工具、查找引擎、计算机系统分别具有相同的优点并能够接近该相同的问题。


下面将结合优选实施例并参照附图更加全面的解释本发明,其中图1所示为现有技术的一般描述;图2所示为划分该查询串的方法;图3所示为通过实际详细范例方式划分该查询串和随后的查找;图4所示为通过一般范例方式划分并查找该查询串;图5所示为查找最终数目的结果串的方法;和图6所示为用于查找的设备。
具体实施例方式
在整个附图中,相同的附图标记表示相似或对应的特征、功能、串等。
图1所示为现有技术的一般描述。该附图所示为在附图标记为80的串数据库中查找的查询串“abacababc”。其中显示出了最多允许一个误差(k=1)的该查询串的四个近似匹配的数据库位置。附图标记为34的该查询串“abacababc”由三个字母的表组成{‘a’,‘b’,‘c’}。如果只允许一个误差(k=1),就可以发现包含增加符号的近似匹配(例如,附图标记30“abacadabbc”)、包含删除符号的近似匹配(例如,附图标记31“abcababc”)、包含替换符号的近似匹配(例如,附图标记32“abacadcbc”)、以及精确匹配(例如附图标记33“abacababc”)。在现有技术中通常需要说明查找串,从而一次查找整个查询串。
图2所示为划分该查询串的方法。从文献中得知的高效检索方法利用精确匹配的快速算法,也就是不允许任何误差(或k=0)的查找。这样只会返回(精确)匹配的位置,即图1中的附图标记33。需要脱离附图标记为80的串数据库离线(作为预处理器)地建立特殊的索引结构,诸如后继树或q-gram,以能够实施快速的精确匹配算法。基本上,这些机构保持有该数据库中出现的每一较小子串的所有位置。有效地,这样意味着该检索处理可以立即跳转到该数据库中的相关点,而丢弃不相关部分。使用该q-gram标引法,因为其比其它方法的空间效率都高(即使用更少的存储器),并且可以容易地适用于我们的目的。该q-gram保持在该数据库中出现的所有长度q>0的子串的位置。例如,如果该数据库由串“abababcabcabacab……”组成,q=4的q-gram收集长度为4的所有子串的起始位置,诸如“abab”、“baba”、“abab”、“babc”和“abca”。通过使用函数标引这些子串,其排列并排序在容易访问的数据结构中。类似的子串,诸如范例中的“abab”在该相同的标引结束(称为桶)。通过计算该标引函数,q-gram让我们能够得到长度m≤q的查询的所有精确匹配的数据库位置,并检索桶的成员。长度大于q的查许需要另外的校验,因为只有长度为q的查许的前缀可以在桶中。Myers在1994年描述了使用q-gram工作的标准方法。
作为对所述q-gram法的替换形式,可以应用后继树法或散列法。
如果在近似匹配中使用精确匹配法,必须为所允许的误差找到工作区。例如,根据本发明,可以产生在原始查询(串)中有限数目的位置上有所不同的串的集合。这些串被称为该查询的邻居。邻居于是表示查询中的误差。从形式上讲,串S的k邻居被定义为最多具有关于S的k个误差的串的集合。例如,如果查询“abba”由两个字母{‘a’,‘b’}的表构成,那么最多具有一个误差(即误差级k≤1)的完整邻居集合包括原始的“abba”,具有删除的所有串“abb”、“aba”和“bba”,具有增加的所有串“aabba”、“babba”、“abbba”、“ababa”、“abbaa”和“abbab”,以及具有替换的所有串“bbba”、“aaba”、“abaa”和“abbb”。
可以有效地产生给定串的邻居(Myers,1994)。如果这些邻居位于使用q-gram法的数据库中,那么这些精确匹配对应于该原始查询的近似匹配。
然而,当研究更长的查询、更大的字母表以及更高的误差级时,所要研究的邻居的数目成指数变化。为了解决这一问题并得到检索速度,首先将该查询划分成更小的子串,并对于每一子串产生其邻居的集合。然后使用q-gram和所提到的其它查找方法精确地查找所有这些邻居。它们在该数据库中的精确匹配现在对应于该原始查询的部分近似匹配。
假设该查询为由三个字母的表{‘a’,‘b’,‘c’}组成的“abacababc”,并且现在允许误差级为3(k=3)。注意到,该查询中的误差可以出现在任何位置。例如,误差可以全部在开始(例如,那么“ccccababc”可以是你实际查找的串);全部在中间(例如,“ababbcabc”);
全部在末尾(例如,“abacabbca”);或者不均匀地分布在该查询中(例如,“abccacabb”)。
如果该查询被分成三部分(p=3,对于我们的范例查询“abacababc”其得到子串“aba”、“cab”和“abc”),为每一部分产生邻居的集合并且单独在该数据库中查找每一邻居,上下文就失去了该原始查询所看起来的那样。为了理解这一点,注意到这些邻居可以出现在该数据库中的任何地方。邻居并非必须靠近在一起出现或者出现在序列中,其要求形成该原始查询的近似匹配。换言之,当对于我们的范例查询“abacababc”找到一个邻居的精确匹配时,并不能得知其反应的是该查询的第一、第二还是第三部分,以及所发现的其它部分的邻居是哪种类型。必须采取必要的措施来揭示该信息。在前面的文献中所描述的方法到此为止,也就是它们将邻居的每一精确匹配当作用于解算该查询的有用候选。相反,本发明的横向切割在查找邻居的同时通过重新建立该(误差)上下关系进行附加的过滤步骤。可以丢弃的邻居有在该数据库中不与其它邻居一起出现在序列中的;在该数据库中与其它邻居形成序列的,其不能为该原始查询的近似匹配。
这些观察浓缩在本发明的中心“横向切割”引理中,如果我们将查询串分成p部分,并且单独地查找最多具有ki误差的每一部分,其能够保证成功地检索到相关部分。
横向切割引理假设A和B是两个串,并且从编辑距离来说它们之间的误差小于或等于k,或者形式为(A,B)≤k。假设A=A1A2……Ap是划分成p部分的A,并且对于串Ai以及任意p>1。假设K=(k1,k2,……kp)是非负数目的任何序列,从而C=Σi=1pki+p-k≥1.]]>那么就存在划分B=B1B2……Bp以及通过J=(j1,j2……j1)标引的部分的子集,从而使得Σi=1l(kj1+1-∂(Aj1,Bj1))≥C.]]>证明显然B可以被划分成p部分,使得Σi=1p∂(Ai,Bi)≥∂(A,B):]]>看到其中误差位于对应的部分并且不会引入另外的误差。我们选择这样划分B并且所有部分i都位于子集J中,其中ki+1≥(Ai,Bi)。现在我们可以得到下式,其证明了我们的例子
C=Σi=1pki+p-k≤Σi=1pki+1-∂(Ai,Bi)≤Σi=1lkj1+1-∂(Aj1,Bj1)]]>该引理在本发明中用作筛选条件,并且A是查询串,B是数据库串。该引理说明误差的数目e表示该数据库中邻居的序列,其必须满足特定的标准。对于该标准,ki用作该查询的每一子串i中所允许的预定义数目的误差。那么,误差之和Σi=1p(ki+1)-e]]>应该至少为常数C=Σi=1pki+p-k,]]>以仍然作为该查询的近似匹配的部分。在这些公式中,p是该查询串被划分成的子串的数目,ki是每一子串i中所允许的误差的数目,并且k是误差的最大总数目(误差级)。
计算误差之和Σi=1p(ki+1)-e]]>以及将其与C进行比较是该横向切割算法的基础。简言之,每次在该数据库中的特定位置发现邻居的新匹配时,其校验在该数据库位置之前是否还有其它邻居的匹配。特殊的数据结构通过高效的方式记录该数据库中所有邻居的位置。然后,其验证这些接续匹配(就像它们在数据库中所出现的那样)的联接是否可以最终得到该完整查询的近似匹配。如果该误差之和等于或大于该阈值C,那么这些邻居仍然还是作为该查询的近似匹配的部分的相关候选。如果该误差之和低于阈值C,那么就可以丢弃所包括的所有邻居。
如图2中所示,附图标记为34的该查询“abacababc”被分成三个子串(p=3)。再调用只允许3个误差(k=3)。定义ki=[kp]=1]]>以及C=Σi=1pki+p-k=3.]]>对于每一子串,分别产生一组邻居,即在数据库中准确找到的附图标记38-41、42-45以及46-49。在邻居的查找过程中,保持迄今所发现的所有邻居的位置,并且判决这些接续邻居的联接是否可以是该查询的近似匹配的一部分。邻居“aba”和“cab”(参见图2中的附图标记30)的两个匹配表示该查询串的前两个子串的无误差匹配(即e=0并且Σi=12(ki+1)-e=4≥C=3).]]>已经知道的是,已经找到了该查询的有效近似匹配,在最差的情况下表示3个误差的邻居可以接续在这两个匹配之后,为此仍然满足我们的筛选条件。邻居“abc”和“caa”(参见图2中的附图标记31)的两个匹配表示2个误差(即e=2并且Σi=12(ki+1)-e=2).]]>该序列后面只可能紧随一个最多表示1个误差的邻居,以仍然成为该查询的有效近似匹配。邻居“acb”和“cbc”(参见图2中的附图标记32)的匹配表示已经有4个误差(即e=4并且Σi=12(ki+1)-e=0]]>)。已经知道该序列不可能是该查询的近似匹配的一部分。即使其后紧随无误差的邻居,也不满足该筛选条件。
为了分别更详细和一般性的讨论所述Q-gram和所述邻居产生,下面的部分应该能够使得本领域的熟练技术人员能够实现本发明。
Q-gram和q-gram标引法使用q-gram,有可能非常快速地找到不大于q的所有串的出现位置。通过下面的方式构建这些q-gram。
考虑整数0至σ-1中∑中符号的双射函数φ。函数φ使用递归定义φ(Pa)=σφ(P)+φ(a)自然地延伸至串,其中P是∑上的串,并且a是∑中的符号。对于b∈
,假设Bucket(b)={iφ(aiai+1…ai+q-1)=b}。也就是Bucket(b)给出其φ码为b的唯一q符号串的A中每一出现位置的最左边字母的标引。
通过下面的方式产生该标引。首先,计算每一标引i的φi=φ(aiai+1…ai+m-1)。这是使用观察φi=aiσm-1+[φi+1/σ]在A的0(n)扫描中完成的。使用0(nlog(n))快速排序,该列表现在可以产生Indices=<i1,i2,…,in>,使得φij≤φij+1。最后,在Indices的0(n)扫描中产生Header[b]=min{jφIndices[j]=b}。该阵列Indices和Header就能够实现该Bucket组。也就是,Bucket[b]={Indices[j]j∈[Header[b],Header[b+1]-1]}。
如果查询P的长度m≤q,那么P的出现位置的标引都准确的是Bucket(b),其中b∈[φ(P)σq-m,(φ(P)+1)σq-m-1]的内容。
如果查询P大于q,已知P的出现位置都必须是Bucket(φ(Pq))中的子集,其中Pq表示由P的第一个q符号组成的串。
邻居产生串P的一个(完整的)k邻居被定义为与P的(编辑)距离小于或等于k的所有串的集合,即Nk(P)={Q(Q,P)≤k}。
串P的密集k邻居被定义为P的完整邻居中,在该邻居中不具有前缀的所有串的集合,即Ck(P)={QQ∈Nk(P),并且在Nk(P)中没有Q的前缀}。
Myers算法通过从字母表产生字,并计算当前所产生的字和P的动态编程矩阵的对应行,高效地计算串的密集k邻居。如果一个字当前行的最后一项等于k,那么就已经找到该密集k邻居中的字。如果所有项都大于k,那么就可以回溯该算法。故障链接的使用防止该算法出现丢失那些在k邻居中但是不在密集邻居中的那些字。
由于本发明需要串的完整k邻居来找到该数据库中这些划分的所有精确匹配,所以必须采用Myers算法。
图3通过实际详细范例的方式所示为划分该查询串并接着进行查找。
再次在附图标记为80的该数据库中查找附图标记为34的该查询串。根据本发明,所述查询串被划分成多个输入查询串,为了简明在这里选择的数目为3,其可以是大于1的任何其它数目。在该范例中,对于开始部分、中间部分以及“结束部分”的部分,分别通过附图标记35、36和37表示所述输入查询串。
通过所述数目的输入查询串,为每一个输入查询串定义多个相邻串,这里定义四个。即,对于附图标记为35的输入查询串,确定相应的四个相邻串,其附图标记为38、39、40和41。
相应地,对于附图标记为36的该“中间部分”输入查询串,确定相应的四个相邻串,其附图标记为42、43、44和45。
相应地,对于附图标记为37的该“结束部分”输入查询串,确定相应的四个相邻串,其附图标记为46、47、48和49。
至于点线的右侧,其表明在该附图的该部分中,附图标记为80的该数据库——其在前面也通过相同的附图标记表示——被查找附图标记为38-49的所述相邻串,查找其每一个,以找到(多个)精确(子串)匹配。
这些通过更靠右边的箭头表示;作为范例,附图标记为38的第一部分相邻串给出了附图标记为50的第一个精确匹配;作为另一范例,附图标记为47的结束部分相邻串给出了附图标记为58和61的匹配,并且附图标记为45的中间部分相邻串给出了附图标记为72的“无用”结果。
并且为了得到或多或少与附图标记为34的该查询串匹配的最终查找结果,箭头可以进一步向右,即附图标记30-33分别表示该四个最终查找结果的每一个。如图可以看到,所述最终查找结果中的每一个通常包括附图标记为50-53其中一个所查找的开始子串、附图标记为54-57其中一个所查找的中间子串、以及附图标记为58-61其中一个所查找的“结束部分”子串。下面通过图5解释如何以及通过什么标准将它们连续起来。
图4所示为通过一般范例方式划分并查找该查询串。图4对应于图3,然而通常“…”表示任何附图标记的任何子串可以包括更多和更少的字母,即本发明也可以应用于非常短的子串以及非常长序列的字母。
如图所示的西文字母表的字母可替换地可以是音调表中的元素序列、音乐音程表中的元素序列、音乐时间间隔表中的元素序列、二进制数字序列、字或字节、氨基酸序列或DNA/RNA序列。相应地,这样同样可以应用于所查找的数据库,因为其也可以作为一个长串或许多长串理解。
音乐音程表中的所述元素序列和音乐时间间隔表中的元素序列表示乐谱的特性。通常对于所有的串(查询串、数据库中的串等),这样意味着它们可以不仅仅是离散符号的任何表。
图5所示为查找最终数目的结果串的方法。该方法查找最终数目的结果串,(在前面的附图中)其通过附图标记30-33表示。即,如果有可能,每一个所述最终数目的结果串在该数据库中具有与附图标记为34的该查询串部分或精确的匹配。附图标记为80的该数据库包括长串。所述方法包括下列步骤在步骤100中,该查询串被分成第一数目的输入查询串。如在前面的附图中所表示,所述查询串被分成附图标记为35、36和37的三个输入查询串,即这里第一数目为3。所述第一数目可以是大于或等于1的任何数字。所示正好等于3的该第一数目只是说明性的,即也可以选择任何更大或更小的数字。
换言之,在该步骤中,该查询串被分成(所述第一数目的)小片段的子串,即分成所述输入查询串。
在该范例中,附图标记为34的该查询串“aba…cab…abc”被分成第一数目的输入查询串的所述集合,在该范例的集合中有三个,即附图标记为35的输入查询串1=“aba…”,附图标记为36的输入查询串2=“cab…”,附图标记为37的输入查询串3=“abc…”。
在步骤200中,确定第二数目的相邻串。也如前面的附图所示,所述第二数目的相邻串为4,即附图标记38-41,用于附图标记为35的第一输入查询串;附图标记42-45,用于附图标记为36的第二或中间的输入查询串;附图标记46-49,用于附图标记为37的第三或最后的输入查询串。
所示正好等于4的该第二数目只是说明性的,即也可以选择大于或小于4的任何数字。特别地,相邻串的数目取决于该查询串的长度、所应用的串表中不同离散符号的大小以及在该相邻串中所允许的误差的数目。
这样所给出总数为12个相邻串的范例,即其等于所述第一数目乘以所述第二数目,即3×4=12,即每一(3个)输入查询串有四个;或者一般地,对于所述第一数目的输入查询串中的每一串,确定所述第二数目的相邻串。如在前面的附图中所示,它们是附图标记38至49。它们中的每一个单独地具有预定第一数目的误差,其大于或等于零。
注意到,如果(第一)数目的误差超过了相邻串的长度(即该串的所有内容都被确定为误差),相应地下一步骤中的随后查找将绝对是没有意义的;因此所述第一数目的误差不能够超过该串长度。
作为所给出的范例,根据该输入查询串“aba…”,即附图标记35的串,确定四个相邻串,即等于其自身的附图标记为38的串“aba…”,即当然没有误差;附图标记为39的串“abc…”,具有一个误差;附图标记为40的串“abb…”,具有另一个误差;附图标记为41的串“acb…”,具有两个误差。
在所给出的范例中,在这里该预定的第一数目的误差(其大于或等于零)等于0、1或2。
在等于0、1或2的该范例中,所示的该第一数目的预定误差只是示范性的,即也可以选择任何更大的数目。
在步骤300中,查找该数据库,以找到所述第二数目的相邻串中每一串的第三数目的精确匹配。所述查找基于所给定的查找方法。
通过附图标记50-61和70-74说明所述第三数目的精确匹配。重要的是要注意到,可能有一个或多个匹配,即首先,作为相邻串范例的附图标记为38的“aba…”得到附图标记为50和52的精确匹配,即“aba…”;
其次,作为另一相邻串范例的附图标记为39的“abc…”也得到附图标记为51的其精确匹配,即“abc…”;第三,附图标记为40的“abb…”也产生无匹配,即附图标记为70的“abd…”,和最后,附图标记为41的“acb…”也产生无匹配,即附图标记为71的“abc…”。
后两个那么就没有用了,因为只考虑精确匹配。
相应地,附图标记53-61和72-74是来自通过附图标记42-49表示的相邻串的查找结果。
在所有的情况下,附图标记为50-61和70-74的该查找结果,其在该数据库中具有相应的串内容和相应的位置,将其保留以在后面随后的步骤中使用。
而且,在所有的情况下,该给的查找方法可以是q-gram标引方法或本领域中熟知有用的任何其它适当的方法,例如后继树法、或散列法。
在步骤400中,将所述从该数据库中查找到的精确匹配串联接成第四数目的中间串。所述查找到的精确匹配串(当其包括在所述每一中间串中时)在所述数据库中彼此相接续。
所述第四数目的中间串通过附图标记29-33表示,该范例中所给出的第四数目为5。而且,所述查找到的精确匹配串通过附图标记50-61和70-74表示,其包括在每一所述中间串中,确定其在该数据库中彼此相互接续将在下面对其进行解释。
如从该范例中可以看到,在联接期间,来自附图标记为35的第一输入查询串(其是该查询串的开始)的该查找结果=“aba…”,其具有附图标记为38-41的对应的起始相邻串,可以得到附图标记为50-53的对应的起始子串。
相应地,在联接期间,来自附图标记为36的第二输入查询串(其是该查询串的中部)的该查找结果=“cab…”,其具有附图标记为42-45的对应的“中部”相邻串,可以得到附图标记为54-57的对应的中部子串。
相应地,在联接期间,来自附图标记为37的第三输入查询串(其是该查询串的结束部分)的该查找结果=“abc…”,其具有附图标记为46-49的对应的“结束部分”相邻串,其可以得到附图标记为58-61的对应的“结束部分”子串。
换言之,附图标记为50-61和70-74的该精确匹配串作为每一所述中间串的对应部分,其实际上在该数据库中彼此相互接续,即附图标记为50-53的其中一个起始子串、附图标记为54-57的其中一个中部子串以及附图标记为78-61的其中一个结束部分子串被联接成为一个所述第四数目的中间串,即附图标记29-33其中之一。
在步骤500中,确定最终数目的结果串。该确定是基于来自前面步骤的所述第四数目的中间串,并且这里在该步骤中,确定该最终数目的结果串中的每一串,以相比于附图标记为34的所述查询串具有最大的预定的第二数目的误差。
在所给定的该范例中,附图标记为30-33的结果串的最终数目等于4,而所述第四数目的中间串为5。即,在该范例中,丢弃或不考虑附图标记为29的那一个,因为其特别不满足具有的误差少于或等于所述第二数目的误差的标准。当相比于附图标记为34的所述查询串时可以看到这一点。
换言之,附图标记29被丢弃,因为其具有太多的误差(相比于附图标记为34的初始查询串),而附图标记30至33每一个都具有较少的误差,并从而满足该标准。也就是,在该范例中,附图标记30至33包括最终数目的结果串。
作为该方法的结果,附图标记为30-33的所述最终数目的结果串每一个都是附图标记为34的所述查询串的精确匹配或部分匹配。
在所给定的范例中,当查找所述查询串时,那么四个匹配(精确的或部分的)就是该结果。
结合前面的步骤,该步骤也称之为“横向切割”,即该方法是只考虑那些精确匹配的邻居(当进行查找时),当进行联接时,其可以包含具有与附图标记为34的原始查询串的邻近匹配。
在本发明的精神中,任何所述“第一数目”、“第二数目的相邻串”、“第三数目”、“第四数目的中间串”以及“第一和第二数目的误差”都可以单独地、或相对于另一个、或相对于该查询串和/或该数据库的内容精细调节。从而任何查找速度都可以降低,和/或可以得到另一个匹配误差(更少/更小)。
相应地,所给定的该范例是说明性的,并且也可以对该查询串的另一个串长度、相邻串、中间串、该串的另一个顺序内容(离散符号)等进行扩展。
图6所示为用于查找的设备。附图标记660表示所述设备。根据本发明,该设备如前面的附图中所讨论的那样处理附图标记为34的该查询串。该设备处理作为输入的所述串,并因此包括计算装置661,例如是足够快的微处理器。该微处理器查找附图标记为80的该数据库中的匹配。结果,如果有的话,就会发现附图标记为30、31、32和33的该最终数目的结果串。用于执行该匹配方法的步骤的计算装置例如也可以是专用ASIC的一部分。
附图标记662表示计算机程序产品。所述计算程序产品包括存储在计算机可读媒体上的程序代码装置,当该计算机程序在计算机上运行时其用于执行所述方法。
一般地,本发明可以应用于各种领域,诸如用于音乐系统的曲调检索(“通过哼唱查询”)、在搜索引擎中或在文本文件中查找关键字、在分子生物数据库中查找DNA/RNA序列、比特、字节或字编码、误差控制等。对于曲调检索应用,可以假想只记住了少量片段的曲调,而没有回忆出该完整的曲调或歌曲。一旦以适当的表示作为离散符号的串提供时,该曲调段然后可以被输入到该查找方法,以使用所述数据库显示该歌曲或曲调的标识。该查找方法从而能够允许输入中的误差。该设备例如可以是自动唱片点唱机,其作为独立的音频设备或在PC上实施。其也可以是便携音频设备,其包含的界面例如能够让慢跑的人通过吹出开始段落或反复部分的口哨快速地改变他所携带的音乐。该设备例如也可以是互联网服务器上用于从网站上快速选择特定MP3的业务,或者该设备可以是运行该方法用于检索例如铃声的便携电话。
类似地,用于查找引擎的作为查询的关键字(类似于前面所提到的查询串),例如用于查找互联网上的特定产品,或软件字典中的字,或者软件查找工具可以包含打字稿。该查找或检索过程可以累计关键字中的这些误差。在所有的应用中,一个所允许的误差数目可以是预先定义的或固定的。该数据库最好可以看作一个非常长的串(例如长文本、世界上放入序列中的所有曲调、等)。而且,该串可以从有限的集合(例如西文字母表0或音调表、二进制数字、字节、字、氨基酸、DNA/RNA、字等)中构建。对于文本应用,可以使用来自西文字母表的26个字母。相应地,可以从9元素音程表构建曲调。分子生物应用使用22个氨基酸或四个核苷酸作为字母表。编码应用使用二进制符号、字、比特或字节。
根据乐谱的特性,应该理解为足以用于检索曲调的任何信息。例如是曲调间隔,或者在人们并不是非常懂音乐的情况下,或者其想要通过轻拍他的脚步查找一段音乐的情况下只是时间间隔。它们通过预定的映射函数被转换成为串行字符。
计算机可读媒体可以是磁带、光盘、数字通用盘(DVD)、压缩盘(可读CD或可写CD)、微型盘、硬盘、软盘、智能卡、PCMCIA卡等。
在权利要求书中,位于圆括号之间的任何附图标记不应该理解为对权利要求书的限制。词语“包括”并不排除存在除了权利要求中所列出的那些之外的其它元素或步骤。元素前面的词语“一个”并不排除存在多个这种元素。
可以通过包括多个离散元素的硬件,以及通过适当编程的计算机实施本发明。在枚列多个器件的装置权利要求中,可以通过一个以及该相同的硬件项实施多个这些器件。某些措施在相互不同的独立权利要求中叙述这样的事实并不表示组合这些措施不能有利地使用。
Myers,E.(1994).A sublinear algorithm for approximate keywordsearching.Algorithmica,12(4/5),345-374.
权利要求
1.一种查找最终数目的结果串(30-33)的方法,该结果串在包括多个长串或一个长串的数据库(80)中具有与查询串(34)的部分或精确匹配,所述方法包括步骤将该查询串划分(100)成第一数目的输入查询串(35,36,37);确定(200)所述第一数目的输入查询串中每一串的第二数目的相邻串(分别为38-41,42-45,44-49),其中所述第二数目的相邻串中的每一串具有预定的第一数目的误差;基于查找方法查找(300)数据库,为所述第二数目的相邻串中的每一串查找第三数目的精确匹配(50-61,70-74);将从该数据库所查找的所述精确匹配的串联接(400)成第四数目的中间串(29,30,32,33,34),其中在每一所述中间串中包含的所述查找的精确匹配的串(50-61,70-74)在所述数据库中是彼此相互接续的;并且根据所述第四数目的中间串确定(500)最终数目的结果串(30-33),其中最终数目的结果串中的每一串相比于所述查询串(34)具有最大预定的第二数目的误差。
2.根据权利要求1的方法,其特征在于所述查找方法是q-gram标引法。
3.根据权利要求1的方法,其特征在于所述查找方法是后继树法。
4.根据权利要求1的方法,其特征在于所述查找方法是散列法。
5.根据权利要求1至4的任一项的方法,其特征在于所述串和所述数据库分别都包括西文字母表的字母序列。
6.根据权利要求1至4的任一项的方法,其特征在于所述串和所述数据库分别表示乐谱的特性。
7.根据权利要求1至4的任一项的方法,其特征在于所述串和所述数据库分别都包括二进制数字序列。
8.根据权利要求1至4的任一项的方法,其特征在于所述串和所述数据库分别都包括氨基酸序列或DNA/RNA基序列。
9.根据权利要求1至4的任一项的方法,其特征在于所述串和所述数据库分别都包括比特、字节或字的序列。
10.一种包括用于执行根据权利要求1至9的方法步骤的计算装置(661)的查找引擎。
11.一种工具,包括用于执行根据权利要求1至9的方法步骤的装置。
12.一种设备(660),包括计算装置(661),用于将该查询串划分成第一数目的输入查询串(35,36,37);计算装置(661),用于确定所述第一数目的输入查询串中每一串的第二数目的相邻串(分别为38-41,42-45,44-49),其中所述第二数目的相邻串中的每一串具有预定的第一数目的误差;计算装置(661),用于基于查找方法查找数据库,为所述第二数目的相邻串中的每一串查找第三数目的精确匹配(50-61,70-74);计算装置(661),用于将从该数据库所查找的所述精确匹配的串联接成第四数目的中间串(29,30,32,33,34),其中在所述中间串的每一串中包含的所述查找的精确匹配的串(50-61,70-74)在所述数据库中是彼此相互接续的;并且计算装置(661),用于根据所述第四数目的中间串确定最终数目的结果串(30-33),其中最终数目的结果串中的每一串相比于所述查询串(34)具有最大预定的第二数目的误差。
13.一种计算机系统,用于执行根据权利要求1至9的任一项的方法。
14.一种计算机程序产品(662),包括存储在计算机可读媒体上的程序代码装置,当该计算机程序在计算机上运行时,其用于执行权利要求1至9的任一项的方法。
全文摘要
本发明涉及一种查找最终数目的结果串(30-33)的方法,其在包括多个长串或一个长串的数据库(80)中具有与查询串(34)的部分或精确匹配,所述方法包括步骤将该查询串划分成第一数目的输入查询串(35,36,37);确定所述第一数目的输入查询串中每一串的第二数目的相邻串(分别为38-41,42-45,44-49),其中所述第二数目的相邻串中的每一串具有预定的第一数目的误差;基于查找方法查找该数据库,为所述第二数目的相邻串中的每一串查找第三数目的精确匹配(50-61,70-74);将从该数据库所查找的所述精确匹配的串联接成第四数目的中间串(29,30,32,33,34),其中在每一所述中间串中包含的所述查找的精确匹配的串(50-61,70-74)在所述数据库中是彼此相互接续的;并且根据所述第四数目的中间串确定最终数目的结果串(30-33),其中最终数目的结果串中的每一串相比于所述查询串(34)具有最大预定的第二数目的误差。这就使得能够得到完全匹配或包含关于所述查询串具有小误差的部分匹配,并且能够在较大的数据库中使用相对较低的处理能力进行快速查找。
文档编号G06F17/30GK1761958SQ200480005874
公开日2006年4月19日 申请日期2004年2月25日 优先权日2003年3月3日
发明者S·伊格纳, J·H·M·科斯特, M·范沃尤伦, S·C·波韦斯 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1