一种字符串匹配方法及装置与流程

文档序号:18009887发布日期:2019-06-25 23:52阅读:169来源:国知局
一种字符串匹配方法及装置与流程

本申请涉及金融技术领域,特别涉及一种字符串匹配方法及装置。



背景技术:

在实时反欺诈等风控领域,在交易发起后,需在给定的可疑集合(如,公安部公布的涉恐名单、最高法公布的失信名单、银行大数据生成的欺诈可疑名单)中对交易部分关键信息(如姓名等)进行匹配,并及时返回匹配得分情况,便于风险评估。

但是,可疑集合中的可疑信息往往在百万条以上,需要遍历可疑集合中的可疑信息进行匹配,所需时间较长,影响交易效率。



技术实现要素:

为解决上述技术问题,本申请实施例提供一种字符串匹配方法及装置,以达到缩短匹配时间,提高交易效率的目的,技术方案如下:

一种字符串匹配方法,包括:

分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引;

获取待匹配字符串,并将所述待匹配字符串切分为目标长度的字符,作为目标字符;

分别计算各个所述目标字符的哈希索引;

在所述键值对中关键字的哈希索引中判断是否存在与所述目标字符的哈希索引相同的哈希索引;

若存在,则确定匹配成功;

若不存在,则调整所述目标长度,并返回执行将所述目标字符串切分为目标长度的字符,作为目标字符的步骤,直至所述目标长度小于设定值。

优选的,所述分别构建可疑集合中各个字符串的键值对,包括:

分别去除所述可疑集合中各个字符串中的干扰元素,并将去除干扰元素的字符串作为目标字符串;

分别构建各个所述目标字符串的键值对;

所述获取待匹配字符串之后,还包括:

去除所述待匹配字符串中的干扰元素。

优选的,所述分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引,包括:

加载所述可疑集合至redis中;

在所述redis中分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引。

优选的,所述将所述待匹配字符串切分为目标长度的字符,包括:

利用所述目标长度的滑动窗口,按照设定大小的步长在所述待匹配字符串中滑动,将所述待匹配字符串切分为目标长度的字符。

一种字符串匹配装置,包括:

第一计算模块,用于分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引;

切分模块,用于获取待匹配字符串,并将所述待匹配字符串切分为目标长度的字符,作为目标字符;

第二计算模块,用于分别计算各个所述目标字符的哈希索引;

判断模块,用于在所述键值对中关键字的哈希索引中判断是否存在与所述目标字符的哈希索引相同的哈希索引,若存在,则执行第二确定模块,若不存在,则执行调整模块;

所述第一确定模块,用于确定匹配成功;

所述调整模块,用于调整所述目标长度,并返回执行所述切分模块将所述目标字符串切分为目标长度的字符,作为目标字符,直至所述目标长度小于设定值。

优选的,所述第一计算模块,包括:

第一去除子模块,用于分别去除所述可疑集合中各个字符串中的干扰元素,并将去除干扰元素的字符串作为目标字符串;

第一构建子模块,用于分别构建各个所述目标字符串的键值对;

所述切分模块,包括:

第二去除子模块,用于获取待匹配字符串之后,去除所述待匹配字符串中的干扰元素。

优选的,所述第一计算模块,包括:

加载子模块,用于加载所述可疑集合至redis中;

计算子模块,用于在所述redis中分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引。

优选的,所述切分模块,包括:

切分子模块,用于利用所述目标长度的滑动窗口,按照设定大小的步长在所述待匹配字符串中滑动,将所述待匹配字符串切分为目标长度的字符。

与现有技术相比,本申请的有益效果为:

在本申请中,基于哈希查找的原则,构建可疑集合中字符串的键值对中关键字的哈希索引,以及待匹配字符串切分后的目标字符的哈希索引,在针对可疑集合构建的哈希索引中判断是否存在与目标字符的哈希索引相同的哈希索引来进行字符串匹配。由于在针对可疑集合构建的哈希索引中判断是否存在与目标字符的哈希索引相匹配的哈希索引时,不需要遍历即可直接确定是否存在与目标字符的哈希索引相匹配的哈希索引,因此可以缩短匹配时间,提高交易效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请提供的一种字符串匹配方法的流程图;

图2是本申请提供的另一种字符串匹配方法的流程图;

图3是本申请提供的一种字符串匹配装置的逻辑结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例公开了一种字符串匹配方法,包括:分别构建可疑集合中各个字符串的键值对,并分别构建各个所述键值对中关键字的哈希索引;获取待匹配字符串,并将所述待匹配字符串切分为目标长度的字符,作为目标字符;分别构建各个所述目标字符的哈希索引;在所述键值对中关键字的哈希索引中判断是否存在与所述目标字符的哈希索引相同的哈希索引;若存在,则确定匹配成功;若不存在,则调整所述目标长度,并返回执行将所述目标字符串切分为目标长度的字符,作为目标字符的步骤,直至所述目标长度小于设定值。在本申请中,可以缩短匹配时间,提高交易效率。

接下来对本申请实施例公开的字符串匹配方法进行介绍,请参见图1,可以包括:

步骤s11、分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引。

本实施例中,构建可疑集合中各个字符串的键值对的过程可以包括:

从字符串中提取关键信息,作为关键字;

将字符串作为值;

将关键字与值的对应关系作为键值对。

计算各个键值对中关键字的哈希索引的方式可以参见现有技术中利用哈希函数计算哈希值的过程,在此不再赘述。

本实施例中,分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引的过程可以包括:

加载所述可疑集合至redis中;

在所述redis中分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引。

加载所述可疑集合至redis中,可以提高构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引的便捷性,提高效率。

步骤s12、获取待匹配字符串,并将所述待匹配字符串切分为目标长度的字符,作为目标字符。

本实施例中,将待匹配字符串切分为目标长度的字符,可以适应包含的匹配关系,提高匹配准确性。

优选的,目标长度的最大值设置为可疑集合中字符串的键值对中的最长关键字的长度。在目标长度等于可疑集合中字符串的键值对中的最长关键字的长度,且目标长度大于待匹配字符串的情况下,不对待匹配字符串进行切分。

本实施例中,并不限制将所述待匹配字符串切分为目标长度的字符的方式,优选的,可以利用所述目标长度的滑动窗口,按照设定大小的步长在所述待匹配字符串中滑动,将所述待匹配字符串切分为目标长度的字符。

步骤s13、分别计算各个所述目标字符的哈希索引。

本步骤中采用与步骤s11中计算各个键值对中关键字的哈希索引时相同的哈希函数,计算各个目标字符的哈希索引,保证哈希索引查找的准确性。

步骤s14、在所述键值对中关键字的哈希索引中判断是否存在与所述目标字符的哈希索引相同的哈希索引。

在针对可疑集合构建的哈希索引中判断是否存在与目标字符的哈希索引相同的哈希索引时,不需要遍历即可直接确定是否存在与目标字符的哈希索引相同的哈希索引。

若存在,则执行步骤s15;若不存在,则执行步骤s16。

步骤s15、确定匹配成功。

在匹配成功后,可以继续判断与目标字符的哈希索引相匹配的哈希索引对应的记录与目标字符是否相匹配,来验证并进一步保证匹配结果的准确性。

步骤s16、调整所述目标长度,并返回执行将所述目标字符串切分为目标长度的字符,作为目标字符的步骤,直至所述目标长度小于设定值。

在步骤s14判断出存在与所述目标字符的哈希索引相同的哈希索引的基础上,可以调整目标长度,在调整目标长度之后,返回执行将所述目标字符串切分为目标长度的字符,作为目标字符的步骤,直至所述目标长度小于设定值。

优选的,设定值可以设置为2。

直至目标长度小于设定值时,若所述键值对中关键字的哈希索引中不存在与所述目标字符的哈希索引相同的哈希索引,则可以确定匹配失败。

现举例对调整目标长度,并返回执行将所述目标字符串切分为目标长度的字符,作为目标字符的步骤,直至所述目标长度小于设定值的过程进行说明,例如,待匹配字符串为金易融网络科技,可疑集合中存在字符串金易融,设定目标长度的最大值为5,由k表示,对金易融网络科技切分成的目标长度的字符可以参见表1。

表1

如,表1所示,将目标长度设置为5时,可以将金易融网络科技切分为金易融网络、易融网络科、融网络科技,这种情况下,可疑集合的哈希索引中不存在与目标字符的哈希索引相同的哈希索引,因此调整目标长度为4,将金易融网络科技切分为金易融网、易融网络、融网络科、网络科技,这种情况下,可疑集合的哈希索引中仍不存在与目标字符的哈希索引相同的哈希索引,因此调整目标长度为3,将金易融网络科技切分为金易融、易融网、融网络、网络科、络科技,这种情况下,可疑集合的哈希索引中存在与目标字符的哈希索引相同的哈希索引,可以停止调整目标长度,并结束匹配过程。

如表1所示,在最坏的情况下,切分的字符的总个数为1+(n-k+1)+(n-k+2)+(n-k+3)...(n-k+(k-r+1))=(k-r)(n-k)+(k-r+1)(k-r+2)/2<kn<n*n,匹配运算次数仅为n*n次,相比于百万次的匹配次数,匹配次数大大减少,缩短了匹配时间。

在本申请中,基于哈希查找的原则,构建可疑集合中字符串的键值对中关键字的哈希索引,以及待匹配字符串切分后的目标字符的哈希索引,在针对可疑集合构建的哈希索引中判断是否存在与目标字符的哈希索引相同的哈希索引来进行字符串匹配。由于在针对可疑集合构建的哈希索引中判断是否存在与目标字符的哈希索引相匹配的哈希索引时,不需要遍历即可直接确定是否存在与目标字符的哈希索引相匹配的哈希索引,因此可以缩短匹配时间,提高交易效率。

在本申请的另一个实施例中,介绍另外一种字符串匹配方法,请参见图2,可以包括:

步骤s21、分别去除所述可疑集合中各个字符串中的干扰元素,并将去除干扰元素的字符串作为目标字符串。

干扰元素可以包括:干扰词和标点符号等。如,金易融公司中的公司为干扰词,将其去除;本·拉登中的符号“·”为干扰元素,将其去除。

去除可疑集合中各个字符串中的干扰元素,可以提高匹配的效率及准确性。

步骤s22、分别构建各个所述目标字符串的键值对。

构建各个目标字符串的键值对的过程可以参见前述实施例中步骤s11构建可疑集合中各个字符串的键值对的过程,在此不再赘述。

步骤s23、获取待匹配字符串,去除所述待匹配字符串中的干扰元素,并将去除干扰元素的待匹配字符串切分为目标长度的字符,作为目标字符。

与可疑集合中字符串进行去除干扰元素的实施方式相对应,在获取待匹配字符串之后,去除待匹配字符串中的干扰元素,以保证字符处理的一致性。

步骤s24、分别计算各个所述目标字符的哈希索引。

步骤s25、在所述键值对中关键字的哈希索引中判断是否存在与所述目标字符的哈希索引相同的哈希索引。

若存在,则执行步骤s26;若不存在,则执行步骤s27。

步骤s26、确定匹配成功。

步骤s27、调整所述目标长度,并返回执行将所述目标字符串切分为目标长度的字符,作为目标字符的步骤,直至所述目标长度小于设定值。

步骤s24-s27与前述实施例中的步骤s13-s16相同,步骤s24-s27的详细过程可以参见步骤s13-s16的相关介绍,在此不再赘述。

接下来对本申请提供的字符串匹配装置进行介绍,下文介绍的字符串匹配装置与上文介绍的字符串匹配方法可相互对应参照。

请参见图3,字符串匹配装置包括:第一计算模块11、切分模块12、第二计算模块13、判断模块14、第一确定模块15和调整模块16。

第一计算模块11,用于分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引。

切分模块12,用于获取待匹配字符串,并将所述待匹配字符串切分为目标长度的字符,作为目标字符。

第二计算模块13,用于分别计算各个所述目标字符的哈希索引。

判断模块14,用于在所述键值对中关键字的哈希索引中判断是否存在与所述目标字符的哈希索引相同的哈希索引,若存在,则执行第二确定模块,若不存在,则执行调整模块。

所述第一确定模块15,用于确定匹配成功。

所述调整模块16,用于调整所述目标长度,并返回执行所述切分模块将所述目标字符串切分为目标长度的字符,作为目标字符,直至所述目标长度小于设定值。

本实施例中,第一计算模块11,可以包括:

第一去除子模块,用于分别去除所述可疑集合中各个字符串中的干扰元素,并将去除干扰元素的字符串作为目标字符串;

第一构建子模块,用于分别构建各个所述目标字符串的键值对。

相应地,切分模块,可以包括:

第二去除子模块,用于获取待匹配字符串之后,去除所述待匹配字符串中的干扰元素。

本实施例中,第一计算模块11,可以包括:

加载子模块,用于加载所述可疑集合至redis中;

计算子模块,用于在所述redis中分别构建可疑集合中各个字符串的键值对,并分别计算各个所述键值对中关键字的哈希索引。

本实施例中,切分模块12,可以包括:

切分子模块,用于利用所述目标长度的滑动窗口,按照设定大小的步长在所述待匹配字符串中滑动,将所述待匹配字符串切分为目标长度的字符。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

以上对本申请所提供的一种字符串匹配方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1