CN110892401A - 生成用于k个不匹配搜索的过滤器的系统和方法 - Google Patents
生成用于k个不匹配搜索的过滤器的系统和方法 Download PDFInfo
- Publication number
- CN110892401A CN110892401A CN201880032748.6A CN201880032748A CN110892401A CN 110892401 A CN110892401 A CN 110892401A CN 201880032748 A CN201880032748 A CN 201880032748A CN 110892401 A CN110892401 A CN 110892401A
- Authority
- CN
- China
- Prior art keywords
- filters
- filter
- combinations
- computer system
- combination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 64
- 230000008569 process Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 4
- 239000012634 fragment Substances 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 26
- 238000013507 mapping Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 108090000623 proteins and genes Proteins 0.000 description 10
- 102000004169 proteins and genes Human genes 0.000 description 9
- 230000001419 dependent effect Effects 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 8
- 238000001914 filtration Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 108010054050 Plectin Proteins 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 239000013260 porous coordination network Substances 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000002773 nucleotide Substances 0.000 description 2
- 125000003729 nucleotide group Chemical group 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- BTBUEUYNUDRHOZ-UHFFFAOYSA-N Borate Chemical compound [O-]B([O-])[O-] BTBUEUYNUDRHOZ-UHFFFAOYSA-N 0.000 description 1
- 241000289581 Macropus sp. Species 0.000 description 1
- 241000124008 Mammalia Species 0.000 description 1
- 241001028048 Nicola Species 0.000 description 1
- 241001632422 Radiola linoides Species 0.000 description 1
- 125000003275 alpha amino acid group Chemical group 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 235000013405 beer Nutrition 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Biotechnology (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Bioethics (AREA)
- Public Health (AREA)
- Epidemiology (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
Abstract
一种用于执行k个不匹配搜索的计算机系统,包括至少一个处理器,被配置为:接收搜索术语的大小;接收相似性阈值;并通过以下方式生成过滤器集合:根据相似性阈值,基于搜索术语大小的匹配位置和空位位置的组合的集合来形成过滤器集合,其中,组合中的每个包含过滤器集合中的至少一个过滤器。
Description
技术领域
本发明总体上涉及近似字符串匹配(k个不匹配),并且涉及生成过滤器集合以优化可用计算机资源。
背景技术
2017年3月19日提交的标题为“生成用于K个不匹配搜索的过滤器集合的系统和方法”的临时申请62473400的整体通过引用结合于本文中。
在大型数据库上搜索字符串是一项耗时的任务。直接搜索的“天真算法”可能需要几天、几周或更长时间。生物数据库(例如基因组数据库或蛋白质数据库)会收集大量的基因组序列或蛋白质,并对其进行注释和分析。其他大型数据库存储图片、音频记录、视频、3D结构等。
检测核苷酸和氨基酸序列的相似性有助于注释感兴趣的序列。例如,如果该序列是基因,则相似的序列可以揭示功能、调整、与其他分子的相互作用、蛋白质产物的三维结构或共同的进化起源中的相似性。
在给定的文本中查找近似匹配的模式字符串的出现的技术称为“k个不匹配问题”。该技术也称为“近似模式匹配”,“近似字符串匹配”或“模糊字符串搜索”。本领域中已知几种解决k个不匹配问题的算法。这些算法执行两个阶段的过程,其中在预处理一个或多个模式之后进行搜索。
兰道和维什金公开了一种解决K个不匹配问题的方法,也称为袋鼠方法,其预处理阶段的时间复杂度为O(n+m),而文本中图案(pattern,模式)的搜索时间复杂度为O(nk),G.M.Landau,U.Vishkin,"Efficient string matching in the presence of errors",Proc.26th IEEE FOCS,pp.126-136,1985。
费舍尔和帕特森在“"String matching and other products",Proceedings ofthe 7th SIAM-AMS Complexity of Computation,R.Karp,editor,pp.113-125,1974”中公开了一种用于解决k个不匹配问题的算法,其时间复杂度为O(min|Σ|,m)nlogm)。
亚伯拉罕森和科萨拉朱在“"Generalized string matching",SIAM journal onComputing,16(6):1039-1051,1987”中公开了一种使用O 运行时间来解决K个不匹配问题的方法。
阿米尔,列文施泰因和波拉特在“"Faster algorithms for string matchingwith k mismatches",Journal of Algorithms,Volume 50,Issue 2,pp 257-275,February 2004”中公开了另一种运行时间为O(的算法。兰道和维什金的方法和阿米尔,列文施泰因和波拉特的方法对于小k是线性的。
过滤方法可以加快近似字符串匹配过程的运行时间。过滤类型算法会丢弃文本的大部分内容,旨在保留包含潜在匹配的重要部分。一种常见的过滤方法是基于q-gram的。这些是长度为q的子字符串。序列的q-gram是长度为q的所有重叠子字符串。该领域中的大多数研究都集中在非升级(即通常)的q-gram过滤器。
可以通过考虑在所选阈值处的词语相似性的必要但不充分的条件来最佳地执行应用过滤方法。例如,成为哺乳动物是被识别为人类的必要条件,但这不是充分条件。
应用过滤方法提供了对天真算法的改进。以下两个示例是对用于搜索给定文本中的所有词语的天真算法的改进,这些词语与仅包含一个不匹配(即k=1)的20个字母的给定词语W相似。
在第一个示例中,施加了一个必要的(但不是充分的)相似性条件,如下所示:当将词语W分为两部分:W1(位置1-10)和W2(位置11-20)时,可能在W1(W2匹配)或W2(W1匹配)中存在不匹配。在这种情况下,相似性的必要条件是与W1或W2完全匹配。对于具有一个不匹配阈值的搜索,可以在文本中找到与W1完全匹配或与W2完全匹配的词语,然后针对与W1的每个完全匹配,将该完全匹配的后十个字符与W2比较。类似地,对于与W2完全匹配,会将前面的10个字符与W1比较(允许一个不匹配)。通过预处理文本,可以在O(1)的时间复杂度下完成W1和W2的精确搜索。这将映射所有十个字符的词语,需要存储复杂度大小为O(n)的内存,其中n为文本的大小。文本中出现W1和W2的概率为(1/d)10,其中d是字母的大小。搜索时间为(n/d)10×p,其中p是具有两个不匹配的随机比较的预期数量。
第二个示例具有较低的运行时间,但是在预处理阶段需要更大的内存(即随机存取存储器(“RAM”))。在所有可能的位置都用一个“通配符”映射所有19个字母的词语之后。该映射图的大小约为19×n,通过使用一个通配符从所有19个字母的词语W中进行提取来找到解决方案的速度为O(1)。这种方法的缺点是它不适用于较低的相似性阈值。例如,对于8个不匹配的阈值和20个字母的词语,包含这么多通配符的可能词语的数量非常高(208)。这需要大量的内存资源来存储预处理文本(大于105×n)。对于较大的n值,这是不可行的。
美国专利7,756,847公开了一种用于搜索多个输出字符串的迭代方法,每个输出字符串与由许多长字符串或一长字符串组成的数据库中的查询字符串具有部分或完全匹配。
美国专利7,444,326公开了通过将数据库中的每个字符串分解为重叠的“位置q-gram”,预定长度q的序列,并包含有关字符串中每个q-gram的“位置”的信息(即第一个q-gram,第四个q-gram等)进行近似子串索引。
美国专利7,584,173公开了一种确定文本列表中的哪个字符串(如果有的话)用于搜索字符串的过程,该字符串具有距搜索字符串的编辑距离小于阈值的编辑距离。该过程在网格上使用动态编程,其中的搜索字符串字符对应于行,文本字符对应于列。
q-gram过滤器的一般化方法是使用留空q-gram(也称为“空位q-grams”),固定的非连续形状的字符子集。以下参考资料介绍了如何应用此方法。
在“Califano A.,Rigoutsos 1.,FLASH:"A fast look-up algorithm forstring homology",in:Proc.1st International Conference on Intelligent Systemsfor Molecular Biology(ISMB),pp.56-64(1993)”中公开了随机选择的形状。在“Pevzner,P.A.,Waterman,M.S.,"Multiple Filtration and Approximate Pattern Matching",Algorithmica,13(1/2),135-154(1995)”以及“Lehtinen,O.,Sutinen,E.,Tarhio,J.,"Experiments on Block Indexing",Proceedings of the 3rd South American Workshopon String Processing(WSP'96),Carleton University Press(1996)”中公开了常规形状的使用。
考虑了留空q-gram相对于非留空的优势,并在以下方面公开了它们在有损过滤中的应用:“Ma,B.,Tromp,J.,Li,M.:PatternHunter:"Faster and More SensitiveHomology Search",Bioinformatics,18,440-445(2002)”以及“Buhler,J.,Keich,U.,Sun,Y.:"Designing Seeds for Similarity Search in Genomic DNA",Proceedings of the7th Annual International Conference on Computational Molecular Biology(RECOMB-03)(April 2003)”。
针对少量错误的情况,提出了一些用于语法发展的方法:“Farach-Colton M.,Landau G.,Sahinalp S.,Tsur D.,"Optimal spaced seeds for faster approximatestring matching",J.Comput.System Sci.73(7)1035-1044(2007);Francois Nicolas,Eric Rivals,"Hardness of optimal spaced seed design",J.Comput.System Sci.74(5)831-849(2008);Egidi L.,Manzini G.:"Better spaced seeds using quadraticresidues",Journal of Computer and System Sciences 79(7),pp.1144-1155(2013)”。
发明内容
所公开的技术的目的在于提供一种新颖的方法,该方法基于形状的组合特性,考虑到计算机资源的可用量,为给定的搜索任务生成最佳的过滤器集合。
因此,根据所公开的技术,提供了一种用于执行k个不匹配搜索的计算机系统,其包括至少一个处理器,被配置为:接收搜索术语(term,词)的大小;接收相似性阈值;并通过以下步骤生成过滤器集合:根据相似性阈值,基于针对搜索术语的大小的匹配和空位的位置的组合的集合来形成过滤器集合,其中,组合中的每个包含来自过滤器集合的至少一个过滤器。
在一些实施方式中,处理器还被配置为通过以下方式来创建最小的过滤器集合:对于过滤器集合中的每个过滤器,当存在仅包含过滤器集合中的过滤器的组合的集合中的至少一个组合时,确定该过滤器为可保留过滤器,并且当该过滤器不是可保留过滤器时,从过滤器集合中删除该过滤器。
在一些实施方式中,组合的集合中的每个组合在相应组合的第一位置处包括匹配。
在一些实施方式中,组合的集合中的每个组合在相应组合的最后位置处包括匹配。
在一些实施方式中,处理器被配置为通过以下方式形成过滤器集合:初始化过滤器集合;以及对于组合的集合的每个选择的组合:在选择的组合中搜索过滤器集合中的过滤器的出现;当在选择的组合中未发现过滤器集合中的过滤器的出现时,从选择的组合导出新过滤器;以及将新过滤器添加到过滤器集合。
在一些实施方式中,新过滤器是选择的组合的一部分。
在一些实施方式中,利用随机化过程来确定任何一个新过滤器以及新过滤器的多个匹配项。
在一些实施方式中,匹配的数量是预定数量。
在一些实施方式中,处理器被配置为从选择的组合中导出多个新过滤器,并且为多个新过滤器中的每一个分配分数并且当新过滤器的分数高于多个新过滤器的任何其他新过滤器的分数时,将该新过滤器添加到过滤器集合。
在一些实施方式中,处理器还被配置为根据从由以下各项组成的组中选择的参数,向该过滤器集合中的每个过滤器分配分数:分别应用过滤器,搜索术语与文本之间的期望比较次数;在组合的集合中过滤器的出现频率;过滤器中的匹配数;以及过滤器的范围。
在一些实施方式中,处理器还被配置为:通过以下方式来创建第二过滤器集合:从该过滤器集合中选择过滤器;用至少一个不同的过滤器替换选择的过滤器;根据从所选的过滤器的分数的最高分数到所选过滤器的分数的最低分数排序的顺序进行选择和替换,其中,每个组合包含来自第二过滤器集合的至少一个过滤器;以及根据合理分数,在过滤器集合中选择第二过滤器集合。
在一些实施方式中,合理分数是使用选自以下组成的组中的参数来计算的:根据过滤器集合中所有过滤器的预期比较次数之和确定的预期搜索计算速度;进行过滤器集合的搜索所需的内存的量。
在一些实施方式中,处理器还被配置为生成过滤器集合中的多个过滤器,其中:搜索术语中的每个位置对应于过滤器集合中的多个过滤器中的至少一个,其中,组合中的每个在相应的一个组合中的一个位置处包含过滤器集合中的多个过滤器中的至少一个过滤器中的至少一个过滤器,搜索术语的位置对应于相应的一个组合中的位置,即,处理器创建多个过滤器集合。搜索术语中的每个位置对应于至少一个过滤器集合。每个组合都包含多个过滤器集合之一中的至少一个过滤器。组合中找到过滤器的位置对应于搜索术语中的位置,该位置对应于包含该过滤器的过滤器集合(即组合中的过滤器)。
在一些实施方式中,处理器被配置为通过以下方式形成过滤器集合的多个过滤器中的每一个:将组合的集合指定为组合的当前集合;并基于组合的当前集合将过滤器集合指定为当前过滤器集合;对于每个位置,获得搜索术语中的位置序列;根据序列,产生与位置相关的过滤器集合;当组合包含与该位置相关联的已生成过滤器集合中的过滤器,并且该过滤器存在于该位置的组合中时,从组合的当前集合中更新组合;当过滤器相对于组合的当前集合不可保留时,从当前过滤器集合中删除过滤器,其中,当组合的当前集合中存在仅包含过滤器的至少一个组合时,过滤器相对于组合的当前集合可保留。
在一些实施方式中,处理器被配置为通过以下方式形成与位置相关联的过滤器集合:获得组合的集合,当前过滤器集合和位置;对于当前过滤器集合中的每个过滤器:当在位置的组合的集合中的至少一个组合中找到过滤器时,向与该位置相关联的过滤器集合添加过滤器,并且从组合的集合中删除该组合。
在一些实施方式中,处理器还被配置为:接收有损阈值,根据关于搜索术语的有损阈值和相似性阈值来创建组合的子集,其中,生成过滤器集合包括生成关于组合的子集的过滤器。
在一些实施方式中,搜索术语的大小对应于搜索术语的多个可能的大小,并且其中,相似性阈值对应于多个相似性阈值,每个相似性阈值对应于搜索术语的多个可能大小中的一个。
在一些实施方式中,至少一个硬件处理器还被配置为形成多组过滤器集合,其中,多组过滤器集合中的每一组对应于搜索术语中的多个位置序列的不同序列。
在一些实施方式中,至少一个硬件处理器还被配置为根据将选择的一组过滤器集合应用于执行k个不匹配搜索时执行的期望比较次数从多组过滤器集合中选择一组过滤器集合,其中,期望的比较次数是用于搜索的给定文本和给定词语的函数。
在一些实施方式中,至少一个硬件处理器还被配置为应用所述k个不匹配搜索的执行以对文本的多个词语进行聚类。
在一些实施方式中,至少一个硬件处理器还被配置为应用聚类以加速k个不匹配搜索的文本索引步骤。
附图说明
通过以下结合附图的详细描述,将更充分地理解和了解所公开的技术,附图中:
图1是说明产生过滤器集合的方法的步骤的流程图;
图2是说明用于填充过滤器集合的另一种方法的步骤的流程图;
图3是该过滤器集合的使用示意图;
图4是通过本发明的实施方式获得的最小过滤器集合的示例的图示,它们相对于天真算法的优势;
图5A是说明k个不匹配搜索系统从多个生成的过滤器集合中创建和选择过滤器集合的方法的步骤的流程图;
图5B是说明k个不匹配搜索系统从多个生成的过滤器集合中创建和选择过滤器集合的方法的步骤的流程图;
图6是说明k个不匹配搜索系统生成与位置有关的过滤器集合的步骤的流程图;
图7A至图7C示出与位置相关的过滤器集合的生成;以及
图8A和图8B均示出了用于执行根据所公开的技术的实施方式构造和操作的、本文所公开的任何步骤的计算机系统。
具体实施方式
本发明提供了一种在考虑到可用于任务的可用计算机内存(即随机存取内存(“RAM”))的情况下针对给定的搜索任务生成最佳过滤器集合的方法。
本发明可以应用于蛋白质连接网络(“PCN”)的全部或部分计算。PCN是可以用于解决计算生物学的不同问题的图表,主要用于辅助预测蛋白质结构和功能。PCN由节点组成,这些节点是蛋白质序列的小片段,节点之间的边反映了片段之间的高度相似性。
对于足够大的蛋白质数据库,对PCN进行全部或部分计算是至关重要的过程,需要大量的计算资源。因此,通过有效的算法来改进过程非常重要。查找此类图的所有边是k个不匹配搜索问题的一个示例。
“k个不匹配问题”的任务对于支持在大型数据库上进行词语搜索的许多系统而言意义重大。除了生物信息学(即,DNA和蛋白质子序列的搜索)之外,通过将诸如图片、声音、视频和3D结构之类的信息表示为从对应字母构建的线性文本,本发明可以应用于文档或因特网搜索。
本发明的实施方式可以应用于包括不同类型的大规模数据库的系统。例如,数据库可以分布在多个服务器上,或者可以对数据库进行大规模分区。由于存储的信息量呈指数增长,因此开发一种在大型数据库上快速搜索的有效算法变得越来越重要。
术语“文本”在下文中是指数字文本,其是书面文本的电子版本。文本可以通过电子媒体批量提供,也可以通过网络上的在线流进行远程访问。
术语“相似性”在下文中是指所搜索的文本或数据流中的搜索术语与指定的不匹配阈值的匹配。
术语“锤击距离”在下文中是指字符串或子字符串与图案之间的距离。
近似字符串匹配是一种通过搜索文本中位于该位置的子字符串与图案之间的距离小于或等于边界k的所有位置来查找与图案近似匹配的字符串的技术。
术语“字符串”在本文中是指任何字母序列。位序列可以是另一位序列的一部分,例如,术语字符串还包括字符串的任何子字符串。
术语“形状”在下文中是指过滤器的形式。该形状包括匹配位置,并具有大小和跨度。大小是匹配的量或数量,而跨度是形状的长度,包括匹配的位置和它们之间的空位(如果有)。例如,形状为{0,1,3,6},##-#--#。其大小为4,其形状为7。空位表示可能不会出现匹配的位置。没有空位的形状中的匹配顺序也称为种子,空位也称为间隔。
术语“留空q-gram过滤器”在下文中是指具有限定形状的过滤器,其大小为q,即匹配的量或数量为q。留空过滤器也称为留空种子。
术语“过滤器”在下文中可以指代留空q-gram过滤器。
术语“索引”在下文中是指在给定文本中搜索每个术语的所有相似术语。
术语“最小过滤器集合”在下文中是指这样的过滤器集合,它们是给定相似性阈值的必要条件,并且可以供搜索术语使用。换句话说,没有可以从该集合中删除的任何过滤器。
术语“词语相似性图”在下文中是指这样的图,其中,节点是文本中具有选择大小的词语的重复性(重叠),并且边反映了所连接词语之间的相似性大于或等于所定义的相似性阈值。
术语“组合”在本文中是指对于给定大小的搜索术语,满足相似阈值的条件的匹配和空位位置的可能组合,并表示为序列“0”和“1”,其中对于给定序列的位置,“0”表示不匹配,“1”表示在相应位置的匹配。
通常,术语“已用尽”表示迭代过程已经用完了输入而继续,无论该输入是过滤器集合还是组合的集合。例如,术语“所有组合的集合已用尽”在此之后是指所有组合的集合为空或完全标记为已查验的情况。
术语“组合的片段”在下文中是指从组合的某个位置开始的一系列匹配和不匹配。被认为是组合中的片段的过滤器将从匹配的位置开始,且一直持续到找到预定的匹配数(即,在片段的末尾应该有一个匹配)。例如,对于组合10011010100111,具有4个匹配的过滤器为:1001101、110101、10101001、1010011和100111。可选地,可能不定义匹配的数量,或将其作为用户输入接收。在这种情况下,可以从预定间隔中随机选择匹配数。
较大的文本(例如,大于1G)可能会对RAM具有一些限制。本发明的实施方式可以在不同的计算环境中实现,例如分布在一台或多台计算机上,共同具有相当大的内存资源(例如,比要搜索的文本大10-100倍),或分布在计算机(节点)网络上,每个节点的内存资源都非常有限(例如,小于或相当于搜索的文本的大小)。
在一系列条件下:仅举几例,例如搜索文本内容、字母、允许的不匹配数和词语大小,所公开的技术相对于现有技术在内存使用率和搜索时间方面提供了改进。
本发明的示例性实施方式提供了一种计算机系统,用于生成过滤器集合以用于对文本执行一个或多个k个不匹配搜索。该计算机系统包括至少一个硬件处理器。该计算机系统可以是以下任何一种:多个硬件处理器的分布式网络;多个硬件处理器的本地网络;或独立计算机。该计算机系统接收以下参数:搜索术语的大小、相似性阈值和过滤器的匹配数。过滤器中的匹配数可以自动定义的,例如基于要搜索的文本的大小和可用RAM的容量。
该计算机系统基于针对搜索术语的大小的匹配和空位的位置的可能组合的完整集合,并根据相似性阈值,生成过滤器集合。例如,对于长度为5的搜索,除了完美匹配(例如,零个不匹配)外,还具有4个匹配的相似性阈值(例如,五个位中的至少四个必须匹配,因此最多1个位可能不匹配),因此有5种可能的组合,因为不匹配可能出现在搜索术语的位置1到5的任何位置。这样生成的过滤器集合可以随后被减少以提高内存使用率和计算效率。
更正式地,计算机系统可以重复以下步骤以减小过滤器集合的大小以实现最小集合,即产生最小过滤器集合:a)从过滤器集合中选择过滤器,以及b)如果该过滤器是该过滤器集合中唯一包含在该组合的集合中的至少一个组合内的过滤器,则将其确定为可保留过滤器。否则,当该过滤器未被确定为可保留过滤器时,计算机系统将从过滤器集合中移除该过滤器。尽管过滤器集合已减少到最小集合,但仍可用于无损搜索,即在文本中找到每个术语。
用于实现本文公开的技术的内存要求由过滤器的数量以及其他参数来确定。以下描述涉及用于确定最小过滤器集合的技术,即,足以涵盖所有可能的组合但不会更多的过滤器数量。确定最小过滤器集合的有效性由以下参数确定:
1)执行映射步骤所需的内存。根据最小过滤器集合(MCS)中过滤器数量对此进行评估。对于搜索文本的大小为n以及由|MCS|给定的最小集合中的过滤器数量,此参数的复杂度可以估计为O(n*|MCS|)。
2)可以根据至少两个因素来确定搜索速度:搜索查询和搜索文本之间的比较次数以及“空闲”过滤器比较的次数。后者涉及在搜索文本中未找到过滤器的子序列的情况。对于较大的搜索文本和相应地过滤器出现的数量大,决定搜索速度的主要因素是比较的次数。相反,当搜索文本的大小相对较小并且过滤器的出现频率相应地较低时,则决定搜索速度的限制因素主要是“空闲”检查的次数。
可以将搜索查询与搜索文本的比较次数计算为比较总和,如针对MCS中的每个过滤器进行估计,如下所示:
比较次数=P*L*n
其中P是过滤器出现的概率,L是搜索查询中存在过滤器的位置数量,且n是搜索文本的大小。
过滤器出现的概率P可以估算为:
P=1/Σ字母表中的字母m
其中,m是过滤器中的匹配数。
“空闲”检查次数可以估计为:
空闲检查次数=(1-P)n*L*|MCS|
其中,L=(查询大小)-(过滤器跨度)+1。
通常,所需匹配数(阈值)越高,对应的最小过滤器集合(MCS)就越大。因此,尽管选择具有非常低的出现概率(例如,具有相对高的所需匹配数)的过滤器会减少比较的次数,但这需要更大的内存资源来解决较大的MCS,并且增加了“空闲”检查次数。考虑到内存的可用性,需要针对给定的问题优化最合适的MCS的选择。过滤器中的最佳匹配数(m)可以针对每个应用通过实验确定,最佳匹配数决定了出现概率P和|MCS|。为了处理内存不足的情况,可以将完整大小的搜索文本的映射分为多个部分,并且可以按顺序或并行地按部分实现搜索。可以根据为相应部分执行MCS映射所需的RAM选择每个部分的大小ns。
对于相对较小的搜索文本,或将搜索文本分为较小的部分并分别进行搜索的情况,可以使用以下技术:
1)创建多个MCS,每个MCS都符合给定的搜索要求,例如搜索查询的大小和相似性阈值(最大不匹配数)。根据过滤器中的匹配数排列集合。一般规则是:匹配数越大,搜索查询和搜索文本之间的比较次数就越少,需要更多的内存(RAM)来执行映射,并导致更多的“空闲”检查。
2)测量每个MCS的搜索速度。
3)选择在最短的时间(即最大速度)内提供搜索结果的MCS。
下表说明了用于为大小为10个字符的查询词语计算最小过滤器集合(MCS)的上述技术。该表说明了采用上述技术来查找文本中包含不超过四个不匹配的所有相似词。
首先,考虑匹配和不匹配的所有组合,并创建最小过滤器集合(MCS),以便每个组合都包含过滤器集合中的至少一个过滤器。将匹配标记为“1”,将不匹配(或不在乎)标记为“0”,并且:
ABCDEFGHIJ-查询
1111110000-匹配不匹配组合
ABCDEFQQQQ-文本
下表A说明了创建与上述标准相对应的MCS,其中过滤器以粗体显示。当从组合中选择过滤器时,将采用包含四个匹配的第一个过滤器:
表A
从空集{}开始,第一个过滤器是从与搜索术语的四个匹配的第一次出现的组合中得出的,在这种情况下为{“1111”},并添加到MCS集合。此过滤器在接下来的两个组合中出现,因此不再添加。第四组合不包含当前过滤器集合中的任何过滤器(例如,当前过滤器集合仅包含过滤器“1111”,在第四组合“1110111000”中未找到)。因此,导出新过滤器以确保每个组合包括至少一个过滤器(例如“涵盖”)。例如,可以通过采用具有与阈值相对应的匹配数量的该组合的第一片段,定义该过滤器中的匹配数量,从而从该未涵盖的组合中获取新过滤器。在上面的示例中,此片段对应于序列“11101”,具有四个1,对应于四个匹配的阈值,并位于第四组合的第1至5位(第4位为1个不匹配)。该片段作为第二个过滤器添加到过滤器集合中。接下来的四个组合包括已包含在MCS中的过滤器,因此被“涵盖”。倒数第二个组合提供了第三个过滤器:“101101”,该过滤器尚未包含在MCS中。该过滤器被添加为第三个过滤器。最后的组合包括已经包含在MCS中的过滤器,即“1111”,并且被忽略。结果是具有三个过滤器的MCS,这些过滤器涵盖了表中考虑的所有组合。
根据本发明的另一个实施方式,组合的完整集合由在第一位置或者替代地在第一和最后位置具有匹配的组合组成。这样的集合是有利的,因为它们可以在不损失任何相关匹配的情况下大大减小整个集合。
下面将参考附图说明本发明的示例性实施方式。
图1是用于生成最小过滤器集合100的方法的流程图。最小过滤器集合的生成是预处理阶段,其在给定文本中搜索搜索术语之前。对于仅具有预定阈值的词语相似性,可以通过仅考虑必要但不充分的条件来减少过滤器集合。
该计算机系统用于执行以下步骤:
在102,定义为空的过滤器集合。在104,生成针对至少一个搜索术语中的每个搜索术语的匹配和空位的位置的所有组合的集合。由于内存的大小限制,组合可以动态生成,然后从内存中删除。
在生成所有组合的集合之后,在106,检查该集合中的每个组合以查验其是否包含当前过滤器集合中的过滤器。
如果在该组合中未找到更新的过滤器集合中的过滤器,则从该组合导出过滤器,并且将新导出的过滤器添加到过滤器集合(108)。新导出的过滤器可以是该组合的一片段,或者可以是被随机导出。如果检查的组合包含过滤器集合中的至少一个过滤器,则检查下一个组合。过滤器的大小可以基于匹配的数量,可以将其作为输入接收。可替代地,可以随机选择匹配的数量。组合的片段也可以称为形状。
预处理文本所需的内存大小与要搜索的文本大小成比例,乘以过滤器集合的大小。如果预处理的文本的大小太大,则可以考虑较小的形状大小,即较小的匹配数。匹配数越多,过滤器集合就越大,这将增加预处理文本阶段所需的内存量。
或者,可以将文本分成较小的部分,并且可以在并行计算环境中分别处理每个部分(例如,可以同时使用两个或多个计算机处理器)。
在检查了所有组合的集合中的所有组合之后,根据以下步骤减少过滤器集合:通过检查所有组合的集合中的每个组合(110)以确认过滤器在组合中是否是单次出现,来检查过滤器集合中的每个过滤器(112)。单次出现是指,尽管一个组合可能包含同一过滤器的多次出现,但如果在所有组合中都出现了该过滤器集合中的不同的过滤器,则检查的过滤器不是单次出现。如果所检查的过滤器不是单次出现,则将其从过滤器集合中删除(114)。然后,检查更新的过滤器集合中的下一个过滤器,直到检查了过滤器集合中的所有当前过滤器为止。所得的过滤器集合仅包括在至少一个组合中是单次出现的过滤器。这是最小的过滤器集合(116)。
本发明的实施方式提供了用于创建过滤器集合的详细步骤,如上面图1中的步骤106-108中所述。这些步骤的替代方法在图2中进行了详细说明,并进行如下描述。对每个组合中出现的所有过滤器进行标识(202)。如果所有可能的过滤器的数量太大,则可能受到其他条件的限制,例如匹配的固定上限,最大跨度,过滤器的选择仅限于组合的一片段,仅举几例可能的限制。权重或分数分配给每个过滤器。例如,在204处,根据出现过滤器的组合的总和来确定分数。将具有最高分数的过滤器添加到过滤器集合(206)。包含此过滤器的组合可以标记为已查验(208),或从正在检查的组合的集合中移除。可以对尚未移除的任何未标记的组合重复过程200,即步骤202-208,直到找到良好的过滤器集合为止。与现有技术的方法相比,“良好的”过滤器集合是可以用来进行更快的搜索或产生更高质量的结果的过滤器集合。对于某些搜索条件,与现有技术方法相比,执行过程200在较短的时间内提供了有效的过滤器集合。为了产生最小的过滤器集合,可以对任何未标记的(或未移除的)组合重复步骤202-206,直到建立了令人满意的过滤器集合,或者该组合的集合为空或被完全标记为已查验。
参考图3,示出了使用过滤器集合的示例性图示。对于搜索词语,W=“AARRCCDDEE”,和MCS,对于S={XXX,XX-X},对应于两个过滤器。第一个过滤器对应于三个连续匹配(XXX),且第二个过滤器对应于两个连续匹配,然后是不匹配和第三个匹配(XX-X)。提取的集合SW包括表300中列出的15个词语,其中第12个词语是RC-D。给定文本的一部分:“GGGGGGGRCGDGGGGGGGGG”,此部分仅包含词语RC-D的一个实例,对应于配置XX-X,并不包含其他词语。因此,与词语RC-D的比较仅出现在一个位置,文本中的字符“G”与搜索术语中的字符“C”对齐,从而导致一个不匹配:
根据本发明的另一实施方式,可以不为每个用户生成或计算过滤器集合,而是可以针对广泛的参数计算过滤器集合并将其存储在可访问的公共数据库中。
现在参考图4,图4是通过本发明的实施方式获得的若干示例性最小过滤器集合的图示。这些最小集合优于天真算法的优势描述如下。
词语的大小|W|=20,相似性阈值T=60%(即最多允许8个不匹配)。|S|=最小过滤器S集合的大小,nC=在所有过滤器S中搜索术语产生的词语的数量,M=过滤器中的匹配数。与天真算法相比,优势(A)计算为dM/nC,其中d=字母表的大小,d=20。
根据所公开技术的另一实施方式,使用启发式方法来找到良好的过滤器集合。通过根据预定顺序形成多个过滤器集合并将分数分配给每个过滤器集合来应用启发式方法。可以基于(i)其大小,即该集合中过滤器的数量;和/或(ii)有效性,即从该过滤器集合生成的词语数量,将分数分配给每个过滤器集合。通常,过滤器的长度会影响从该过滤器生成的词语数量。即,随着过滤器长度的增加,词语的数量减少,从而提高了搜索速度。
参照图5A,可以通过比较分配给多个过滤器集合中的每一个的分数来获得良好的过滤器集合。可以在首先执行以下两个动作之后形成每个过滤器集合:i)生成过滤器的完整集合并且将权重或分数分配给每个过滤器(502),并且ii)根据分配的分数对过滤器进行排序(504)。排序可以以降序进行。
可以通过以下步骤来形成每个过滤器集合(506):生成并初始化该过滤器集合。如果不是第一个过滤器集合,则忽略过滤器的完整集合中的一个或多个过滤器(508)。分数最高的过滤器将添加到生成的过滤器集合中。包含分数最高的过滤器的任何组合都被标记为已查验,并且可以从要检查的组合的集合中移除。对未移除的未标记组合重复上述操作,直到建立了令人满意的过滤器集合,或直到该组合的集合为空或该组合的集合用尽(均标记为已查验)(510)。从过滤器集合中移除所有不可保留的过滤器,并且根据一个或多个预定标准将合理分数分配给该过滤器集合(512)。具有最佳合理分数的过滤器集合被保留(514)。最佳合理分数可以是最高分数,也可以是最低分数,具体取决于优化标准。可以重复上述用于形成过滤器集合的步骤,直到忽略一个或多个过滤器的步骤508,其包括移除所有过滤器,但分数最高的过滤器除外。在某些情况下,由于可能忽略的过滤器集合数量过多,循环可能不会终止。在这种情况下,可以根据可用的计算机功能和时间重复这些步骤,以获得令人满意的解决方案。
用于对每个过滤器集合进行评分的预定标准可以是该过滤器集合中的过滤器数量以及对于给定搜索术语从该过滤器集合生成的词语数量。
可以根据预定的一系列算术序列中的元素来执行508中包括/排除一个或多个过滤器中的任何一个的准则。预定系列的算术序列可以是使得系列中的每个元素是具有共同差d的算术序列。在非限制性示例中,在步骤508中,第二过滤器集合的形成可以排除第二最高的过滤器,在步骤508中,第三过滤器集合的形成可以排除第二和第三最高过滤器,在步骤508中,第四过滤器集合的形成可以排除第二、第三和第四最高过滤器,依此类推。因此,根据此示例,d=1且一系列算术序列中的元素为({2},{2,3},{2,3,4}等)。
现在参考图5B,其示出了用于找到根据所公开技术的另一实施方式构造和操作的令人满意的过滤器集合的启发式方法。该计算机系统执行以下步骤:
生成过滤器的完整集合C。
i.为每个过滤器分配权重(或分数);以及
ii.根据其各自的权重按降序排序过滤器(502b)。对于C中的每个过滤器i(从最频繁,即权重最高开始)(504b)
a.C中的过滤器(其频繁度低于过滤器i的频繁度)根据选择的顺序被标记(506b)(在下面详细说明)。
b.根据图2中所示的方法创建最小的过滤器集合,从i开始,对未标记的过滤器重复步骤206-208(508b)。
c.计算最小的过滤器集合的有效性。
d.如果有效性优于最佳最小过滤器集合的有效性,则将最小过滤器集合保留为最佳最小过滤器集合(510b)。
e.C中的过滤器的标记被取消,并且检查下一个标记的过滤器(512b)。
f.对下一个过滤器i重复上述步骤(514b)。这些步骤的输出是最佳最小过滤器集合(516b)。
现在参考图6,图6示出了一种启发式方法,用于减少从根据所公开技术的另一实施方式构造和操作的过滤器集合生成的词语的数量。减少从过滤器集合生成的词语的数量可以提高搜索速度。该方法考虑到词语中不同位置存在或不存在过滤器相关性这一事实,为搜索术语的每个位置构建一个或多个过滤器。因此,形成了与位置有关的过滤器集合,并且每个过滤器集合都与给定搜索术语中的特定位置相关联。过滤器可以具有不同的大小。所公开的一种优化是仅包括在搜索术语中的特定位置处实际上分别找到的过滤器。
计算机系统执行以下步骤:形成过滤器集合(MCS)(602)(例如,通过实现上述算法中的一种,以创建涵盖所有可能的组合的过滤器集合)。将当前位置设置为第一位置(604)。形成的过滤器集合与当前位置相关联(606)。第一位置可以是给定搜索术语的最左侧位置,也可以是“低出现”位置,如下所述。或者,在搜索术语中选择一些位置序列S(最简单的序列可以是S={1,2,…,n-k+1}(k是最小过滤器的跨度)。根据本发明,可以使用任何其他顺序,并且将S中的第一位置设置为当前位置(604)。
移除包含当前位置处的过滤器的所有组合的集合中的所有组合,或标记为已查验(608)。将S中的下一个位置设置为当前位置(610)。当前位置可以向右移动1。在如上所述的步骤610之后,将过滤器集合的大小减小到最小,即产生最小的过滤器集合。在未移除或未标记组合的集合中未被确定为可保留过滤器的任何过滤器都将被移除,或标记为已查验,并将更新后的过滤器集合设置为当前过滤器集合(611)。可以重复步骤606至611直到所有组合用完为止。所获得的过滤器集合对于词语的第一个位置而言是最大的,从序列S中的左侧位置到右侧位置递减。
图6中描述的方法的输出是一组集合。组中的每个集合都与搜索术语中的某个位置相关联。(与起始位置相关的)一个集合最大(并且该集合的形式应该用于映射)。
可以将与位置相关的过滤器集合的有效性计算为与每个位置相关联的过滤器的比较的总和(nc)。可以通过以下步骤来执行与位置相关的过滤器集合的应用;在文本中映射所有过滤器中的所有词语;根据与该位置的过滤器集合相关的对应物,为术语的每个位置提取所有词语;根据提取的词语的映射,将术语与文本中的对应位置进行比较。
下表B说明了对过滤器集合评分的结果。根据从给定搜索术语的过滤器集合中生成的词语的数量分配分数。考虑图4中的第一集合:S={XXX,XX-X}。针对搜索术语的大小为|W|=20,且相似性阈值T=60%(即允许最多8个不匹配)找到该集合。从过滤器集合中为给定搜索术语生成的词语数量为35。考虑一个搜索术语:“abcdefghijklmnopqrst”。下表示出,对于过滤器XXX,词语将为:
表B:
每个过滤器的词语数量nC(i)可以计算为:
nC(i)=|W|-|C(i)+|
其中:|W|=搜索术语W的大小,|C(i)|=过滤器i的跨度,包括空格。
现在参考图7A-图7C,其示出了根据所公开技术的另一实施方式构造和操作的若干位置相关的过滤器集合。通过使用适合于指定搜索术语的位置相关的过滤器集合,可以显着提高算法的有效性。这可以考虑所形成的位置相关的过滤器集合中每个提取的词语在文本中的出现。因此,指定搜索术语的“低出现率”位置可以与最大的集合相关联,而“高出现率”位置可以与最小的集合相关联。针对图4中描述的搜索条件(搜索术语大小|W|=20,且相似性阈值T=60%(即允许最多8个不匹配))计算过滤器集合。位置顺序为S={1,2,3,…}。起始集合是图4中给出的集合。
参见图7A,其针对过滤器中的匹配数量M=3示出了与位置相关的过滤器集合的示例,与图4中表400的顶行相对应。这意味着从搜索词语开始直到第13个位置,都应与“XXX”形式进行比较。参见图7B,其针对过滤器中的匹配数量M=4示出了与位置相关的过滤器集合的示例,与图4中表400的第二行相对应。参考图7C中的表C,将位置相关的集合的分数与图4中显示的过滤器集合的分数进行比较,其中,分数是根据针对给定搜索术语从过滤器集合生成的词语数量来确定的。
根据本发明的另一个示例性实施方式,可以如下准备一组集合的阵列:对于给定的搜索术语,从不同的位置开始,选择最低的出现位置。使用从该最低出现位置开始的一组集合。类似地,一组集合的阵列可以包含具有针对S中的下一个位置的不同分配的一组集合。在后一种情况下,可以选择第一和第二最低出现位置,并且使用具有相应的第一和第二最低出现位置的一组集合。对于更大数量的位置,该过程继续进行。
针对与该位置相关联的过滤器集合中的所有过滤器,“低出现率”位置计算为从该位置开始所有词语出现的总和。可以在文本中映射过滤器集合中所有过滤器的所有词来提供词语出现(文本预进行过程)。
本发明的实施方式可以用于几种实现方式:(i)在给定的文本中搜索所有相似的词语中的一个词语或一组词语;(ii)在在线流中搜索所有相似的词语中的一个词语或一组词语;以及(iii)在第二文本中搜索第一文本类似词语中的每个词语;(iv)索引,即搜索相同文本中文本类似词语的每个词语(可以将其视为给定文本的词相似性图的构建)。
用于搜索的所有过滤器的完整集合的用法在“Frenkel,Z.M.and Trifonov,E.N.“Evolutionary networks in the formatted protein sequence space”.Journal ofComputational Biology,14(8):1044-57,Oct.2007”中进行描述。所有过滤器的完整集合由穷举组合运算符生成。
本发明的示例性实施方式提供了一种方法,该方法使用上述最小的过滤器集合来搜索与给定文本中的一个词语或一组词语相似的词语,从而提供了优于穷举方法的改进。文本索引类似于为文本构造相似性图。相似性图的特征在于,通过多个边连接的多个节点。节点代表多个重复的字符序列,对应于搜索术语的大小;每个边连接一对节点是基于节点之间的各自相似性阈值。可以根据诸如[PCT/IL2016/051220]中描述的方法的常规方法来压缩相似性图。词语的聚类可以显著减少完成搜索所需的时间。
这可以解释如下。考虑以下引理:
如果满足以下条件:
1.词语A,B,C,D的大小均为m
2.词语A与词语B相似,具有最大不匹配数x,即A与B之间的距离d为((d(A,B)≤x))
3.词语C与词语D相似,具有最大不匹配数y,即C和D之间的距离d为(d(C,D)≤y)
4.词语A不同于词语C,具有最大匹配数z,即至少m-z个不匹配。因此,A和C之间的距离d为(d(A,C)≥m-z)
然后,在由max{0;m-(x+y+z)}给出的最大不匹配数内,词语B与D相似,并且以下关系成立:
d(B,D)≤max{0;m-(x+y+z)}
该结果的证明如下。可以考虑两个圆,第一个圆的半径为x,中心为A,B在边上。第二个圆的半径为y,中心为C,D在边上。对于A和C之间的最小距离的情况,圆可以重叠,或对于A和C之间的最大距离的情况,可以将圆间隔开。两种可能的情况是:1)B和D之间的最小距离给定为:m-(x+y+z),和2)B和D之间的最小距离为0(即,圆重叠)。
如下所述,上述引理可以应用于执行搜索。为了检查两个聚类是否在60%的相似性内匹配(即对于20个字符的序列,最多八个不匹配或至少12个匹配),构建聚类以符合相似性标准。例如,一种这样的标准可以是,在至少90%的相似性度量(即,最大两个不匹配)内,每个聚类中的所有序列与对应的聚类种子序列相似。
如果每个种子序列的最大相似性为35%(即最多7个匹配),则两个聚类的任意两个序列之间的最大相似性不能超过11个匹配(即55%)。换句话说,聚类之间的最小距离至少为9个不匹配(20-(7+2+2)=9)。在这种情况下,不可能满足两个聚类之间的60%相似性要求。因此,不需要检查这样的聚类对,从而优化了内存、时间和计算资源。如果第一个聚类具有m个序列,且第二个聚类具有n个序列,则经济性为m*n-1个比较。可以注意到,在数据库中找到相似性为35%的序列片段的可能性相对较低(对于20个字母的字母表,该比率约为10-5)。
可以应用以下索引算法,th1代表索引所需的最小匹配数的阈值,th2代表聚类所需的最大不匹配数:
1)将文本分为词语的一组聚类。聚类形成为如下:
a)对于不在聚类中的每个词语:
b)在选择的阈值th2处找到所有相似的词语,即,通过使用上述的k个不匹配搜索;
c)对聚类中的词语进行排序:与种子词语更相似的词语被分配较小的索引;
2)检查聚类之间的连接是否满足以下条件:如果第一个聚类中至少有一个词语与具有相似性阈值th1的第二个聚类中至少一个词语相似,则连接聚类,
a)对于种子词语(根据上述k个不匹配搜索技术确定),找到至少在(K1=th1-2*th2)个匹配内相似的所有种子词语。即类似的词语只能出现在此类聚类中;
b)仅比较聚类的索引i和j的词语,其中K1+Ki+Kj≥thl(即K1是种子词语之间的匹配数,Ki和Kj分别是词语i和j与相应的种子词语不匹配的数量)。
c)如果检测到连接,则过程终止。
3)完成索引。此步骤是可选的,因为对于许多应用而言,识别聚类之间的连接就足够了。
a)比较每个聚类中的所有节点;
b)比较连接的聚类的词语(类似地,仅比较聚类的索引i和j的词语,其中K1+Ki+Kj≥thl,其中K1、Ki和Kj与上面相同。
现在给出文本索引算法如下:i)所有过滤器中存在的所有词语都映射到文本中。ii)对于每个搜索术语,提取所有过滤器中的所有词语,并根据提取的词语的映射将术语与搜索文本进行比较。为了快速访问,可以使用提取的词语的地址。
根据本发明的另一示例性实施方式,在某些条件下,将搜索术语中所有过滤器中的词语映射并存储在用于一组搜索术语的后缀树数据结构中。与整个过滤器集合的比较以线性时间执行。这些条件可包括无法执行文本的预处理的情况。例如:当文本不可用,或者文本流在线或可用内存量不足时。
在一个示例性实施方式中,指定搜索术语的“低出现率”位置可以与最大集合相关联,而“高出现率”位置可以与最小集合相关联。因此,针对位置S1和S2的两个顺序计算两个位置相关的过滤器集合。
参照下表C,针对搜索术语中位置S1,S2的两个可能序列,显示了两个与位置相关的过滤器集合,其中,XXX表示三个连续匹配,而XX-X表示两个连续匹配,接着是一张通配符和一个匹配:
表C
考虑一个搜索术语W='ABCDEFGHIJKLMNOPQRST'。假设文本中所有三个字母的词语的出现都相同-等于零,但不包括“BCD”(即XXX)和“BC-E”(即XX-X),它们各等于1000个出现。为了查找文本中所有与搜索术语W相似的词(相似性阈值为60%),根据左边的一组集合(以S1计算),使用序列“BCD”和“BC-E”,这需要进行2000次比较,而使用右边的一组集合(以S2计算)(其中不使用“BC-E”,)找到与W具有60%相似度的所有相似词将需要进行1000次比较。因此,对于这样的搜索词语和这样的文本,右边的集合更加有效。
当如本文所述准备过滤器集合的位置相关集合时,所得到的位置相关集合取决于搜索术语中位置的顺序或“序列”,例如以上表C中所示。
尽管使用过滤器集合的不同组得到的预期比较次数可以相同,但是与特定位置相对应的过滤器数目可能实质上不同,从而影响性能。在将过滤器映射到特定文本以进行搜索之后,所有过滤器形式的搜索术语的出现都是已知的,且可用于进一步优化搜索。例如,搜索文本中的“BCD”,“BC-E”,以及以上示例中搜索术语中的其他任何词语的出现时已知的。因此,对于给定的搜索词语,可以选择提供与文本的比较数目最小的对应的一组集合以提高搜索速度。选择提供与搜索术语的比较最少的一组集合的位置序列。但是,“通用”过滤器集合或所有过滤器集合的初始过滤器集合是相同的。这允许对过滤器集合的所有可能位置集合使用相同的映射。
根据本发明的又一个示例性实施方式,可以通过最初构造给定文本的相似性图来执行对词语或更多词语的搜索。可以根据较高的相似性阈值来压缩相似性图,其中“超级节点”之间的连接指示在主图中的对应子图之间存在至少一个连接。可以在发现超节点之间的连接的过程中应用最小的过滤器集合。
以下是使用压缩的相似图进行索引的示例:
任务:为文本T建立相似性图,即为每个词语找到至少具有阈值thr1的所有相似词语。
i.创建聚类(具有选择的最大大小)作为子图,其中连接条件为阈值thr2,该阈值高于thrl。例如,thr1为60%匹配,thr2可以为80-90%的匹配。可以证明,这需要更少的过滤器集合,也需要更少的时间和RAM用于计算。
ii.计算聚类之间的连接(这比完整网络计算要快得多。这意味着,如果存在至少一对(通过thrl(连接)的)节点(第一个来自一个聚类,第二个来自另一个聚类),该聚类称为“已连接”。
iii.根据计算出的连接聚类计算相似性图。此任务也比直接计算要快得多(因为只应在聚类内部以及连接的聚类之间进行比较)。
根据本发明的又一示例性实施方式,k个不匹配搜索可能是有损的,从某种意义上说,匹配的词语将在概率阈值内在文本中找到。上面描述的算法是“无损的”,即,如果考虑的组合的集合包含针对给定阈值和搜索术语大小的匹配和间隔位置的所有可能组合,则不会丢失所选阈值内与搜索词语相似的任何词语。但是,所公开的技术也可以用作“有损”算法,即,以至少一些预定的概率找到相似的词语。这种方法的优点之一是搜索速度提高,并且预处理所需的RAM减少。
为了使该技术适用于“有损”算法,构造了过滤器集合,该过滤器集合仅覆盖匹配和空位的位置的组合的完整集合的一部分,即子集。子集大小与完整集合的比例应大于或等于找到搜索词语的预定概率。在这种情况下,重复该算法,直到标记或移除了匹配和空位的位置的组合的完整集合的所有集合的子集,这与执行该操作直到耗尽组合的整个集合相反。
在某些应用中,搜索术语可能不受所选大小的限制(具有相应数量的允许的不匹配)。相反,搜索术语可以具有允许的大小(S),该大小可以例如在预定的下边界(SL)到某个预定的上边界(SU)之间变化。允许的不匹配的数量也可以在高低不匹配阈值之间变化。例如,允许的不匹配数可能与搜索术语的大小,应用的上下文,文本的特征成比例,仅举几例。在这种情况下,创建“通用”过滤器集合可能很有用,这些过滤器集合可以应用于搜索词语大小和/或不匹配数范围内的各种不同上下文。
尽管对于允许的搜索术语大小S,需要相应的过滤器集合以提供最佳搜索速度,但不必为S的允许大小范围内的每个不同的大小重复映射(其需要RAM资源)。一种可以计算出“通用”过滤器集合的算法的实现方式如下给出:
Ⅰ为SL构造过滤器集合(通过上述算法之一);
ii.将此集合添加到用于映射的过滤器(SFM)集合中;
iii.对于从SL+1到Su中的每个Si,例如,使用SFM作为初始集合(即,代替算法中使用的初始空集合),通过权利要求中第1段所述的算法构建过滤器集合。
iv.如果向集合添加了新过滤器,则应从新过滤器开始检查“过滤器是否可保留”。
v.在SFM中添加新(可保留的)过滤器。
结果,构造了过滤器集合,其包含针对每个可能大小的搜索术语的集合(具有相应的相似性条件)。但是,这些集合中仅存在来自SFM的过滤器。因此,仅这些过滤器应在预进行过程中进行映射。
对于搜索术语|W|的大小大于SU的情况,可以将搜索术语分为两个大小相等的词语Wleft和Wright,对于每个词语,所有相似的词语(具有相同的相似性阈值(%))应在文本中被检测到。与Wright相似的词语的之前的流文本应与Wleft进行比较,以及与Wleft相似的词语的之后的流文本应与Wright进行比较。
本文描述的技术可以应用于任何数量的上下文。例如,当在字典中搜索词语时,搜索术语通常必须经历“标准化”阶段,以解决拼写、时态、单/复数等方面的差异。因此,可以使用本文公开的技术代替这种标准化阶段,或者本文公开的技术与标准化结合使用以提供更好的结果。
如上所述获得的过滤器集合可以适于在词语列表(字典)中进行搜索。在这种情况下,在映射中应考虑每个词语在每个过滤器中的位置。仅应选择字典中在与搜索术语相同位置包含相应过滤器的那些词语,以与搜索术语进行比较。
本领域已知的其他技术可以与本文公开的系统和方法结合使用,以增强性能。在某些情况下,字母表的大小会影响算法的性能或有效性。较小的字母表可以降低搜索的组合复杂性,因此在某些情况下,可以将两个或多个字母聚类为一个字母,以减小字母表的大小,从而提高算法的有效性。一种可能的替代方法是将两个或多个字母从初始字母表聚类到新字母表的一个字母。或者,在某些情况下,增加字母表的大小可能会减少每个过滤器的出现次数。例如,DNA文本具有4个字母的字母表{a,t,c,g},对应于DNA中存在的四个核苷酸。因此,任何三个字母的词语的出现概率为1/4*1/4*1/4=1/64。可以从所有两个字母的组合中构建一个大小为16(=42)的新字母表,如下所示:{aa,at,ac,ag,ta,tt,tc,tg,...}。现在,任何三个字母词语出现的概率将是1/16*1/16*1/16=1/4096,即小得多。这可以大大提高搜索效率。字母表大小可以相应地增加或减少。
其他实现:可以为不同的应用创建用于过滤器的数据库。遗传算法可用于提高过滤器集合的质量(有效性)。
现在参考图8A,其示出了根据所公开技术的实施方式构造和操作的、用于执行本文所公开的任何步骤的计算机系统800。计算机系统800包括至少一个处理器802(例如CPU),随机存取内存(RAM)单元804、盘存储单元806、收发器808和电源810。至少一个处理器802、RAM单元804、盘存储单元806和收发器808电耦接至电源810。RAM单元804、盘存储单元806和收发器808通信性耦接至至少一个处理器802。收发器808用于发送和接收数据,包括至少一个或多个程序代码指令的,以及与本文公开的k个不匹配搜索技术有关的数据。收发器808可以使用任何合适的有线或无线协议与另外的计算机系统(未示出)通信,例如,通过电缆或光缆,短距离和中等距离的通信方式(例如,蓝牙,Wifi,IR)以及更长距离的通信方式(例如,RF和蜂窝网络)等等。
RAM单元804和盘存储单元806每个可操作为存储与本文公开的k个不匹配搜索技术有关的一个或多个程序代码指令和数据,例如可以经由收发器808接收的任何一种。至少一个处理器802可操作为读取与k个不匹配搜索技术有关的一个或多个程序代码指令和数据,并对数据执行程序代码指令,从而执行本文所述的任何步骤。至少一个处理器802用于将执行的结果写入RAM单元804和盘存储单元806。至少一个处理器802用于经由收发器808向另外的计算机系统(未示出)请求数据并向其提供数据。至少一个处理器802可操作以例如经由用户界面(未示出)将执行的结果提供给用户。
现在参考图8B,同时仍然参考图8A,其示出了根据所公开技术的另一实施方式构造和操作的、用于执行本文以上公开的任何步骤的联网计算机系统820。计算机系统820包括多个节点800A、800B、…、800N和通信网络822。节点800A、800B、…、800N中的每个对应于图8A的计算机系统800。因此,节点800A、800B、…、800N中的每个节点至少包括以上相对于图8A所提及的组件,例如至少一个处理器802(例如,CPU)、随机存取内存(RAM)单元804、盘存储单元806、收发器808和电源810。节点800A、800B、...、800N可操作以经由通信网络822和节点800A、800B、...、800N中的每一个的各自的收发器808彼此通信。计算机系统820可操作以使用分布式计算领域中已知的常规技术在节点800A、800B、…、800N上以分布式方式执行本文描述的任何步骤。可以以并行和串行计算的任何组合来执行步骤。
计算机系统800和计算机系统820各自被配置为至少执行以下步骤:
接收搜索术语的大小和相似性阈值。生成过滤器集合。基于根据相似性阈值的搜索术语的大小的匹配和空位的位置的组合的集合,形成过滤器集合。每个组合都包含过滤器集合中的至少一个过滤器。在一些实施方式中,组合的集合中的每个组合在各个组合的第一位置处包括匹配。在一些实施方式中,每个组合的集合还包括在相应组合的最后位置处的匹配。参考图8A,处理器802例如经由收发器808来接收搜索术语和相似性阈值。处理器802基于根据相似性阈值的搜索术语的大小的匹配和空位的位置的组合的集合来形成过滤器集合。组合中的每个组合都包含过滤器集合中的至少一个过滤器。
对于过滤器集合中的每个过滤器,当组合的集合中存在仅包含该过滤器的至少一个组合时,确定相应的过滤器是可保留的过滤器。当该过滤器不是可保留的过滤器时,将从该过滤器集合中移除该过滤器。参考图8A,当该组合的集合中的至少一个组合仅包含该过滤器时,处理器802确定该过滤器为可保留过滤器。如果处理器802确定过滤器不是可保留的过滤器,则处理器802从过滤器集合中移除该过滤器。
过滤器是根据以下步骤形成的:初始化过滤器集合。对于组合的集合的每个选择的组合:在选择的组合中搜索过滤器集合中的过滤器的出现;当在所选的组合中未发现过滤器的出现时,将从所选组合中导出新过滤器。新过滤器将添加到过滤器集合中。在一些实施方式中,新过滤器是所选组合的一片段。在一些实施方式中,利用随机化过程来确定新过滤器和新过滤器的匹配数中的任何一个。在一些实施方式中,匹配数是预定数量。在一些实施方式中,多个新过滤器从所选择的组合中导出,并且分数被分配给多个新过滤器中的每一个。当新过滤器的分数高于多个新过滤器的任何其他新过滤器的分数时,将该新过滤器添加到过滤器集合中。在一些实施方式中,可以根据以下参数的任意组合将分数分配给每个过滤器:搜索术语和与应用过滤器相对应的文本之间的期望的比较数量;组合的集合中过滤器的出现频率;过滤器中的匹配数;和过滤器的跨度。参考图8A,处理器802如下形成过滤器集合:处理器802初始化过滤器集合。对于该组合的集合中的每个所选组合:处理器802在该所选组合中搜索该过滤器集合中的过滤器是否出现。如果处理器802在所选组合中未发现过滤器的出现,则处理器802从所选组合中导出新过滤器,并将新过滤器添加到过滤器集合中。
可以根据以下步骤创建第二过滤器集合:可以从过滤器集合中选择一个或多个过滤器。每个选择的过滤器可以被至少一个不同的过滤器替换,其中,根据从选择的过滤器的最高分数到选择的过滤器的最低分数排序的顺序来执行选择和替换,其中,每个组合可以包含第二过滤器集合中的至少一个过滤器。根据合理分数,在过滤器集合中选择第二过滤器集合。可以使用以下参数中的一个或多个来计算合理分数:根据该过滤器集合中的所有过滤器的预期比较次数的和确定的预期搜索计算速度;以及搜索相应过滤器集合中的每一个所需的存储量。参考图8A,处理器802根据上述步骤创建第二过滤器集合。处理器802根据合理分数从原始过滤器集合中选择第二过滤器集合。
可以如下生成多个过滤器集合。搜索术语中的每个位置都对应于多个过滤器集合中的至少一个。组合中的每一个在相应组合中的位置处包含多个过滤器集合中的至少一个中的至少一个过滤器。与多个过滤器集合中的至少一个过滤器集合相对应的搜索术语的位置对应于各个组合中的位置。参考图8A,处理器802根据上述步骤生成多个过滤器集合。
多个过滤器集合中的每一个如下形成:将组合的集合指定为组合的当前集合,并且将基于组合的当前集合的过滤器集合设置为当前过滤器集合。获得搜索术语中的位置序列。之后,根据该序列,对于每个位置,生成与该位置相关联的过滤器集合。如果组合包含与位置相关联的生成的过滤器集合中的过滤器,则更新组合的当前集合中的组合。参考图8A,处理器802创建多个过滤器集合。搜索术语中的每个位置对应于过滤器集合中的至少一个。每种组合都包含多个过滤器集合之一中的至少一个过滤器。组合中找到过滤器的位置对应于搜索术语中的位置,其对应于包含该过滤器的过滤器集合(即组合中的过滤器)。
当过滤器相对于当前组合的集合不可保留时,从当前过滤器集合中移除该过滤器,其中当当前组合的集合中存在仅包含该过滤器的至少一个组合时,该过滤器相对于当前组合的集合是可保留的。参考图8A,当过滤器不可保留时,处理器802从当前过滤器集合中移除该过滤器。
与位置相关联的过滤器集合如下形成:获得组合的集合,以及当前的过滤器集合和位置。对于当前过滤器集合的每个过滤器:当在该位置的组合的集合中的至少一个组合中找到过滤器时,将该过滤器添加到与该位置相关联的过滤器集合中,并因此从该组合的集合中删除、移除或另外地标记该至少一个组合。参考图8A,处理器802根据上述步骤将过滤器集合与位置相关联。
在一些实施方式中,形成多组过滤器集合,其中多组过滤器集合中的每一组对应于搜索术语中的多个位置序列中的不同序列。可以根据将所选一组过滤器集合应用于执行k个不匹配搜索时执行的预期比较次数,从多组过滤器集合中选择一组过滤器集合。预期的比较次数是进行搜索的给定文本和给定词语的函数。
在一些实施方式中,接收有损阈值。根据关于搜索术语的有损阈值和相似性阈值来创建组合的子集,其中,生成过滤器集合包括生成组合的子集的过滤器。参考图8A,处理器802诸如经由收发器808接收有损阈值。
在一些实施方式中,搜索术语的大小对应于搜索术语的多个可能的大小,并且相似性阈值对应于多个相似性阈值,每个相似性阈值对应于搜索术语的多个可能的大小中的一个。
在一些实施方式中,k个不匹配搜索的执行被应用于对文本的多个词语进行聚类。可以应用聚类来加速k个不匹配搜索的文本索引步骤。
本发明不限于上述实施方式,而是包括在所附权利要求的范围内的任何和所有实施方式。本领域技术人员将理解,所公开的技术不限于上文已经具体示出和描述的技术。而是,所公开的技术的范围仅由权利要求限定,其可能的代表性近似如下。
Claims (21)
1.一种用于执行k个不匹配搜索的计算机系统,包括至少一个处理器,所述至少一个处理器被配置为:
接收搜索术语的大小;
接收相似性阈值;以及
通过以下步骤生成过滤器集合:根据所述相似性阈值,基于所述搜索术语的所述大小的匹配的位置和空位的位置的组合的集合来形成所述过滤器集合,其中,所述组合中的每个包含所述过滤器集合中的至少一个过滤器。
2.根据权利要求1所述的计算机系统,其中,所述至少一个硬件处理器还被配置为通过以下步骤创建最小的过滤器集合:
对于所述过滤器集合中的每个过滤器,当所述组合的集合中存在仅包含所述过滤器集合中的所述过滤器的至少一个组合时,确定所述过滤器为可保留过滤器,以及
当所述过滤器不是可保留过滤器时,从所述过滤器集合中删除所述过滤器。
3.根据权利要求1所述的计算机系统,其中,所述组合的集合中的每个组合在各个所述组合的第一位置处包括匹配。
4.根据权利要求3所述的计算机系统,其中,所述组合的集合中的每个组合在各个所述组合的最后位置处包括匹配。
5.根据权利要求1所述的计算机系统,其中,所述至少一个硬件处理器被配置为通过以下步骤形成所述过滤器集合:
初始化所述过滤器集合;
对于所述组合的集合的每个选择的组合:
在所述选择的组合中搜索所述过滤器集合中的过滤器的出现,
当在所述选择的组合中未发现所述过滤器集合中的过滤器的所述出现时,从所述选择的组合导出新过滤器,以及
将所述新过滤器添加到所述过滤器集合。
6.根据权利要求5所述的计算机系统,其中,所述新过滤器是所述选择的组合的片段。
7.根据权利要求5所述的计算机系统,其中,所述新过滤器和所述新过滤器的匹配数中的任何一个通过随机化过程确定。
8.根据权利要求7所述的计算机系统,其中,所述匹配数是预定数量。
9.根据权利要求5所述的计算机系统,其中,所述至少一个硬件处理器被配置为从所述选择的组合中导出多个新过滤器,并且为所述多个新过滤器中的每一个分配分数,并且当所述新过滤器的所述分数高于所述多个新过滤器中的任何其他新过滤器的所述分数时,将所述新过滤器添加到所述过滤器集合。
10.根据权利要求9所述的计算机系统,其中,所述至少一个硬件处理器还被配置为根据从由以下各项组成的组中选择的参数,将所述分数分配给所述过滤器集合中的每个过滤器:分别应用所述过滤器,所述搜索术语与文本之间的期望比较次数;所述过滤器在所述组合的集合中的出现频率;所述过滤器中的匹配数;以及所述过滤器的跨度。
11.根据权利要求10所述的计算机系统,其中,所述至少一个硬件处理器还被配置为:
通过以下方式创建第二过滤器集合:
从所述过滤器集合中选择过滤器,
用至少一个不同过滤器替换每个所述选择的过滤器,根据从所述选择的过滤器的所述分数的最高分数到所述选择的过滤器的所述分数的最低分数排序的顺序执行所述选择和所述替换,其中,每个所述组合包含所述第二过滤器集合中的至少一个过滤器,以及
根据合理分数,在所述过滤器集合中选择所述第二过滤器集合。
12.根据权利要求11所述的计算机系统,其中,所述合理分数是使用选自由以下项组成的组中的参数来计算的:根据所述过滤器集合中所有所述过滤器的预期比较次数之和确定的搜索的预期计算速度;进行所述过滤器集合的搜索所需的内存的量。
13.根据权利要求1所述的计算机系统,其中,所述至少一个硬件处理器还被配置为生成所述过滤器集合中的多个过滤器,其中:
所述搜索术语中的每个位置对应于所述过滤器集合中的所述多个过滤器中的至少一个,
所述组合中的每一个在各个所述组合中在一位置处包含所述过滤器集合中的所述多个过滤器中的至少一个过滤器中的至少一个,所述搜索术语的所述位置对应于所述过滤器集合中的所述多个过滤器中的所述至少一个,所述过滤器集合对应于各个所述组合中的所述位置。
14.根据权利要求13所述的计算机系统,其中,所述至少一个硬件处理器被配置为通过以下步骤形成所述过滤器集合中的所述多个过滤器中的每一个:
将所述组合的集合指定为组合的当前集合,并将基于所述组合的当前集合的所述过滤器集合指定为当前过滤器集合;
获得所述搜索术语中的位置的序列,
根据所述序列,对于每个所述位置,
产生与所述位置相关的过滤器集合,
当所述组合在所述位置处包含与所述位置相关联的所述生成的过滤器集合中的过滤器时,更新所述组合的当前集合中的组合,
当所述过滤器相对于所述组合的当前集合不可保留时,从所述当前过滤器集合中删除过滤器,
其中,当所述组合的当前集合中存在仅包含所述过滤器的至少一个组合时,所述过滤器相对于所述组合的当前集合可保留。
15.根据权利要求14所述的计算机系统,其中,所述至少一个硬件处理器被配置为通过以下步骤形成与位置相关联的所述过滤器集合:
获得所述组合的集合,所述当前过滤器集合和所述位置;
对于所述当前过滤器集合中的每个过滤器:
当在所述位置在所述组合的集合中的至少一个组合中找到过滤器时,向与所述位置相关联的所述过滤器集合添加所述过滤器,并且
从所述组合的集合中删除所述组合中的所述至少一个组合。
16.根据权利要求1所述的计算机系统,其中,所述至少一个硬件处理器还被配置为:接收有损阈值;根据所述搜索术语的所述有损阈值和所述相似性阈值来创建所述组合的子集,其中,生成所述过滤器集合包括关于所述组合的所述子集生成所述过滤器。
17.根据权利要求1所述的计算机系统,其中,所述搜索术语的所述大小对应于所述搜索术语的多个可能的大小,并且其中,所述相似性阈值对应于多个相似性阈值,每个相似性阈值对应于所述搜索术语的所述多个可能的大小中的一个。
18.根据权利要求15所述的计算机系统,其中,所述至少一个硬件处理器还被配置为形成多组过滤器集合,其中,所述多组过滤器集合中的每一组对应于所述搜索术语中的多个位置序列的不同序列。
19.根据权利要求18所述的计算机系统,其中,所述至少一个硬件处理器还被配置成从所述多组过滤器集合中选择一组过滤器集合,所述选择根据当应用所述选择的一组过滤器集合执行所述k个不匹配搜索时所执行的期望的比较次数来执行,其中,所述期望的比较次数是用于搜索的给定文本和给定词语的函数。
20.根据权利要求1所述的计算机系统,其中,所述至少一个硬件处理器还被配置为应用所述k个不匹配搜索的所述执行,以对文本的多个词语进行聚类。
21.根据权利要求20所述的计算机系统,其中,所述至少一个硬件处理器还被配置为应用所述聚类以加速所述k个不匹配搜索的文本索引步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762473400P | 2017-03-19 | 2017-03-19 | |
US62/473,400 | 2017-03-19 | ||
PCT/IL2018/050311 WO2018173042A1 (en) | 2017-03-19 | 2018-03-19 | System and method for generating filters for k-mismatch search |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110892401A true CN110892401A (zh) | 2020-03-17 |
CN110892401B CN110892401B (zh) | 2024-09-24 |
Family
ID=63584300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880032748.6A Active CN110892401B (zh) | 2017-03-19 | 2018-03-19 | 生成用于k个不匹配搜索的过滤器的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11250064B2 (zh) |
EP (1) | EP3602350A4 (zh) |
KR (2) | KR20230152172A (zh) |
CN (1) | CN110892401B (zh) |
WO (1) | WO2018173042A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449914B2 (en) * | 2020-08-31 | 2022-09-20 | Coupang Corp. | Systems and methods for visual navigation during online shopping using intelligent filter sequencing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005010200A2 (en) * | 2003-07-15 | 2005-02-03 | Bioarray Solutions, Ltd. | Concurrent optimization in selection of primer and capture probe sets for nucleic acid analysis |
US20050089916A1 (en) * | 2003-10-28 | 2005-04-28 | Xiongwu Xia | Allele assignment and probe selection in multiplexed assays of polymorphic targets |
US20070067108A1 (en) * | 2005-03-03 | 2007-03-22 | Buhler Jeremy D | Method and apparatus for performing biosequence similarity searching |
US20150186471A1 (en) * | 2014-01-02 | 2015-07-02 | The George Washington University | System and method for approximate searching very large data |
CN105095522A (zh) * | 2015-09-22 | 2015-11-25 | 南开大学 | 基于最近邻搜索的关系表集合外键识别方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6551784B2 (en) * | 1989-06-07 | 2003-04-22 | Affymetrix Inc | Method of comparing nucleic acid sequences |
US5168147A (en) * | 1990-07-31 | 1992-12-01 | Xerox Corporation | Binary image processing for decoding self-clocking glyph shape codes |
US20020099702A1 (en) * | 2001-01-19 | 2002-07-25 | Oddo Anthony Scott | Method and apparatus for data clustering |
AU2002309085A1 (en) * | 2002-03-27 | 2003-10-08 | Gene-It | Method for filtering nucleic or proteic sequence data |
JP3630414B2 (ja) * | 2002-05-21 | 2005-03-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 塩基配列のクラスタ生成システム、塩基配列のクラスタ生成方法、該クラスタ生成方法を実行するためのプログラム、および該プログラムを記憶したコンピュータ可読な記録媒体、および塩基配列情報提供システム |
US7010522B1 (en) | 2002-06-17 | 2006-03-07 | At&T Corp. | Method of performing approximate substring indexing |
US7111000B2 (en) * | 2003-01-06 | 2006-09-19 | Microsoft Corporation | Retrieval of structured documents |
US7584173B2 (en) | 2003-02-24 | 2009-09-01 | Avaya Inc. | Edit distance string search |
JP4538449B2 (ja) | 2003-03-03 | 2010-09-08 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 文字列検索の方法および設備 |
US8090678B1 (en) * | 2003-07-23 | 2012-01-03 | Shopping.Com | Systems and methods for extracting information from structured documents |
WO2005024562A2 (en) * | 2003-08-11 | 2005-03-17 | Eloret Corporation | System and method for pattern recognition in sequential data |
WO2005124596A1 (en) * | 2004-06-18 | 2005-12-29 | Reel Two Limited | Data collection cataloguing and searching method and system |
US20070038381A1 (en) * | 2005-08-09 | 2007-02-15 | Melchior Timothy A | Efficient method for alignment of a polypeptide query against a collection of polypeptide subjects |
US8131722B2 (en) * | 2006-11-20 | 2012-03-06 | Ebay Inc. | Search clustering |
US8738486B2 (en) * | 2007-12-31 | 2014-05-27 | Mastercard International Incorporated | Methods and apparatus for implementing an ensemble merchant prediction system |
US7925652B2 (en) * | 2007-12-31 | 2011-04-12 | Mastercard International Incorporated | Methods and systems for implementing approximate string matching within a database |
US8666976B2 (en) * | 2007-12-31 | 2014-03-04 | Mastercard International Incorporated | Methods and systems for implementing approximate string matching within a database |
US7996369B2 (en) * | 2008-11-14 | 2011-08-09 | The Regents Of The University Of California | Method and apparatus for improving performance of approximate string queries using variable length high-quality grams |
KR20190100425A (ko) * | 2010-12-30 | 2019-08-28 | 파운데이션 메디신 인코포레이티드 | 종양 샘플의 다유전자 분석의 최적화 |
JP5710317B2 (ja) * | 2011-03-03 | 2015-04-30 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理装置、自然言語解析方法、プログラムおよび記録媒体 |
US9916538B2 (en) * | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
WO2013074781A1 (en) * | 2011-11-15 | 2013-05-23 | Ab Initio Technology Llc | Data clustering based on candidate queries |
EP2891099A4 (en) * | 2012-08-28 | 2016-04-20 | Broad Inst Inc | DETECTION OF VARIANTS IN SEQUENCING DATA AND CALIBRATION |
US9461876B2 (en) * | 2012-08-29 | 2016-10-04 | Loci | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction |
US9081076B2 (en) * | 2012-11-12 | 2015-07-14 | Isolynx, Llc | System and method for object tracking anti-jitter filtering |
US9665641B1 (en) * | 2013-04-09 | 2017-05-30 | Guangsheng Zhang | System, methods, and user interface for automated job search |
US9477748B2 (en) * | 2013-12-20 | 2016-10-25 | Adobe Systems Incorporated | Filter selection in search environments |
CN106133788B (zh) * | 2014-11-13 | 2019-11-12 | 华为技术有限公司 | 处理数字图像的图像处理装置 |
JP2016157290A (ja) * | 2015-02-25 | 2016-09-01 | 富士通株式会社 | 文書検索装置、文書検索方法、および文書検索プログラム |
US20180336311A1 (en) | 2015-11-11 | 2018-11-22 | Ofek-Eshkolot Research And Development Ltd | Restorable lossy compression method for similarity networks |
US11492672B2 (en) * | 2015-12-04 | 2022-11-08 | Biome Makers Inc. | Microbiome based identification, monitoring and enhancement of fermentation processes and products |
US10331677B1 (en) * | 2016-08-25 | 2019-06-25 | Dazah Holdings, LLC | Contextual search using database indexes |
US20180247016A1 (en) * | 2017-02-02 | 2018-08-30 | Seven Bridges Genomics Inc. | Systems and methods for providing assisted local alignment |
US10545960B1 (en) * | 2019-03-12 | 2020-01-28 | The Governing Council Of The University Of Toronto | System and method for set overlap searching of data lakes |
-
2018
- 2018-03-19 WO PCT/IL2018/050311 patent/WO2018173042A1/en unknown
- 2018-03-19 US US16/495,397 patent/US11250064B2/en active Active
- 2018-03-19 CN CN201880032748.6A patent/CN110892401B/zh active Active
- 2018-03-19 EP EP18770601.5A patent/EP3602350A4/en not_active Withdrawn
- 2018-03-19 KR KR1020237036301A patent/KR20230152172A/ko active Application Filing
- 2018-03-19 KR KR1020197030833A patent/KR102594625B1/ko active IP Right Grant
-
2022
- 2022-02-15 US US17/671,902 patent/US20220171815A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005010200A2 (en) * | 2003-07-15 | 2005-02-03 | Bioarray Solutions, Ltd. | Concurrent optimization in selection of primer and capture probe sets for nucleic acid analysis |
US20050089916A1 (en) * | 2003-10-28 | 2005-04-28 | Xiongwu Xia | Allele assignment and probe selection in multiplexed assays of polymorphic targets |
US20070067108A1 (en) * | 2005-03-03 | 2007-03-22 | Buhler Jeremy D | Method and apparatus for performing biosequence similarity searching |
US20150186471A1 (en) * | 2014-01-02 | 2015-07-02 | The George Washington University | System and method for approximate searching very large data |
CN105095522A (zh) * | 2015-09-22 | 2015-11-25 | 南开大学 | 基于最近邻搜索的关系表集合外键识别方法 |
Non-Patent Citations (6)
Title |
---|
AMIHOOD AMIR ET AL: "Faster algorithms for string matching with k mismatches" * |
AMIHOOD AMIR ET AL: "Faster algorithms for string matching with k mismatches", 《PROCEEDINGS OF THE ELEVENTH ANNUAL ACM-SIAM SYMPOSIUM ON DISCRETE ALGORITHMS》, pages 794 * |
LIM H ET AL: "Tuple Pruning Using Bloom Filter for Packet Classification", 《IEEE COMPUTER SOCIETY》, vol. 30, no. 3, 30 June 2010 (2010-06-30), pages 48 - 59, XP011309547 * |
冯加军 等: "基于计数型布隆过滤器的文本检索模型", 《计算机工程》, vol. 40, no. 2, 28 February 2014 (2014-02-28), pages 58 - 61 * |
张毫: "基于近似字符串理论的信息匹配方法研究与应用" * |
张毫: "基于近似字符串理论的信息匹配方法研究与应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》, vol. 2016, no. 03, pages 138 - 7979 * |
Also Published As
Publication number | Publication date |
---|---|
US20220171815A1 (en) | 2022-06-02 |
US11250064B2 (en) | 2022-02-15 |
EP3602350A1 (en) | 2020-02-05 |
US20200019571A1 (en) | 2020-01-16 |
KR102594625B1 (ko) | 2023-10-25 |
CN110892401B (zh) | 2024-09-24 |
KR20230152172A (ko) | 2023-11-02 |
EP3602350A4 (en) | 2021-01-27 |
WO2018173042A1 (en) | 2018-09-27 |
KR20190139227A (ko) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chikhi et al. | Data structures to represent a set of k-long DNA sequences | |
Kamal et al. | De-Bruijn graph with MapReduce framework towards metagenomic data classification | |
CN111801665B (zh) | 用于大数据应用的分层局部敏感哈希(lsh)分区索引 | |
KR101266358B1 (ko) | 다중 길이 시그니처 파일 기반 분산 색인 시스템 및 방법 | |
CN107403075B (zh) | 比对方法、装置及系统 | |
US10649997B2 (en) | Method, system and computer program product for performing numeric searches related to biometric information, for finding a matching biometric identifier in a biometric database | |
US8515961B2 (en) | Method and apparatus for indexing suffix tree in social network | |
US9589102B2 (en) | Base sequence cluster generating system, base sequence cluster generating method, program for performing cluster generating method, and computer readable recording medium on which program is recorded and system for providing base sequence information | |
US20150019592A1 (en) | Systems, methods and software for computing reachability in large graphs | |
US6735600B1 (en) | Editing protocol for flexible search engines | |
KR20220011055A (ko) | 해시 테이블 게놈 매핑을 위한 플렉시블 시드 확장 | |
CN108549696A (zh) | 一种基于内存计算的时间序列数据相似性查询方法 | |
CN110719106A (zh) | 一种基于节点分类排序的社交网络图压缩方法及系统 | |
CN115293919A (zh) | 面向社交网络分布外泛化的图神经网络预测方法及系统 | |
CN110471854B (zh) | 一种基于高维数据混合约简的缺陷报告指派方法 | |
US20220171815A1 (en) | System and method for generating filters for k-mismatch search | |
JP5980520B2 (ja) | 効率的にクエリを処理する方法及び装置 | |
CN110209895B (zh) | 向量检索方法、装置和设备 | |
US20200243162A1 (en) | Method, system, and computing device for optimizing computing operations of gene sequencing system | |
US20160117350A1 (en) | Column group selection method and apparatus for efficiently storing data in mixed olap/oltp workload environment | |
US20050112577A1 (en) | Rna sequence analyzer, and rna sequence analysis method, program and recording medium | |
Rossignolo et al. | USTAR: Improved compression of k-mer sets with counters using de Bruijn graphs | |
CN118093659B (zh) | 基于三输入网络与制高点树的数据库高维数据查询方法 | |
Lehotay-Kéry et al. | GenPress: A Novel Dictionary Based Method to Compress DNA Data of Various Species | |
Warnke-Sommer et al. | Parallel NGS assembly using distributed assembly graphs enriched with biological knowledge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |