基于同义词规则的近似字符串搜索技术的制作方法

文档序号:6583708阅读:315来源:国知局
专利名称:基于同义词规则的近似字符串搜索技术的制作方法
技术领域
本发明涉及信息检索或数据查询等应用领域中字符串近似搜索的应用,尤其是对于表达上存在差异,但在语义上指代相同实体的近似字符串搜索技术。

背景技术
许多应用都要求支持近似字符串搜索技术,以便搜索到表达上存在差异,但在现实世界中却指代相同实体的字符串。目前存在各种字符串相似函数,如Levenshtein或编辑距离、海明距离、余弦度量、杰卡德系数、骰子相似性以及BM25等。这些相似函数可分为两类一类是基于编辑操作的函数,如编辑距离和海明距离。另一类是基于字符串之间共同单词或gram的数目的函数,如余弦度量、杰卡德系数和骰子相似性。也有一些关于对传统编辑距离函数进行扩展的研究,如添加“移动”操作,或是支持基于编辑距离的子串替换。
编辑距离是指在两字符串进行相互转化时单位开销操作的次数,包括对字符串中单个字母的插入、删除、和置换操作,它能在O(mn)的时间内用动态规划的方法计算出来。计算编辑距离的时间复杂度能够用Four-Russians技术将其从O(mn)减少到O(mn/logn)。基于编辑距离的函数是根据编辑操作的次数或开销即编辑距离的大小来判断两字符串的相似性。目前也有一些关于编辑距离函数的扩展性技术,如通过交换邻近的字符所添加的转置操作、通过改变任意子串的顺序且为单位开销的move操作、允许前缀缩写的经典编辑距离--仿射编辑距离,但事实上这些技术仅能描述某些特殊情况,如前缀缩写,它并不能将同义替换应用于一般情况下。
以上提及的一些相似函数只能对这些字符串之间给出一个较低级的相似度评判标准,并不能准确判断在严格条件下相关联的两字符串的相似性,因而基于这种相似函数的近似字符串搜索技术不能有效地查询表达上存在差异,但在语义表达上相似或指代相同实体的字符串。然而,在许多应用中存在一些在某些具体应用领域中被认为是等效的同义词信息,此外也存在一些指代的是相同的实体,但其在表达形式上却可能存在全然的不同。此类同义词信息在拼写形式上可能差异很大,但在语义上却表达相同的意思。当将一些同义的字符串应用于近似字符串匹配过程时,这些同义词信息能够减少字符串间的差异,使它们编辑距离比采用传统的基于编辑距离的函数来计算时所得到的值更小,也更加有利于查询到语义表达上相似或相同的字符串。


发明内容
为了克服传统算法中字符串近似搜索对于表达上存大差异,但其语义上相似的字符串的低识别率,本发明利用同义词规则对近似字符串搜索技术进行了改进,提出了扩充两类传统的相似函数的方法。
本发明首先利用同义词规则改进了基于编辑距离的相似函数,提出基于同义词规则和编辑距离的近似字符串搜索技术。该步骤A的主要实现步骤包括A1、首先对字符串进行预处理。A2、执行近似搜索。其特征在于首先对字符串进行了预处理后才进行字符串的近似搜索过程。
在这个方面中,其中步骤A1中对字符串进行预理的过程包括A1-1、计算组成S中的字符串s的gram集G(s);A1-2、利用同义词规则对G(s)扩充为新的集合EG(s)。其特征在于在字符串整合了同义词规则,并用同义词信息对字符串传统的gram集进行了扩充。
在这个方面中,其中步骤A1-2利用对G(s)的扩充可描述以下过程预定义一个阀值δ,在同义词规则集中查找满足ed(s[i,j],a)/|a|≤δ的同义词规则P<a,b>,将来自字符串b的gram插入到G(s)中。在这个方面中,其中步骤A2对字符串进行近似搜索的过程包括A2-1、对查询字符串t中的每一个gram g,检索g的倒排链表,查找到与查询字符串t有T个相同的gram g候选字符串s;A2-2、对A2-1中得到的候选字符串s,计算它与查询字符串t的sbed(s,t P,δ)值(表示两字符串基于同义词规则的子串替换操作的编辑距离),并根据该值将不匹配的字符串移除。其特征在于首先得到一个候选字符串集,然后现根据基于利用了同义词规则的子串替换操作的编辑距离查找到匹配字符串。
在这个方面中,其中步骤A2-2可作以下描述 A2-2-1、根据预先设定一个阀值δ(该阀值表明该字符串能与同义词规则中的字符串进行子串替换操作的最小相似度),找到同义词规则P<a,b>,判断是否满足条件ed(s[i1,i2],a)/|a|≤δ; A2-2-2、利用满足步骤A2-2-1中条件的同义词规则P对字符串s进行基于同义词规则的子串替换操作,即将字符串中的某一子串用同义词规则中的字符子串替换;记其开销为单位开销; A2-2-3、sbed(s,t P,δ)值为进行了基于同义词规则P的子串替换操作以及传统的编辑操作后将字符串s转化成t时所花费的开销; A2-2-4将数据集中不符合步骤A2-2-3所计算sbed(s,t P,δ)值的近似字符串移除,剩余的即为匹配的近似字符串。其特征在于首先过滤了能够进行子串替换同义词规则和字符串,提出了个整合了同义词规则且开销为单位开销的子串替换操作,提出计算基于子串替换编辑操作的编辑距离。
其次,本发明提出了利用同义词规则改进了基于共同的gram数目的相似函数,提出基于同义词规则和共同的gram数目的近似字符串搜索技术。该步骤B的主要包括以下三个步骤B1、对数据集中字符串s的每个gram生成一个倒排链表,并利用同义词规则对每个字符串进行递归扩充;B2、对查询字符串t用B1中的相同方法扩充它的gram集;B3、对数据集中的字符串执行近似搜索。其特征在于对数据集中的字符串和查询字符串的gram集都进行递归扩充后才进行近似字符串搜索过程。
其中步骤B1的进一步过程为预定义一个扩充相似性阀值γ,在同义词规则集中查找满足similarity(s′,a)≥γ的同义词规则P<a,b>,s′是s的子串,将a和b的所有gram都加入s的gram集中;B1-2、继续将来自同义词规则的gram加入到s的gram集中,直至再没有新的同义词规则可用。其特征在于利用与字符串具有一定相似度的同义词规则来扩充字符串的gram集,并且这个过程是递归的。
其中步骤B3的进一步过程为 B3-1、通过解决T-overlap问题得到候选字符串; B3-2、通过计算真实的近似值(sbjc/sbcs/sbdc,表示同义词规则的杰卡德系数、余弦相似性函数、骰子相似性函数)移除不匹配的字符串。其特征在于首先得到满足一定相似性的候选字符串,然后才对这些候选字符串计算它们与查询字符串真正的相似性,得出匹配的近似字符串。
其步骤B3-2的过程可进一步描述为根据步骤B1和B2得到的扩充gram集EGP(s,P,γ)和EGP(t,P,γ)来计算字符串s和t的近似值。其特征在于利用了基于同义词规则扩充的gram集来计算字符串间近似值。
本发明的有益效果是,改进了传统的相似函数不能判别字符串在表达形式上有差别但在语义上却相同的不足,使对字符串的近似搜索能得到更多语义上相似并有意义的结果,从而能实现高效的近似字符串搜索功能。



图1利用同义词规则对基于编辑距离的近似字符串搜索流程图。
图2利用动态规划的方法计算两个相似字符串的sbed值,红色粗体标记的条目显示为得出最终结果的路径。
图3利用同义词规则对基于共同的Gram数目近似字符串搜索技术的改进。
图4三条用于扩充字符串gram集的同义词规则 图5如果在s和a中的有足够多共同的字符串片段,则规则<a,b>能够用于字符串s(即count≥|GP(a)|*γ),且所有这些字符串片段都在一个范围内(最大距离小于|GP(a)|/γ)。
图6规则<a,b>能应用于字符串s,且GP′(s)被GP(b)替换。在|GP′(s)|+pmin位置后,字符串片段的位置减小到|GP′(s)|-|GP(b)|。
图7说明选择性字符串片段扩展的示例 图8(a-c)各类函数的性能,(d-f)计算nsbed的查找时间和计算动态规则表时间对比。
图9计算sbjc/sbcs/sbdc值的算法中gram扩充集的递归次数。
图10(a-c)各类函数的搜索性能,(d-f)对于三个数据集每次查询的误报次数。

具体实施例方式 为了更全面地理解本发明及其优点,下面结合附图及具体实施例对本发明做进一步详细地说明。
一.为了便于清楚理解期间,首先对以下几个定义进行简单地介绍。
同义词元组一个同义词元组(或同义词规则)是<a1,a2>这种形式的一对字符串,字符串中a1和a2分别表示真实世界中的一个实体。
例如,以下的几个同义词元组 <William,Bill>; <car,automobile>; <Very Large Data Bases,VLDB>. 令P为一个或多个领域中的同义词元组的集合,如会议名称、人名以及地名。从概念上来说,每个元组中的两个字符串是对称的。那也就意味着,对于每一个元组<a1,a2>∈P,相应地也有一个元组<a2,a1>∈P。字符串间常用的缩写、简称和略写关系都可以表示成同义词元组。
Gram令∑为一个字母表。对于同∑中的字母组成的一个字符串s,用|s|表示s的长度。″s[i]″表示s中的第i个字母(从1开始),并用″s[i,j]″表示从第i个字母到第j字母的一个子串。给定一个字符串s和一个正整数q,s上按位截取的一个长度为q的字符串片段表示为二元组(g,p),这里的g是指从第p个字母开始s中一个字符串片段,即g=s[p,p+q-1]。s的字符串片段集合可表示为GP(s,q)。
例如,假设q=3,s=university,则有GP(s,q)={(uni,1),(niv,2),(ive,3),(ver,4),(ers,5),(rsi,6),(sit,7),(ity,8)}。此外,如果在某些情况下提到一个字符串片段时并没有明确地说明它的长度,此时这个字符串s的字符串片段集合(未标记长度)就记为G(s)。
sbed(s,t,P,δ)一个同义词规则集P,两个字符串间基于同义词的编辑距离的是利用插入、删除、置换以及子串替换操作以使s转换到t的最小开销。插入、删除、置换和替换操作都是单位开销。当P和δ能够明确地从上下文中获得时,基于同义词规则的编辑距离可表示为sbed(s,t,P,δ)或简单地表示为sbed(s,t)。
子串相似度阀值δ该阀值表明该字符串能与同义词规则中的字符串进行子串替换操作的最小相似度。
扩展相似度阈值γ给定一个查询字符串s,找到同义词规则P<a,b>,使得存在一个s的子串s′,且similarity(s′,a)≥γ。
二、以下内容详细说明本发明的具体实施步骤 步骤A,利用同义词规则改进基于编辑距离的相似函数搜索近似字符串。
下面结合图1说明步骤A的具体步骤包括如下几个 步骤A1对字符集S中的字符串进行预处理。
步骤A1-1计算组成S中的字符串s的gram集G(s)。该集合可以通过滑动字符串s中长度为q字符窗口来获得。即在GP(s,q)中有|s|-q+1个的字符串片段。采用相同的方法可得到查询字符串t的gram集G(t)。
步骤A1-2利用同义词规则对GP(s)扩充为新的集合EG(s)。
预定义一个阀值δ,在同义词规则集中查找满足ed(s[i,j],a)/|a|≤δ的同义词规则P<a,b>,将来自字符串b的gram插入到G(s)中。
步骤A2得到满足一定程度的相似度的候选字符串后,再根据sbed值计算候选字符串与查询字符串的相似性。
步骤A2中的过程可进一步分解为以下几个步骤 步骤A2-1为数据集中所有出现过的gram生成一个倒排链表,该倒排链表中的元素为出现过该gram的字符串;然后根据步骤A1中得到的查询字符串的gram集合G(t),对G(t)中的每一个gram检索倒排链表,查找链表中与查询字符串t有T个相同的gram g候选字符串s,其中T为预先定义好的一个阀值。该问题可归结为T-overlap问题。
T-Overlap问题令G(s)为字符串s的一个q-gram集合,δ为距离阀值(0≤δ≤1)。找到在G(s)中的字符串倒置链表中至少出现了Ta次字符串a的集合,且Ta=(|a|-q+1-δ·|a|·q)。
因此,问题变成从这些字符串中找到与字符串s的子串足够相似的字符串。T-overlap问题解决方法的具体实施如下 首先,为同义词规则中的字符串的gram构造一个倒置链表索引,即对于字符串的每一个gram g都有一个包含该gram的同义词规则的id组成的链表。
然后,令G(s)为字符串s的一个q-gram集合,δ为距离阀值0≤δ≤1。
最后,查找这样的字符串a的集合,即字符串a的gram在G(s)中至少出现了Ta(Ta=(|a|-q+q)-δ·|a|·q))次。
步骤A2-2对A2-1中得到的候选字符串s,计算它与查询字符串t的sbed(s,t P,δ)值(表示两字符串基于同义词规则的子串替换操作的编辑距离),并根据该值将不匹配的字符串移除。
步骤A2-2中的过程可进一步分解为以下几个过程 步骤A2-2-1根据预先设定阀值δ,找到同义词规则P<a,b>,判断字符串s是否满足条件ed(s[i1,i2],a)/|a|≥δ。并且判断字符串t是否满足条件ed(t[j1,j2],b)/|b|≥δ 步骤A2-2-2对满足步骤A2-2-1中条件的字符串s进行基于同义词规则的子串替换操作,即将字符串中的某一子串用同义词规则中的字符子串替换;记其开销为单位开销。
步骤A2-2-3高效计算sbed(s,t P,δ)值。
初始化,定义了一个距阵M
,这M[i,j]=sbed(s[1,i],t[1,j])$最终目标是计算出M[|s|,|t|],即sbed(s,t)),对每个整数0≤i≤|s|,定义M[i,0]=i;对每个整数0≤i≤|t|,定义M
=j。
针对每个整数0≤i≤1和0≤j≤1定义所下所示的递归函数根据所定义的递归函数计算距阵M的值。

递归函数的前四种情况即相当于采用传统编辑操作,对组成距阵M的字符串的字母进行插入、删除和修改。第四种情况即相当于采用了基于同义词规则的子串替换操作。前三种情况只要按照递归函数的定义计算即可,第四种情况中要求查找两个字符串的子串,查找到字符串s和t各自的子串s[m,i],t[n,j]以及同义词规则元组<a,b>∈P,使得ed(s[m,i],a)/|a|≤δ,ed(t[n,j],b)/|b|≤δ。
同义词规则两边的字符串都执行近似串的匹配。对于字符串s和一组规则左边的字符串,找到s的子串s[m,i]和规则<a,b>,使ed(s[m,i],a)/|a|≤δ。然后对字符串t和一组规则右边的字符串执行相同的操作。最后,在以上两步的执行中交替规则,因为如果<a,b>∈P,则<b,a>∈P。
例1.以下结合图2说明。图2显示了如何在计算字符串“World WideWeb Conf”和字符串“WWW Conferece”的sbed值的过程中填充距阵。请注意到在“C onferece”中有一个排印错误。有两个同义词元组<WorldWide Web,WWW>和<Conf,Conference>,它们的sbed值为3。
步骤A2-2-4将不数据集中不符合步骤A2-2-3所计算sbed(s,t P,δ)值的字符串移除,即将所计算的利用同义词规则进行子串替换操作编辑操作所计算的编辑距离与预先定义表明s和t中至少应该满足的相似度进行比较,如果小于预定义的值则将数据集中该字符串s移除,则剩余的即为匹配的近似字符串。
步骤B利用改进的基于共同的gram的数目的相似函数搜索近似字符串。
下面结合图3说明步骤B的具体实施步骤 步骤B1对数据集中字符串s的每个gram生成一个倒排链表,并利用同义词规则对每个字符串的gram集进行递归扩充。
步骤B1-1预定义一个扩充相似性阀值γ,在同义词规则集中查找满足similarity(s′,a)≥γ的同义词规则P<a,b>,s′是s的子串,将a和b的所有gram都加入s的gram集中,从而得到s的扩充gram集EGP(s,P,γ)。
步骤B1-1-1查找到能够应用字符串s的gram集扩充的同义词规则P。
同义词规则P可应用于字符串s扩充的条件给定一个字符串s,令GP(s)={(g,p)}表示s的字符串片段集合。γ是自定义的扩展相似度门限值。如果存在一个子集则我们说这个同义规则能够用于一个字符串s,并使 |GP′(s)∩GP(a)|/|GP(a)|≥γ;(1) 且(g1,p1),(g2,p2)∈GP′(s)|p1-p2|≤GP(a)/γ。(2) 如图5所示,第一个条件说明GP′(s)和GP(a)应该共同拥有足够的相同字符串片段。第二个条件说明因为不希望考虑GP(s)中相距很远的字符串片段,GP′(s)中的字符串片段必须在由a和γ指定的范围内。
根据以上定义,计算同义词规则可应用于字符串的两个条件,并按照该条件在同义词规则集中找到能用于字符串s的同义词规则P<a,b>。
例2.以下结合图4说明。图4中的三个规则和字符串s=″Intl Confon Management of Data″,假设字符串片段的长度q=3和γ=0.9。首先,因为有GP′(s)={(Int,1),(ntl,2)},(|GP′(s)∩GP(Intl)|)/(|GP(Intl)|)=1,所以规则r1能够应用于字符串s。对于任意两个字符串片段(g1,p1),(g2,p2)∈GP′(s),都有|p1-p2|≤|1-2|≤2/0.9。类似地,规则r2也能应用于s。
步骤B1-1-2从步骤B1-1-1中分别得到的同义词规则中的字符串a和b,将它们的gram添加到GP(s)中得到GP′(s)。
结合附图6中说明这一过程,在添加gram的过程中反复应用规则使集合GP(s)增大时,为了能对新添加的字符串片段对前面提到的第二个不等式条件进行检查,需要对每一个从字符串a中新插入到GP(s)的字符串片段计算其位置。假设g在a中的位置是pa,GP′(s)中最小的位置是pmin,则g在GP(s)中的新位置是pa+pmin。此外,应用同义规则<a,b>后,在|GP′(s)|+pmin位置后所有字符串片段的位置将移动|GP(b)|-|GP′(s)|位。如果|GP(b)|>|GP′(s)|,则所有字符串片段将向右移,否则它们将向左移。
步骤B1-1-3最后重复步骤B1-1-1和步骤B1-1-2,直至没有没有满足条件的同义词规则可用。
注意在此过程中字符串片段扩展过程是递归的。以下就例3来说该递归扩充的过程。
例3.以下结合上面的例2对gram集的扩充进行更详细的说明。在应用了规则<Intl,International>后,有新近添加的字符串片段(nte,2),(ter,3),(ern,4),(rna,5),(nat,6),(ati,7),(tio,8),(ion,9),(ona,10)和(nal,11)。在Intl后所有的字符串片段向移动13-4=9个位置,并添加到扩展字符串片段集中。类似地,在应用了规则(Conf,Conference)后,由于字符串片段″Conf″始于s中的第5个位置,新近添加的字符串片段(nfe,7),(fer,8),(ere,9),(ren,10),(enc,11)和(nce,12)。在″Conf″后的字符串片段将向右移动10-4=6个位置。因此,GP′(s)包括来自规则<Intl,Internationa>和<Conf,Conference>所有字符串片段。
步骤B1-2断续将来自同义词规则的gram加入到s的gram集中,直至再没有新的同义词规则可用。
步骤B2对查询字符串t用B1中的相同方法扩充它的gram集GP(t)。
步骤B3对数据集中的字符串执行近似搜索。
步骤B3-1通过解决T-overlap问题得到候选字符串。该步骤与方案A中步骤A2-1类似,这里就不再详述。
步骤B3-2通过计算真实的近似值(sbjc/sbcs/sbdc,表示同义词规则的杰卡德系数、余弦相似性函数、骰子相似性函数)移除不匹配的字符串。
设两个字符串s和t,同义规则元组P的集合和扩展相似度门限值γ,令R=EGP(s,P,γ),S=EGP(t,P,γ)表示将字符串片段选择性扩展后的字符串片段集。两个字符串之间以同义串为基础的杰卡德相似度(简写为″sbjc″)、以同义串为基础的余弦相似度(简写为″sbcs″)和以同义串为基础的骰子相似度(简写为″sbdc″)定义如下 sbjc(s,t,P,γ)=|R∩S|/|R∪S| sbdc(s,t,P,γ)=2|R∩S|/|R|+|S| 例4.设s=″abcd″,t=″efgh″和在图7中的六条同义规则,构造一个包含三个连通分量的图。规则r1、r3、r4和r6能够直接应用于字符串s和t。但是有选择性地分别对字符串s和t应用规则r1和r3。这是因为CID(r1)=CID(r3)=1。因此字符串片段长q=2时,有|GP(s)|=|GP(t)|=3,|EGP(s)|=|EGP(t)|=6。然后sbjc(s,t)=0.5,sbcs(s,t)=0.67和sbdc(s,t)=0.67。请注意Jaccard(s,t)=Cosin(s,t)=Dice(s,t)=0。则提出的相似函数正确地应用了规则并反应了s和t在语义上相似性。
根据以上计算相似度值判断候选字符串s是否与字符串t匹配。
三.实验测试结果 1.准备工作 在实验中评价了扩展相似函数的性能、相似性计算的处理时间、具更多同义词规则的扩展性能和用大量同义规则对大型数据集的字符串执行近似搜索算法的性能。所有实验都在配置为cpu主频为2.13GHz、内存为2GB和硬盘为250GB的双核电脑上运行了,操作系统为UbuntuLinux操作系统。所有算法都用GNU编译器编译的C++语言执行。
数据集(采用会议名称、邮件地址、Babel同义词和杂志名称四个数据集) 会议名称724个关于计算机科学会议名称的缩写和全称的同义规则,并从这些同义规则中提取了如″ICDE″、″SIGMOD″和″VLDB″会议名称的缩写。
地址名284条常用于美国地名或人名的同义词规则,如″<St,Street>″,″<CA,California>″和″<Danny,Daniel>″4,并收集一些常用的人名、街名,市名、州名和邮政编码。用这些数据生成一亿个美国的地址,每个地址包括一个人名、一个街道名称、一个城市名称和一个邮政编码。为了能测试所提出的函数能否用近似字符串匹配功能处理拼写错误,也在地址名称中加入拼写有误的信息。
Babel这个数据集包括9,136个关于计算机科学方面的缩写和略写的同义词元组。通过连接两个从同义词元组中随机选择的词而生成有一亿个字符串的集合。
杂志名称这个数据集包括46,696个同义词元组,这元组由杂志名称的全名和缩写组成。此外,还有一个由6,164个简写的杂志名称的字符串组成的集合。
2.函数的性能 在第一个实验中采用了会议名称的数据集。随机抽取10位计算机科学研究者的个人主页,从中查找他们的发表记录,并选择50个会议名称。这些数据是一个网络上如何表示这些名称很好的样本,用这些名称作为查询记录通过对350个会议名称个进行逐一扫描,并从中搜索一个近似记录。对每个查询记录Q和一个给定的正规函数f,预定义一个阀值δ用于搜索字符串s,使f(Q,s)≥δ。对于每个查询记录而言正确的会议名称可以通过手动浏览会议名称记录来找到。这个实验的目的是为了解基于同义词规则的近似函数能否高效地利用同义词元组来查找在现实生活中有各种表达形式,而实际上却是指同一会议的会议名称。
比较近似函数返回的结果和正确结果之间差异用以下方法评价了改进的近似函数 查准率(precision)=返回的正确响应/返回的响应; 查全率(recall)=返回的正确响应/正确的响应; F度量=2*查准率*查全率/查准率+查全率。
表1、2和表3显示了实验结果,从这些结果可得出以下结论(1)原始的杰卡德系数、余弦和骰子函数不能利用同义词规则进行匹配,并且匹配的质量较低。但是本发明提出的两种相似函数具有非常明显的优越性,极大地提高了查准率和查全率。(2)比较本发明提出的扩展编辑距离的函数nsbed和扩展gram集合的函数sbjc/sbcs/sbdc,发现nsbed的查全率比较高,但查准率却较低。原因是nsbed值仅允许对子串执行一次替换操作,而sbjc/sbcs/sbdc三种近似函数可对相同的子串执行多次替换操作。因此,这三个函数能高效地利用同义词元组检索语义相似的实体。所以当用户希望高的查全率时可以使用nsbed,当用户希望高的查准率时,可以考虑sbjc/sbcs/sbdc。
表1Precision(会议名称)(jcJaccard,csCosine,dcDice) 表2Recall(会议名称) 表3F-measure(会议名称)(最佳的值是由sbjc、sbcs和sbdc得到,δ=0.95) 3.函数的计算效率 为了能评价所提出的近似函数的性能,选择一些同义规则并生成字符串元组传递给每一个函数来计算它们的相似度。由于后面三个数据集规模大一些,所以采用这三个数据集。对于三个数据集中任一个,从现有的规则中随机选取一定数目的同义词规则。然后,从些字符串集中随机选取两个字符串组成字符串元组,要求有10,000个字符串生成。对于每一个字符串元组执行以上所有的近似函数,并测量它们运行时间。对所有字符串元组计算它们的平均运行时间。同时为了衡量该算法的可扩展性,采用了不同数量的同义词规则。
图8(a-c)显示了各类函数对不同数量同义词规则的平均运行时间。对于nsbed来说,运行时间包括执行近似搜索和计算动态规划表的时间。对sbjc/sbcs/sbdc来说,运行时间包括执行近似字符串搜索和选择性地扩展字符串片段集的时间以及最终计算集合的交集和并集的时间。
当对sbjc、sbcs和sbdc采用相同的结构时,它们的性能总是相同的。对于Jaccard系数来说,这个时间是执行集合的并和交的时间。
对于地址数据集来说,计算两个字符串的采用nsbed值的算法比sbjc效率更低一些。这是因为在sbjc中的主要操作是对集合的并和交操作,而nsbed则要求用到动态规划算法和子串匹配,然而对集合的交和并的操作要求较低。
对于Babel和杂志数据集而言,在这里它们的同义词规则的数量更大,此时sbjc的性能就比nsbed差很多。这是因为sbjc支持对同义词规则多次迭代扩充。当同义词规则的数目增加时,迭代的时间也随之增加,因而运行时间也会相应的增加。在F度量中sbjc有比nsbed更高的匹配效率。换言之,sbjc/sbcs/sbdc为了得到高质量的匹配记录而将花费更多的时间。
图8(d-f)显示了在计算nsbed的过程中的查找时间和计算动态规划表的时间。查找时间是用于执行近似字符串匹配的时间(包括解决T-overlap问题和修改误差的时间)。当同义词规则数目大于50时,查找时间在nsbed的计算时间里占主导地位。
图9显示了基于两种扩展策略的字符串gram集扩充的平均迭代次数,一种是反复扩充,另一种反复且选择性地扩充。如图9所示,选择性方法扩充的迭代次数明显更少。
此外在多数情况下,当增加同义词规则的数量时,迭代次数也将有所增加。但是对于Babel数据,当同义词规则集大于6,000条后,扩充的迭代次数开始减少(见图9b)。
4.搜索算法的效率 以下分析了利用基于同义词规则的近似函数进行近似字符串搜索实验结果。从各种数据集中随机选择了100个记录作为查询记录。在所有实验中同义词规则近似阀值和检索相匹配近似阀值均为0.9。
图10(a-c)分别对三个数据集描述了前面提到的四个近似函数的平均搜索时间。这个时间包括合并时间和最终的提交处理时间。对于所有的数据集,nsbed和sbjc比sbcs和sbdc有更好的性能,这是因为nsbed和sbjc的合并阈值T比其他两个近似函数更加严格。一个严格的阈值意味着更少的中间结果和合并的时间开销。在图10(d-f)针对各种近似函数报告其误差数目,这同时也证实上述的分析sbcs和sbdc有一个更宽松的阈值T,并生成大量不是最终结果的中间结果。在大多数情况下,相似阈值越来越大时误差数目越少。然而,唯一的例外是在杂志数据集中,对于nsbed来说,当阈值大于0.9时,可以发现其误差反而略微增加(见图10f)。这是因为在此范围内的候选字符串数目仍相同时,但最终结果将减少。
在本发明中利用同义词针对字符串近似性测量和近似字符串搜索扩展了两种类型的近似函数。通过增加了基于同义词规则的子串替换操作改进了基于编辑操作的近似函数。通过递归扩充了整合了同义词信息的字符串片段(标识)集,改进了基于共同的字符串片段和标识的函数。并利用提出的有效算法执行了基于改进近似函数的近似字符串搜索。最后,通过实验证明本发明方法的有效性和高效率。
本发明还有许多更具有深远意义的发展前景。例如,由于本发明的算法是对传统近似函数的自然扩展,所以现有的近似字符串连接算法和数据清洗的方法能很容易通过整合同义词规则而被增强,实现高效的近似字符串搜索。通过本发明提出的高效的近似字符串搜索技术能够高效率地在数据集中查找到与查询字符串不仅在表达形式上相似,而且在语义上也相联系的近似字符串,因而本发明能够应用于例如搜索引擎、信息查询系统等多种应用场合,同时也具有很高的效率。
此外,对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此,具有更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况下,可对其做出各种修改。
权利要求
1.一种基于同义词规则,扩展两类传统近似函数的近似字符串搜索技术,具体的步骤包括
A、利用同义词规则基于编辑距离的近似字符串搜索技术。
B、利用同义词规则基于共同的gram数目的近似字符串搜索技术。
2.根据权利请求1中的步骤A,其具体步骤包括如下内容
步骤A1对字符集S中的字符串进行预处理。
步骤A2进行近似搜索。
3.根据权利请求2,其中步骤A1进一步阐述为
步骤A1-1计算S中的每个字符串s的gram集G(s);
步骤A1-2利用同义词规则对G(s)扩充为新的集合EG(s);
步骤A1-3为集合EG(s)中的每一个gram建立一个针对字符串ID的倒排链表。
4.根据权利请求3,其中步骤A1-2进一步阐述为
预定义一个阀值δ,在同义词规则集中查找满足ed(s[i,j],a)/|a|≤δ的同义词规则P<a,b>,将来自字符串b的gram插入到G(s)中。
5.根据权利请求2,其中步骤A2进一步过程为
步骤A2-1对查询字符串t中的每一个gram g,检索g在步骤A1-3中建立的倒排链表,查找与查询字符串t有T个相同的gram的候选字符串s。
步骤A2-2对A2-1中得到的候选字符串s,计算它与查询字符串t的sbed(s,t P,δ)值(表示两字符串基于同义词规则的子串替换操作的编辑距离),并根据该值将不匹配的字符串移除。
6.根据权利请求5,其中步骤A2-2可作以下进一步描述
步骤A2-2-1根据预先设定一个阀值δ(该阀值表明该字符串能与同义词规则中的字符串进行子串替换操作的最小相似度),找到同义词规则P<a,b>,判断是否满足条件ed(s[i1,i2],a)/|a|≤δ。
步骤A2-2-2利用满足步骤A2-2-1中条件的同义词规则P对字符串s进行基于同义词规则的子串替换操作,即将字符串中的某一子串用同义词规则中的字符子串替换;对查询字符串t也进行同样的操作。
步骤A2-2-3计算sbed(s,t P,δ)值,该值是基于同义词规则P的子串替换操作以及传统的编辑操作后将字符串s转化成t时所花费的开销。
步骤A2-2-4将数据集中不符合步骤A2-2-3所计算sbed(s,t P,δ)值的近似字符串移除,剩余的即为匹配的近似字符串。
7.根据权利请求1中的步骤B,其具体步骤包括如下内容
步骤B1对数据集中字符串s的每个gram生成一个倒排链表,并利用同义词规则对每个字符串的gram集进行递归扩充。
步骤B2对查询字符串t用B1中的相同方法扩充它的gram集GP(t)。
步骤B3对数据集中的字符串执行近似搜索。
8.根据权利请求7,其中步骤B1的进一步过程为
步骤B1-1预定义一个扩充相似性阀值γ,在同义词规则集中查找满足similarity(s′,a)≥γ的同义词规则P<a,b>,s′是s的子串,将a和b的所有gram都加入s的gram集中,从而得到s的扩充gram集EGP(s,P,γ)。
步骤B1-2把相应同义词规则中的的gram加入到s的gram集中,直至再没有新的同义词规则可用。
9.根据权利请求7,其中步骤B3的进一步过程为
步骤B3-1通过解决T-overlap问题得到候选字符串。
步骤B3-2通过计算真实的近似值(sbjc/sbcs/sbdc,表示基于同义词规则的杰卡德系数/余弦相似性函数/骰子相似性函数)移除不匹配的字符串。
10.根据权利请求9,其中步骤B3-2的进一步过程为
根据权利请求1中的步骤B1和B2得到的扩充gram集EGP(s,P,γ)和EGP(t,P,γ)来计算字符串s和t的近似值。
全文摘要
本发明属于信息技术领域关于近似字符串匹配的方法,具体为一种新的基于同义词规则的近似字符串搜索技术。该方法通过添加同义词规则扩展两类传统的近似函数实现近似字符串搜索一类是通过对基于编辑操作的函数的改进引入同义子串替换操作来查询近似字符串,对近似子串进行有限替换计算出新的编辑距离以实现高效的基于同义词信息的近似搜索。另一类则是通过对基于共同的gram或标识符的数目的函数改进,利用同义词规则扩充其字符子串的gram集合,再用新的gram集合与查询集里的gram集合进行比较,根据其共有gram数目的多少判断查询字符串与候选字符串的相似性,以此来实现高效的近似字符串的搜索。
文档编号G06F17/30GK101763405SQ20091022233
公开日2010年6月30日 申请日期2009年11月16日 优先权日2009年11月16日
发明者陆嘉恒 申请人:陆嘉恒
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1