一种基于视觉的字符串相似度计算方法及相似性判断方法与流程

文档序号:11865377阅读:579来源:国知局
一种基于视觉的字符串相似度计算方法及相似性判断方法与流程
本发明涉及字符串匹配领域,尤其涉及基于视觉的字符串相似度计算方法,该发明考虑了字符串相似度在人的视觉方面所呈现的差异,可以基于人的视觉特点计算字符串的相似度。
背景技术
:长期以来,由于相似重复记录存在的普遍性、表现的复杂性,以及对后续数据处理和辅助决策影响的严重性,如何检测和消除相似字符串的重复记录一直是数据清洗研究的重要主题之一。此外,字符串相似度的计算在恶意域名检测系统、抄袭检测系统、自动评分系统、防代码剽窃系统、网页搜索等领域都有着重要的应用。目前,字符串相似度计算方法有很多,如编辑距离算法(LevenshteinDistance),最长公共子串算法(LongestCommonSubsequences,LCS)等。例如,使用两个字符串的编辑距离来计算其相似度,即考虑转换成目标字符串所操作的个数,包括替换、增加、删除等。编辑距离可以反映出个字符串的绝对差异。但是,这些字符串相似度的计算方法只考虑的操作的次数,却没有考虑其在人们视觉方面所产生的差异。比如,“g00gle”与谷歌“google”的相似度在人的视觉方面所呈现的差异要远小于“goqqgle”与谷歌“google”的相似度。所以,基于人的视觉特点,可以更好的呈现字符串的相似度。目前的各种字符串匹配方法,更多的是从字符串角度考虑其相似度,并没有很好地考虑到字符所呈现出的视觉特点。本发明,基于视觉的字符串相似度计算方法,考虑了字符串相似度在人的视觉方面所呈现的差异,可以基于人的视觉特点计算字符串的相似度。技术实现要素:本发明的目的在于提供一种基于视觉的字符串相似度计算方法,该方法考虑到了不同的字符在人的视觉方法所呈现的不同差异,所计算得到的字符串相似度更加符合人的主观感受。本发明的技术关键点在于:1.字符格栅化将待处理字符格栅化为图片,为了便于后续的向量化,只存储其灰度特征,所以使用灰度图片存储。2.字符向量化以行为单位,将图片的每一行灰度值进行拼接,最终得到一维向量。对于一个字符,转换之后只有一行,但是有多个值。比如,字符“1”转成灰度以后如图1所示,是一个大矩阵,但是我们将每一行都首尾相接起来,最终只有一行。所以,一个字符对应一个图片,一个图片对应一个向量。3.字符相似度计算计算两待比较域名中可以使用的所有字符两两之间的相似度,如果字符串是域名的情况,则可以使用的字符有38个:26个英文小写字母(a-z)、10个数字(0-9)、英文句号(.)、英文横线(-)。具体使用的字集合根据使用场景来确定。该步骤主要用于事先计算并存储的任意两个字符的相似度,以便后续字符串相似度时使用。对任意两个字符计算其所得向量的余弦距离,示意图如图2所示(其中,上面是数字1,下面是字符L的小写,相似度是0.0332,已经很相似了,仔细看图片还是会发现有些许不同)。其中:V1=[...,1,...1,...1,...]Vl=[...,0,...0,...0,...]C[V1,Vl]=1-SC[V1,Vl]=1-V1·Vl||V1||·||Vl||=1-434643=0.0332]]>C表示字符相似度,Sc表示余弦相似度。其中,余弦相似度为公知技术。4.字符串相似度计算基于上述得到的字符相似度,改进了编辑距离(LevenshteinDistance)公式,使其加入字符的视觉度量,更好的呈现字符串的视觉相似度。其中,未改进之前的计算方式del、ins、sub为固定值1。改进之后,del、ins、sub的计算方式则根据字符串动态变化,del、ins、sub分别代表删除、插入、替换操作对字符串相似度的影响。D(i,j)表示字符串的视觉相似度,i和j为字符串中字符的位置信息,si为字符串s的第i个字符,tj为字符串t的第j个字符。C[si,tj]为si和tj的字符相似度。编辑距离为公知方法。C为上述计算得到的字符相似矩阵,α为经验参数。D(i,j)=minD(i-1,j)+del(i,j,si)D(i,j-1)+ins(i,j,tj)D(i-1,j-1)+sub(i,j,si,tj)]]>del(i,j)=ins(i,j)=αmin(i,j)sub(i,j)=αmin(i,j)×C[si,tj],α≤1]]>对于给定的字符串s和t,字符串长度分别是M和N,则字符串s和t的视觉相似度为:D(M,N)。通过公式:D(i,j)=minD(i-1,j)+del(i,j,si)D(i,j-1)+ins(i,j,tj)D(i-1,j-1)+sub(i,j,si,tj)]]>可以递推求解出所有的D(i,j),其中i∈[0,M],j∈[0,N]。当i=M,j=N时,可以得到D(M,N)即“字符串s的前M个字符构成的字符串”和“字符串t的前N个字符构成的字符串”的相似度,即我们要求解的目标。需要说明的是,D(i,j)的计算过程是一个递推的过程,递推的边界是D(0,0),D(1,0),D(0,1)。而D(i,j)是两个字符串相似度,表示“字符串s的前i个字符构成的字符串”和“字符串t的前j个字符串构成的字符串”的相似度。在具体的每一轮递推计算时,D(i,j)的值需要从D(i-1,j)+del(i,j,si)、D(i,j-1)+ins(i,j,tj)、D(i-1,j-1)+sub(i,j,si,tj)中选取最小的值。而我们求解的视觉相似度,实质是在求解两个字串之间,由一个转成另一个所需的最少操作次数。根据公式,我们定义了3种操作,分别是将一个字符替换成另一个字符,插入一个字符,删除一个字符。求解视觉相似度,即把一个字符串s最少经过多少步操作变成字符串t。这也是编辑距离的思想,我们提出的视觉相似度方法主要修改了编辑距离的一些参数,加入了对字符的视觉相似度考量。本发明提供的基于视觉的字符串相似度计算方法,如图3,该方法的主要步骤包括:1.字符格栅化,首先将字符转换成灰度图片,即格栅化处理;2.字符向量化,将每一个格栅化后的图片都映射成一个向量,该向量的每一个维度值都代表着图片每一个像素的灰度值;3.字符相似度计算,对任意两个字符计算其所得向量的余弦距离,最终得到字符相似度矩阵;4.字符串相似度计算,改进了编辑距离(LevenshteinDistance),并加入了字符视觉相似矩阵,使得计算得到的字符串相似度更加符合人的视觉感受。与现有技术相比,本发明的积极效果为:1.该方法考虑到了不同的字符在人的视觉方法所呈现的不同差异,所计算得到的字符串相似度更加符合人的主观感受;2.该方法可以进行简单的配置,使其适用于各类字符串视觉相似度计算场景,例如,可以修改字体、修改字符格栅大小,配置经验参数等;3.该方法不仅可以用于英文字符串的相似度计算,可以基于中文字体来进行中文字符串的相似度计算;4.该方法基于编辑距离,模型简单,易实现,且容易扩展到其他的应用场景。附图说明图1为字符“1”转成灰度以后的示意图;图2为字符的视觉相似度;图3为本发明基于视觉的字符串相似性计算方法流程图;图4为将字符转换为向量的示意图。具体实施方式下面结合附图和实施例对本发明进行进一步详细描述。实例1基于视觉的字符串相似度计算方法以计算“g00gle”与谷歌“google”为例,计算其视觉相似度:1.首先,通过配置字体、格栅化大小等参数,得到格栅化的字体图片,如图1,示例字符为字符“L”的小写字符:2.然后,将所有的字符转换为向量,示意图过程如图4。3.字符相似度计算对任意两个字符计算其所得向量的余弦距离,计算公式如下:1-cosθ=1-Vi·Vj|Vi|×|Vj|]]>最终结果如下表:(表示字符两两之间的字符相似度)4.字符串相似度计算,使用改进的编辑距离(LevenshteinDistance)公式计算,公式如下:D(i,j)=minD(i-1,j)+del(i,j,si)D(i,j-1)+ins(i,j,tj)D(i-1,j-1)+sub(i,j,si,tj)]]>del(i,j)=ins(i,j)=αmin(i,j)sub(i,j)=αmin(i,j)×C[si,tj],α≤1]]>改进的编辑距离伪代码如下:编辑距离为公知技术。改进的编辑距离方法并没有改变算法的流程,只是修改了其中的3个函数,即del、ins、sub。其中,对于del,代表删除操作对于字符串相似度的影响,对于ins,代表插入操作对于字符串相似度的影响,对于sub,代表替换操作对于字符串相似度的影响。未改进之前,del、ins、sub都为固定数值,即1。改进之后,数值动态变化,与要操作的字符相关,更能够反应其视觉距离。令α=0.99997(经验参数值),经过计算,可以得到所有D(i,j):其中,表中的格式为ijD(i,j),D(6,6)即为最终要求解的“g00gle”与谷歌“google”的视觉相似度:0.0778253628782。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1