一种最小距离字符串计算查找方法

文档序号:10553383阅读:427来源:国知局
一种最小距离字符串计算查找方法
【专利摘要】本发明公开了一种最小距离字符串计算查找方法。本方法为:1)判断判断字符串集合是否满足加速条件,如果满足,则计算该字符串集合中任意两字符串之间的距离,得到加速索引;2)从该字符串集合中找到与待计算字符串t最相似的字符串t’并计算两者之间的距离D(t,t’);然后根据该加速索引判断该字符串集合中的字符串是否满足D(t’,r)≥2D(t,t’);如果满足,则淘汰字符串r;3)根据步骤2)处理结果,确定出与该字符串t距离最小的字符串。本方法大大提高了查找效率。
【专利说明】
一种最小距离字符串计算查找方法
技术领域
[0001] 本发明涉及字符串匹配领域,尤其涉及一种最小距离字符串计算查找方法,该发 明考虑了大数据给字符串匹配带来的性能挑战问题,提出可以明显提升字符串距离计算速 度的加速方法。
【背景技术】
[0002] 字符串距离的计算一直以来都是各个领域研究的重点,由于重复内容普遍存在, 且表现出一定的复杂性,对各类领域的研究都起到了很大的影响。字符串距离通常被用来 计算字符串的相似性,通过字符串相似性计算,可以用于数据清洗、数据分析等各个方面。
[0003] 互联网的高速发展产生了海量的数据内容,大数据分析引起了各个领域专家人士 的注意。提高大数据环境下的字符串距离计算速度,对于各个业务的支撑都起到了重要的 作用。字符串距离计算的优化对于恶意域名检测系统、抄袭检测系统、搜索引擎等领域都有 着重大的影响。
[0004] 字符串的距离计算方法有多种,例如编辑距离算法(Levenshtein Distance),最 长公共子串算法(Longest Common Subsequences,LCS)等。
[0005] 所以,如何对相应的算法进行加速,使之适应于海量数据处理的场景,仍有很大的 研究价值。
[0006] 目前有各种各样的字符串距离计算方法,但是这些方法大多工作在实验环境之 下,缺乏对海量数据场景的支持。如果将其移植到海量数据中,计算速度将成为分析的瓶 颈。本发明,一种最小字符串距离计算的加速方法,考虑了海量数据处理的情况,提出了一 种加速最小字符串距离计算的方法,对于指定的字符串,可以从待计算的数据集合中快速 寻找出与之距离最小的字符串。

【发明内容】

[0007] 本发明的目的在于提供一种最小距离字符串计算查找方法,考虑了海量数据处理 的情况,对于指定的字符串,可以从待计算的数据集合中寻找出与之距离最小的字符串,并 且使计算速度较之前的算法有很大程度的提高。
[0008] 本发明的技术关键点在于:
[0009] 1.构建字符串集合
[0010] 对于一个已有的字符串集合,加速算法将从中快速计算出与待计算字符串最相似 的字符串所对应的最小距离值。
[0011 ]比如,需要进行加速的字符串集合为{aaa,aaa,ccc,ddd,eee},待计算的字符串为 aa,加速算法能够快速从字符串集合中找到最相似的字符串aaa所对应的最小距离,即aa与 aaa的距离,最终返回的结果是距离。
[0012]所以,字符串集合中的字符串是可以重复出现的,最后只返回与最相似的字符串 的距离。而待检测的字符串,可能出现在字符串集合中,也可能没有出现。
[0013] 2.判断字符串距离计算算法是否可以加速
[0014]加速算法的使用需要满足以下条件,s、r、t是字符串集合中的任意字符串:
[0015] a)D(s,t)彡0
[0016] b)D(s,s)=0
[0017] c)D(s,t)=D(t,s)
[0018] d)D(s,t)^;D(s,r)+D(r,t)
[0019] 示意图如图1所示,"X"表示淘汰s;"V"表示不淘汰;"W"表示字符串集合;加速索 引为预先计算好的中间结果,计算方式为:对于待计算的字符串t,r作为局部敏感哈希"跳 板",根据加速索弓丨,由于〇( 8,〇 = 30(1〇彡0(11!) = 1.20(1〇,所以可以"淘汰"字符串 8,而无需进行计算0(1:,8)。
[0020] 3.构建加速索引
[0021] 加速索引为预先计算好的中间结果,计算方式为:对于集合中的字符串,两两计算 其字符串距离并存储。
[0022] 4.使用加速算法,并引入局部敏感哈希
[0023]对于待计算的字符串t,如果集合中的字符串满足D(s,r)彡2D(r,t),贝lj"淘汰" s。 在遍历集合时,使用局部敏感哈希算法来依次选择与t距离最接近的字符串进行计算。 [0024]本发明提供的一种最小字符串距离计算的加速方法,该方法的流程图如图2所示, 其主要步骤包括:
[0025] 1.构建字符串集合,计算算法将会从构建的字符串集合中找到与待计算字符串的 最小距离;
[0026] 2.判定字符串距离计算算法是否可以适用加速算法进行加速;
[0027] 3.如果2成立,则根据加速索引,加速索引为预先计算好的中间结果,为加速算法 提供数据支撑;
[0028] 4.使用加速算法进行加速,为了进一步提升加速的效果,引入局部敏感哈希函数, 辅助加速算法选择最优的跳板进行计算。
[0029] 与现有技术相比,本发明的积极效果为:
[0030] 1.该加速方法普适性强,可以与现有的字符串距离计算方法进行结合,只要字符 串距离满足上述的四个条件,即可进行加速;
[0031] 2.该加速方法不局限于某种字符串距离计算方法;
[0032] 3.该加速方法可以与现有的局部敏感哈希算法结合,通过选择更好的跳板可以进 一步提升加速效果;
[0033] 4.该加速方法模型简单,易实现。
【附图说明】
[0034]图1为判断字符串距离计算算法是否可以加速示意图;
[0035]图2为本发明方法流程图。
【具体实施方式】
[0036]下面结合附图和实施例对本发明进行进一步详细描述。
[0037]实例 1:
[0038]还是以编辑距离为例,字符串集合为:{ aaaaa,bb,cc, aaaab},待计算的字符串为 &&&& 〇
[0039] 1 ?首先,构建字符串集合:{aaaaa,bb,cc,aaaab}
[0040] 2.可以证明编辑距离满足以下条件,其中s、r、t为字符串集合中的任意字符串: [0041 ] a)D(s,t)多 0
[0042] b)D(s,s)=0
[0043] c)D(s,t)=D(t,s)
[0044] d)D(s,t)^;D(s,r)+D(r,t)
[0045]所以,编辑距离是可以加速的。
[0046] 3.构建加速索引
[0047] 索引有6个兀素,{aaaaa,bb,5},{aaaaa,cc,5},{aaaaa,aaaab,1},{bb,cc,2}, {bb,aaaab,4},{cc,aaaab,5}
[0048] 4.使用该算法
[0049] 对于一个待计算的字符串:aaaa
[0050] 根据局部敏感哈希算法,会从{aaaaa,bb,cc, aaaab}中选择一个和aaaa尽可能相 似的字符串,这里选择的是aaaaa。
[0051] 然后可以计算出aaaaa和aaaa的编辑距离,这里是1。
[0052] 通过已经构建好的索引,{aaaaa,bb,5},{aaaaa,cc,5},{aaaaa,aaaab,1},{bb, cc,2},{bb,aaaab,4},{cc,aaaab,5}。可以知道:D(aaaaa,aaaa) = 1,D(aaaaa,bb) = 5。因为 D(aaaaa,bb)>2D(aaaaa,aaaa),所以可以淘汰bb。同理也可以淘汰cc。这样还剩aaaaa和 clclclclb ?已经计算得到D ( £l£l£l£l£l,£l£l£l£l) - 1,然后计算D ( £l£l£l£lb,£l£l£l£l) - D ( clclclclcl, clclclcl) - 1, 样就通过2次计算得到了最小的距离1。
[0053]实例2-种最小字符串距离计算的加速方法 [0054]以编辑距离为例,加速该字符串距离计算方法:
[0055] 1.构建字符串集合,准备大量的字符串以待计算。
[0056] 2.然后,判断字符串距离计算算法是否可以加速
[0057] 编辑距离递推公式为: ' £)(/-1,./)十1
[0058] D(i, j) - min? D(/" /-1) + 1 -1, / -!) + (.s'/r[/] == dest[ j]l0 ?!)
[0059]其中,D表示给定的两个字符串src和dest的编辑距离,i表示字符串src的第i个字 符,j
[0060]表示字符串dest的第j个字符。
[00611可以证明编辑距离满足以下条件:
[0062] a)D(s,t)^0
[0063] b)D(s, s) =0
[0064] c)D(s,t)=D(t,s)
[0065] d)D(s,t)^;D(s,r)+D(r,t)
[0066]所以,可以使用加速算法进行加速。
[0067] 3.构建加速索引
[0068]当证明以上条件符合时,对于集合中的字符串,两两计算其编辑距离并存储。
[0069] 4.使用加速算法,并引入局部敏感哈希
[0070] 对于待计算的字符串t,使用Simhash (-种局部敏感哈希算法)来选择跳板,然后 不断计算集合中的字符串与t的距离。期间会不断"淘汰"大量的字符串,即减少了大量计 算,最终可以得到最小的字符串距离。
[0071 ]加速算法伪代码如下:
【主权项】
1. 一种最小距离字符串计算查找方法,其步骤为: 1) 对于一字符串集合,判断判断该字符串集合是否满足加速条件,如果满足,则计算该 字符串集合中任意两字符串之间的距离,将得到的结果作为加速索引; 2) 对于待计算的字符串t,从该字符串集合中找到与字符串t最相似的字符串t'并计算 两者之间的距离D(t,t');然后根据该加速索引判断该字符串集合中的字符串是否满足D (七',〇彡20^〇;如果满足,则淘汰字符串^ 3) 根据步骤2)处理结果,确定出与该字符串t距离最小的字符串:如果淘汰后仅剩字符 串t',则t'为与该字符串t距离最小的字符串,如果剩余多个字符串,则分别计算字符串t与 每一剩余的字符串的距离,选取距离最小的字符串。2. 如权利要求1所述的方法,其特征在于,所述加速条件为D(s,t)多0、D(s,s) = O、D(s, 〇=0^8)、0(8,〇彡0(8^)+0&3);其中, 8^4均为字符串集合中的任意字符串,0〇表 示两字符串之间的距离。3. 如权利要求1或2所述的方法,其特征在于,采用局部敏感哈希算法从该字符串集合 中找到与字符串t最相似的字符串t'。
【文档编号】G06K9/62GK105913094SQ201610286111
【公开日】2016年8月31日
【申请日】2016年5月3日
【发明人】柳厅文, 张洋, 亚静, 李全刚, 时金桥, 郭莉
【申请人】中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1