掌桥专利:专业的专利平台
掌桥专利
首页

一种基于二叉搜索树的单词匹配方法及装置

文献发布时间:2023-06-19 18:37:28


一种基于二叉搜索树的单词匹配方法及装置

技术领域

本发明涉及人工智能领域,更具体的,涉及一种基于二叉搜索树的单词匹配方法及装置。

背景技术

数据匹配技术用于比较两个或多个记录,并计算他们属于同一实体的可能性。数据匹配应用于单词匹配时,用于判断两个单词究竟在多大程度上相似,其广泛应用于制裁名单筛查、搜索引擎关键词匹配等领域。

目前的单词匹配方法众多,但匹配速度不够高,精准度存在偏差,尤其是应用到海量数据匹配时,无法满足用户对匹配速度和准确性的要求。

发明内容

有鉴于此,本发明提供了一种基于二叉搜索树的单词匹配方法及装置,有效提高了单词匹配的速度和准确性。

为了实现上述发明目的,本发明提供的具体技术方案如下:

一种基于二叉搜索树的单词匹配方法,包括:

确定目标单词与候选单词;

构建所述目标单词或所述候选单词对应的二叉搜索树;

根据所述二叉搜索树查找所述目标单词与所述候选单词之间相同字母的数量;

依据所述目标单词与所述候选单词之间相同字母的数量,计算所述目标单词与所述候选单词之间的相似度;

根据所述目标单词与所述候选单词之间的相似度,确定所述候选单词是否为与所述目标单词相匹配的单词。

可选的,构建所述目标单词或所述候选单词对应的二叉搜索树,包括:

分别提取所述目标单词A与所述候选单词B中的重复字母A-和B-,得到所述目标单词的剩余字符串A+与所述候选单词的剩余字符串B+;

根据字母数值对照表,分别将A+和B+转化为数值序列,得到A+对应的A+数值序列以及B+对应的B+数值序列;

构建A+数值序列与B+数值序列中最短数值序列对应的第一二叉搜索树。

可选的,根据所述二叉搜索树查找所述目标单词与所述候选单词之间相同字母的数量,包括:

查询所述第一二叉搜索树中是否包含A+数值序列与B+数值序列中最长数值序列中的数值;

若包含,确定所述第一二叉搜索树中包含的A+数值序列与B+数值序列中最长数值序列中的数值的数量Y

判断A-和B-是否为空;

若A-和B-中至少一个为空,将Y

可选的,若A-和B-都不为空,所述方法还包括:

分别提取A-和B-中的重复字母A--和B--,得到A-的剩余字符串A-+与B-的剩余字符串B-+;

根据字母数值对照表,分别将A-+和B-+转化为数值序列,得到A-+对应的A-+数值序列以及B-+对应的B-+数值序列;

构建A-+数值序列与B-+数值序列中最短数值序列对应的第二二叉搜索树;

查询所述第二二叉搜索树中是否包含A-+数值序列与B-+数值序列中最长数值序列中的数值;

若包含,确定所述第二二叉搜索树中包含的A-+数值序列与B-+数值序列中最长数值序列中的数值的数量Y

判断A--和B--是否为空;

若A--和B--中至少一个为空,将(Y

若A--和B--都不为空,分别提取A--和B--中的重复字母A---和B---,直到提取到的重复字母中至少一个为空。

可选的,依据所述目标单词与所述候选单词中相同字母的数量,计算所述目标单词与所述候选单词之间的相似度,包括:

根据所述目标单词与所述候选单词的长度以及所述目标单词与所述候选单词中相同字母的数量,计算所述目标单词与所述候选单词之间的单词距离;

确定所述目标单词与所述候选单词中的最小单词长度;

计算所述单词距离与所述最小单词长度的比值,并将1与该比值的差值确定为所述目标单词与所述候选单词之间的相似度。

一种基于二叉搜索树的单词匹配装置,包括:

单词确定单元,用于确定目标单词与候选单词;

二叉树构建单元,用于构建所述目标单词或所述候选单词对应的二叉搜索树;

相同字母数量查找单元,用于根据所述二叉搜索树查找所述目标单词与所述候选单词之间相同字母的数量;

相似度计算单元,用于依据所述目标单词与所述候选单词之间相同字母的数量,计算所述目标单词与所述候选单词之间的相似度;

单词匹配单元,用于根据所述目标单词与所述候选单词之间的相似度,确定所述候选单词是否为与所述目标单词相匹配的单词。

可选的,所述二叉树构建单元,具体用于:

分别提取所述目标单词A与所述候选单词B中的重复字母A-和B-,得到所述目标单词的剩余字符串A+与所述候选单词的剩余字符串B+;

根据字母数值对照表,分别将A+和B+转化为数值序列,得到A+对应的A+数值序列以及B+对应的B+数值序列;

构建A+数值序列与B+数值序列中最短数值序列对应的第一二叉搜索树。

可选的,所述相同字母数量查找单元,具体用于:

查询所述第一二叉搜索树中是否包含A+数值序列与B+数值序列中最长数值序列中的数值;

若包含,确定所述第一二叉搜索树中包含的A+数值序列与B+数值序列中最长数值序列中的数值的数量Y

判断A-和B-是否为空;

若A-和B-中至少一个为空,将Y

可选的,所述相同字母数量查找单元,还用于:

若A-和B-都不为空,分别提取A-和B-中的重复字母A--和B--,得到A-的剩余字符串A-+与B-的剩余字符串B-+;

根据字母数值对照表,分别将A-+和B-+转化为数值序列,得到A-+对应的A-+数值序列以及B-+对应的B-+数值序列;

构建A-+数值序列与B-+数值序列中最短数值序列对应的第二二叉搜索树;

查询所述第二二叉搜索树中是否包含A-+数值序列与B-+数值序列中最长数值序列中的数值;

若包含,确定所述第二二叉搜索树中包含的A-+数值序列与B-+数值序列中最长数值序列中的数值的数量Y

判断A--和B--是否为空;

若A--和B--中至少一个为空,将(Y

若A--和B--都不为空,分别提取A--和B--中的重复字母A---和B---,直到提取到的重复字母中至少一个为空。

可选的,所述相似度计算单元,具体用于:

根据所述目标单词与所述候选单词的长度以及所述目标单词与所述候选单词中相同字母的数量,计算所述目标单词与所述候选单词之间的单词距离;

确定所述目标单词与所述候选单词中的最小单词长度;

计算所述单词距离与所述最小单词长度的比值,并将1与该比值的差值确定为所述目标单词与所述候选单词之间的相似度。

相对于现有技术,本发明的有益效果如下:

本发明公开的一种基于二叉搜索树的单词匹配方法及装置,通过构建目标单词或候选单词对应的二叉搜索树,利用二叉搜索树能实现数组快速查找的优势,快速、准确的查找目标单词与候选单词之间相同字母的数量,从而依据目标单词与候选单词之间相同字母的数量,计算目标单词与候选单词之间的相似度,根据目标单词与候选单词之间的相似度,确定候选单词是否为与目标单词相匹配的单词,有效提高了单词匹配的速度和准确性。

附图说明

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

图1为本发明实施例公开的一种基于二叉搜索树的单词匹配方法的流程示意图;

图2为本发明实施例公开的一种二叉搜索树示意图;

图3为本发明实施例公开的A+数值序列对应的二叉搜索树示意图;

图4为本发明实施例公开的A-+数值序列对应的二叉搜索树示意图;

图5为本发明实施例公开的一种基于二叉搜索树的单词匹配装置的结构示意图。

具体实施方式

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

本发明实施例公开了一种基于二叉搜索树的单词匹配方法,可应用于各种单词匹配场景,包括精确匹配和模糊匹配,如制裁名单筛查、搜索引擎关键词匹配等,请参阅图1,该方法包括以下步骤:

S101:确定目标单词与候选单词;

确定目标单词的一种可选的方式为将输入到检索框中的单词确定为目标单词。

候选单词为数据库等数据源中的单词,候选单词为一个或一个以上,匹配的目的在于从候选单词中找到与目标单词的相似度满足要求的单词。

S102:构建目标单词或候选单词对应的二叉搜索树;

二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值,图2为二叉搜索树的一种示例,它的左、右子树也分别为二叉搜索树。

为了减少计算量,构建目标单词和候选单词中最小长度单词对应的二叉搜索树。

S103:根据二叉搜索树查找目标单词与候选单词之间相同字母的数量;

通过S102构建二叉搜索树、查询、迭代的方式查找两个单词之间的相同字母。

进一步,若目标单词和候选单词中存在重复字母,需要分别提取目标单词A与候选单词B中的重复字母A-和B-,得到目标单词的剩余字符串A+与候选单词的剩余字符串B+;

由于构建二叉搜索树的过程中需要对数值进行大小比对,因此需要根据字母数值对照表(26个英文字母分别对应1~26),分别将A+和B+转化为数值序列,得到A+对应的A+数值序列以及B+对应的B+数值序列;

构建A+数值序列与B+数值序列中最短数值序列对应的第一二叉搜索树。

查询第一二叉搜索树中是否包含A+数值序列与B+数值序列中最长数值序列中的数值;

若包含,确定第一二叉搜索树中包含的A+数值序列与B+数值序列中最长数值序列中的数值的数量Y

判断A-和B-是否为空;

若A-和B-至少一个为空,将Y

若A-和B-都不为空,分别提取A-和B-中的重复字母A--和B--,得到A-的剩余字符串A-+与B-的剩余字符串B-+;

根据字母数值对照表,分别将A-+和B-+转化为数值序列,得到A-+对应的A-+数值序列以及B-+对应的B-+数值序列;

构建A-+数值序列与B-+数值序列中最短数值序列对应的第二二叉搜索树;

查询第二二叉搜索树中是否包含A-+数值序列与B-+数值序列中最长数值序列中的数值;

若包含,确定第二二叉搜索树中包含的A-+数值序列与B-+数值序列中最长数值序列中的数值的数量Y

判断A--和B--是否为空:

若A--和B--至少一个为空,将(Y

若A--和B--都不为空,分别提取A--和B--中的重复字母A---和B---,直到提取到的重复字母中至少一个为空。

需要说明的是,取出目标单词与候选单词中的重复字母可以避免建立二叉搜索树的过程中数值结点在树中位置的不确定性。

S 104:依据目标单词与候选单词之间相同字母的数量,计算目标单词与候选单词之间的相似度;

具体的,首先,根据目标单词与候选单词的长度以及目标单词与候选单词中相同字母的数量,计算目标单词与候选单词之间的单词距离;

然后,确定目标单词与候选单词中的最小单词长度;

最后,计算单词距离与最小单词长度的比值,并将1与该比值的差值确定为目标单词与候选单词之间的相似度。

单词距离的计算方式为:

Y(A,B)=(L(A)-(Y

对应的相似度为:

另外,还可以利用Levenshtein算法计算单词距离,Levenshtein距离D(A,B)是指两个字符串之间,由一个转成另一个所需的最少编辑操作(替换、插入、删除)次数,对应的单词之间的相似度如下:

相似度:

其中,L(A)为单词A的长度,L(B)为单词B的长度,L(A,B)为单词A与单词B中的最小单词长度。

本方法比较注重字母的重复,而Levenshtein算法则更加注重字母的顺序。

表1 Levenshtein算法与本方法的比较

S105:根据目标单词与候选单词之间的相似度,确定候选单词是否为与目标单词相匹配的单词。

具体的,在目标单词与候选单词之间的相似度大于阈值的情况下,确定候选单词与目标单词相匹配,反之则不匹配,阈值可以根据实际应用场景预先设定。

可见,本实施例公开的一种基于二叉搜索树的单词匹配方法,通过构建目标单词或候选单词对应的二叉搜索树,利用二叉搜索树能实现数组快速查找的优势,快速、准确的查找目标单词与候选单词之间相同字母的数量,从而依据目标单词与候选单词之间相同字母的数量,计算目标单词与候选单词之间的相似度,根据目标单词与候选单词之间的相似度,确定候选单词是否为与目标单词相匹配的单词,有效提高了单词匹配的速度和准确性。

需要说明的是,二叉搜索树是一种经典的数据结构,在查找时不需要从左到右依次遍历,而可以根据数值与根结点的大小比对快速往下走左子树或右子树,可以省去一半时间,因此其具有快速查找的优点,时间复杂度更低,时间复杂度约为O(nlog(n))。

以目标单词A为commit,候选单词B为committee为例:

由于单词A与单词B都不为空,将单词A与单词B各自的重复字母取出,取出部分为A-:m,B-:mte,剩余部分为A+:comit,B+:comite。

针对A+与B+,根据字母数值对照表,将其转化为A+数值序列:3 15 13 9 20,B+数值序列:3 15 13 9 20 5。

由于A+数值序列长度较短,建立A+数值序列对应的二叉搜索树,如图3所示。

对B+,依次查询二叉搜索树中是否包含B+数值序列:3 15 13 9 20 5中的数值,可以发现二叉搜索树中包含B+数值序列中所有数值,即二叉搜索树中包含B+数值序列中数值数量Y

由于A-与B-都不为空,将单词A-与单词B-各自的重复字母取出,取出部分为A--:空,B--:空,剩余部分为A-+:m,B-+:mte。

针对A-+与B-+,根据字母数值对照表,将其转化为数值序列A-+:13,数值序列B-+:13 20 5。

由于A-+长度较短,建立A-+对应的二叉搜索树,如图4所示。

依次查询该二叉搜索树中是否包含数值序列B-+:13 20 5,可以发现二叉搜索树中包含B-+数值序列中的数值13,即二叉搜索树中包含B-+数值序列中数值数量Y

由于A--与B--至少一个为空,结束迭代。

单词A与单词B之间的单词距离如下:

Y(A,B)=(L(A)-(Y

=(6-(5+1))+(9-(5+1))

=0+3

=3

其中,L(A)为单词A的长度,L(B)为单词B的长度。

单词A与单词B之间的相似度如下:

其中,L(A,B)为单词A与单词B中的最小单词长度,即commit的长度6。

基于上述实施例公开的一种基于二叉搜索树的单词匹配方法,本实施例对应公开了一种基于二叉搜索树的单词匹配装置,请参阅图5,该装置包括:

单词确定单元501,用于确定目标单词与候选单词;

二叉树构建单元502,用于构建所述目标单词或所述候选单词对应的二叉搜索树;

相同字母数量查找单元503,用于根据所述二叉搜索树查找所述目标单词与所述候选单词之间相同字母的数量;

相似度计算单元504,用于依据所述目标单词与所述候选单词之间相同字母的数量,计算所述目标单词与所述候选单词之间的相似度;

单词匹配单元505,用于根据所述目标单词与所述候选单词之间的相似度,确定所述候选单词是否为与所述目标单词相匹配的单词。

可选的,所述二叉树构建单元502,具体用于:

分别提取所述目标单词A与所述候选单词B中的重复字母A-和B-,得到所述目标单词的剩余字符串A+与所述候选单词的剩余字符串B+;

根据字母数值对照表,分别将A+和B+转化为数值序列,得到A+对应的A+数值序列以及B+对应的B+数值序列;

构建A+数值序列与B+数值序列中最短数值序列对应的第一二叉搜索树。

可选的,所述相同字母数量查找单元503,具体用于:

查询所述第一二叉搜索树中是否包含A+数值序列与B+数值序列中最长数值序列中的数值;

若包含,确定所述第一二叉搜索树中包含的A+数值序列与B+数值序列中最长数值序列中的数值的数量Y

判断A-和B-是否为空;

若A-和B-中至少一个为空,将Y

可选的,所述相同字母数量查找单元503,还用于:

若A-和B-都不为空,分别提取A-和B-中的重复字母A--和B--,得到A-的剩余字符串A-+与B-的剩余字符串B-+;

根据字母数值对照表,分别将A-+和B-+转化为数值序列,得到A-+对应的A-+数值序列以及B-+对应的B-+数值序列;

构建A-+数值序列与B-+数值序列中最短数值序列对应的第二二叉搜索树;

查询所述第二二叉搜索树中是否包含A-+数值序列与B-+数值序列中最长数值序列中的数值;

若包含,确定所述第二二叉搜索树中包含的A-+数值序列与B-+数值序列中最长数值序列中的数值的数量Y

判断A--和B--是否为空;

若A--和B--中至少一个为空,将(Y

若A--和B--都不为空,分别提取A--和B--中的重复字母A---和B---,直到提取到的重复字母中至少一个为空。

可选的,所述相似度计算单元,具体用于:

根据所述目标单词与所述候选单词的长度以及所述目标单词与所述候选单词中相同字母的数量,计算所述目标单词与所述候选单词之间的单词距离;

确定所述目标单词与所述候选单词中的最小单词长度;

计算所述单词距离与所述最小单词长度的比值,并将1与该比值的差值确定为所述目标单词与所述候选单词之间的相似度。

本实施例公开的一种基于二叉搜索树的单词匹配装置,通过构建目标单词或候选单词对应的二叉搜索树,利用二叉搜索树能实现数组快速查找的优势,快速、准确的查找目标单词与候选单词之间相同字母的数量,从而依据目标单词与候选单词之间相同字母的数量,计算目标单词与候选单词之间的相似度,根据目标单词与候选单词之间的相似度,确定候选单词是否为与目标单词相匹配的单词,有效提高了单词匹配的速度和准确性。

需要说明的是,本发明提供的一种基于二叉搜索树的单词匹配方法及装置,可应用于人工智能领域或金融领域。上述仅为示例,并不对本发明提供的一种基于二叉搜索树的单词匹配方法及装置的应用领域进行限定。

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

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

上述各个实施例之间可任意组合,对所公开的实施例的上述说明,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术分类

06120115636807