CN1869983A - 用于信息检索与信息输入的广义子串模式匹配方法 - Google Patents
用于信息检索与信息输入的广义子串模式匹配方法 Download PDFInfo
- Publication number
- CN1869983A CN1869983A CN 200610021280 CN200610021280A CN1869983A CN 1869983 A CN1869983 A CN 1869983A CN 200610021280 CN200610021280 CN 200610021280 CN 200610021280 A CN200610021280 A CN 200610021280A CN 1869983 A CN1869983 A CN 1869983A
- Authority
- CN
- China
- Prior art keywords
- text
- character
- substring
- broad sense
- string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于信息检索与信息输入的广义子串模式匹配方法,广义子串为文本S中的任意一个或一个以上的字符组成的字符串S’;给出了广义子串模式匹配的具体方法。广义子串拓展了子串的相关性理念,其模式匹配方法解决了多年来信息检索、信息输入等领域存在的离散相关文本检索遗漏问题;其功能上的特点体现在:查全率高,准确率有保障,易于定位;应用上的特点体现在:信息检索与信息输入简单、灵活、快捷。
Description
技术领域
本发明涉及一种用于信息检索与信息输入的字符串模式匹配方法。
背景技术
现有信息检索与信息输入领域需要用子串对文本进行模式匹配的处理。如在信息检索领域需要将输入的检索词作为子串对数据库、网页等存储文本进行匹配检索,如果检索词为存储文本的子串,则存储文本作为检索到的文本输出,否则放弃该文本;如果存储的所有文本均与检索词不匹配,则检索不到任何文本。在信息输入领域则将键盘等输入设备上输入的字符串作为模式子串对计算机等信息处理设备存储的文本库中的文本进行匹配;若模式子串与文本匹配,则选中该文本,进行后续处理。显然,子串模式匹配方法的速度、查全率、查准率等功能,对于信息检索与信息输入至关重要。
现有信息检索与信息输入领域的子串定义为:在有限字符集∑上,给定一个长度为n的文本字符串S=“S1S2……Sn”,以及一个长度为m的模式字符串P=“P1P2……Pm”;如果存在SiSi+1……Si+m-1”=“P1P2……Pm”,则称P为S的子串,且P出现在S中位置为i。也即现有的子串必须是文本字符串S中的连续字符构成,文本字符串S中不连续字符构成的字符串不是文本S的子串。子串模式匹配是指:文本S中是否存在与模式P相等的子串。在一些应用领域,还要求判定的同时,输出匹配度以及出现的位置。
这是最简单也是最经典的子串模式匹配问题。对于这个问题,最早的方法是Brute-Force方法(朴素子串模式匹配方法),该方法的最坏时间复杂度为O(m*n)。1970年,S.A.Cook从理论上证明了子串模式匹配问题可以在O(m+n)时间内解决,同一年,Morris和Pratt仿照Cook的证明构造了一个方法,随后,Knuth对这个方法进行了改进,最终,在1976年,历史上第一个在线性时间内解决子串模式匹配的方法诞生了,这个方法简称为KMP(Knuth、Morris、Pratt)方法,它的时间复杂度为O(m+n),时间复杂度得到明显降低。1977年,Boyer和Moore提出了另一个与KMP方法截然不同的却同样拥有线性时间复杂度O(m+n)的方法(BM方法)。BM方法采用从右向左的匹配思路,在实际的模式匹配中,跳过了很多无用字符,使BM方法获得了很高的效率,特别是在大字符集上进行子串的模式匹配时更为显著。此后,又有一些更有效率的方法被提出,大多都是在KMP方法或BM方法的基础上做了一些改进。
以上各种模式匹配方法,都是基于模式P,在文本串S中寻找一个与P匹配的连续子串,方法围绕着提高匹配速度而不断改进。
基于这样的匹配方法,在信息检索、信息输入等领域,长期以来存在离散相关文本遗漏问题。
设文本S中存在与模式P相等(匹配)的子串“SiSi+1……Si+m-1”,则子串在文本S中的离散特性主要体现在三个方面:
a)中间连续,由S的第i个字符开始的连续m个字符构成;
b)后向缺省,S的后面连续缺省n-m-i+1个字符;
c)前向缺省,S的前面连续缺省i-1个字符。
下面的例子可以清楚的反映出,采用以上子串进行匹配存在的明显离散相关文本遗漏问题:
例1:S=“中文拼音、笔划、声调组合输入法”;P=“拼音、笔划、声调”。
P匹配S,为S的子串。
例2:S=“中文拼音、笔划、声调组合输入法”,P=“拼音笔划声调”,其典型特征为:P离散地出现在S中。
P不匹配S,不是S的子串。
显然,在信息检索及信息输入中,人们希望第二种情况下,P也是S的子串,这明显与子串定义矛盾。现有的子串匹配方法无法实现第二种情况下P对S的匹配。
这是现有子串概念表示相关性的缺陷即要求子串字符的连续性带来的问题。子串的相关性理念,在离散特性上反映出不是一个完美的全集相关性理念,子串从概念上就遗漏了具有离散特性的相关文本,给应用程序带来许多困扰,增加了解决问题的复杂性。
以下示例,进一步反映出基于子串概念的整个信息检索系统存在的固有离散相关文本遗漏问题。
例3:文件查找
假设硬盘中存在“my-working-daily-plan.doc”。现有的子串模式匹配,不能通过检索字符串“mwdp”检索出该文件,“mwdp”离散地出现在“my-working-daily-plan.doc”中。
例4:英语单词“procedure”的拼写中,人们往往容易记住各音节的首字母以及最后一个字母组成的字符串“prcde”,该串不满足“procedure”的子串定义,然而“prcde”离散地出现在“procedure”中。输入“prcde”,现有的子串匹配,检索不出该英语单词。
例5:中文汉字的输入
假设“床”的拼音笔划编码为“chuangdhp”,并存储在汉字编码库中。由于编码太长,是否可以采用“cugdh”、“cdhl”、“cugd”等随意缺省输入方式输入“床”,从而减少输入码长?注意“cugdh”、“cdhl”、“cugd”均离散地出现在“chuangdhp”中。基于现有的子串模式匹配,不能实现这种功能。
另一类模式匹配为非精确匹配,用于判定模式P是否与文本S相似,允许出现有限的错误,如键入错误、拼读错误、传输错误等,通过相似度约束,返回判定结果以及定位位置,被应用在信息检索、信息处理、以及生物技术的DNA匹配等众多领域。影响精确匹配的因素主要包括:插入错误、交换错误、删除错误。非精确模式匹配方法综合考虑这三种错误因素,从不同应用角度、采用各种技术,形成了从线性时间复杂性到多项式时间复杂性(NP问题)的各种解决方案,试图解决允许有限综合错误的匹配问题,效果受限于错误的综合性与错误个数。
例如,非精确匹配方法处理以上例4中的问题时,非精确匹配的ED(Edit Distance)方法,认为有四个删除错误。由于ED方法还综合考虑插入错误和交换错误,若允许四个错误的匹配,三类错误的综合处理,将造成从英语词库中匹配出众多满足4个错误约束条件的单词,使得匹配结果毫无意义。通配符匹配是解决该类问题的一种选择,例如输入“pr*c*d*e”,但必须考虑在哪些位置,加多少个通配符,对大众而言,这种解决方案仍然存在操作上的困难。最大匹配也可解决该问题,但最大匹配还考虑插入错误因素,等同于综合考虑插入与删除错误因素,因此方法本身的复杂程度、时间复杂性提高,用于词库检索,候选词数目增加。Episode Distance只考虑插入错误,Hamming Distance只考虑替换错误。相似性匹配仍然是综合考虑三种错误因素,寻求模式与文本的相似程度。以上非精确方法的检索效果均受限于允许错误的数目和错误的综合性。上面列出的典型问题,仅含有删除错误,而不含插入错误、交换错误。因此,现有的非精确匹配并不能很好地解决这些典型离散相关问题。
随着网络信息的不断普及和深入,大众化的信息获取以及信息输入成为信息的瓶颈问题,字符串模式匹配在信息获取以及信息输入中成为最耀眼的明星,基于现有字符串模式匹配方法进行信息获取与信息输入,存在的以上离散相关文本遗漏问题,给普通大众造成了许多不便,亟待解决。
发明内容
本发明的目的在于解决上述问题,提出一种用于信息检索与信息输入的广义子串模式匹配方法,该种方法查全率高,准确率有保障,且易于定位;信息检索与信息输入简单、灵活、快捷。
本发明解决其技术问题所采用的技术方案为:一种用于信息检索与信息输入的广义子串模式匹配方法,其特点是所述的广义子串为文本S=“S1S2……Sn”中的任意一个或一个以上的字符组成的字符串“Sg1Sg2……Sgm”(1≤g1<g2……<gm≤n);广义子串模式匹配即判定模式P=“P1P2P3……Pm”(0<m≤n)是否为文本S的广义子串“Sg1Sg2……Sgm”,并输出判定结果的具体步骤如下:
a步 取文本S的第一个字符作为被比较字符,取模式P的第一个字符作为比较字符;
b步 如果被比较字符或比较字符为结束标志,转d步;
c步 若被比较字符与比较字符相等,则取文本S的下一个字符作为被比较字符,取模式P的下一个字符作为比较字符,转b步;否则,取文本S的下一个字符作为被比较字符,比较字符不变,转b步;
d步 若比较字符为结束标志,则判定模式P为文本S的广义子串,输出判定结果“存在”,结束匹配;否则,判定文本S中不存在模式P的广义子串,输出判定结果“不存在”,结束匹配。
与现有技术相比,本发明的有益效果是:
一、本发明的广义子串为文本S中任意一个或一个以上的字符组成的字符串,它对子串进行了概念的拓展,也即不要求子串中的字符为文本S中的连续字符,现有子串仅仅是本发明中的广义子串的一个特例。由于本发明只要模式P是文本S的广义子串,方法就给出P匹配S的结果,因此,本发明查全率明显提高,解决了现有子串模式匹配中存在的离散相关文本遗漏问题。并且也能够方便地通过进一步的模式匹配方法,实现广义子串的定位。
二、本发明方法只有当模式P中的字符必须全部、有序且可离散地在文本S中出现,文本S才被判定是与模式P相关的文本,因此,其匹配准确率有保障。
三、理论分析表明:本发明判定存在广义子串的时间复杂度为O(n),字符比较次数f(n)≤n;判定不存在广义子串的时间复杂度为O(n),字符比较次数f(n)=n。该判定方法,较之现有的最快子串模式匹配方法的复杂度O(m+n),以更快的方式,跳过无关的文本。因此,本发明方法处理快捷、有效。
四、由于广义子串为文本S=“S1S2……Sn”中的任意一个或一个以上的字符组成的字符串,信息检索与信息输入时,检索词可以由文本的有序、可离散的字符组成,其检索词的选择非常简单、灵活,既可减少输入码长,也能有效避免拼读错误或方言错误。
这种匹配方法是一种基本的广义子串模式匹配方法,判定存在广义子串时,输出“存在”,否则输出“不存在”。适合短文本、大容量字符串集的信息输入判定。
上述的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出简单匹配度的模式匹配方法,其作法是上述的基本匹配方法中a步、b步、c步不变,而d步修改为:
d步 若比较字符为结束标志,则判定模式P为文本S的广义子串,求出文本S的长度n,模式P的长度m,输出广义子串简单匹配度=Round(100×m÷n),结束匹配;否则,判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配。
这种输出简单匹配度的匹配方法,判定存在广义子串时,输出文本S与模式P的广义子串简单匹配度(100*m/n)。它适合短文本、大容量字符串集的信息输入判定。其检索结果可按广义子串简单匹配度降序排列方式,输出检索到的文本,便于用户首先选择匹配度高的文本。
这种方法判定存在广义子串的时间复杂度为O(n),字符比较次数f(n)≤n;判定不存在广义子串的时间复杂度为O(n),字符比较次数f(n)=n,与以上基本的模式匹配方法相同。
上述的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出精确匹配度的模式匹配方法,其作法是上述的基本匹配方法中a步、b步不变,而c步、d步修改为:
c步 若被比较字符与比较字符相等,则将被比较字符在文本S中的位置值,存储于位置数组pos[]中,其存储位置与比较字符在模式P中的位置相同,取文本S的下一个字符作为被比较字符,取模式P的下一个字符作为比较字符,转b步;否则,取文本S的下一个字符作为被比较字符,比较字符不变,转b步;
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则判定模式P为文本S的广义子串,求出文本S的长度n,模式P的长度m,求出广义子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出能反映广义子串离散程度的精确匹配度=Round(100×(m-(gm-g1-m+1)÷n)÷n),结束匹配。
这种输出精确匹配度的匹配方法,判定存在广义子串时,输出文本S与模式P的精确匹配度(100*(m-(tm-t1-m+1)÷n)÷n),精确匹配度不仅考虑文本S与模式P的长度,还考虑检索出的广义子串的离散数对匹配度的影响。它也适合短文本、大容量字符串集的信息输入判定。检索结果可按精确匹配度降序排列方式,输出检索到的文本,更方便用户首先选择匹配度高的文本。
本发明判定存在广义子串的时间复杂度为O(n),字符比较次数f(n)≤n;判定不存在广义子串的时间复杂度为O(n),字符比较次数f(n)=n,与以上基本的模式匹配方法相同。
上述输出精确匹配度的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出广义子串离散数及位置的模式匹配方法,其作法是上述的输出精确匹配度的模式匹配方法中a步、b步、c步不变,d步修改为:
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则,模式P为文本S的广义子串“Sg1Sg2……Sgm”,求出模式P的长度m,求出广义子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出广义子串的离散数D=gm-g1-m+1,并输出位置数组pos[],结束匹配。
该种方法判定存在广义子串后,输出广义子串的离散数和广义子串的每个字符在文本S中的对应位置,离散数反映了相关程度,可对检出文本的离散数进行升序排序,再结合定位信息,使得信息检索的后续处理更加准确、有效。该种方法适用于网络信息搜索、数据库信息检索等短文本的定位检索。
该方法的时间复杂度分析:找到第一个广义子串的时间复杂度为O(n),字符比较次数f(n)≤n;找不到广义子串的时间复杂度为O(n),字符比较次数f(n)=n。从时间复杂度上可以看出,该判定方法的时间复杂度与模式P无关,只需比较n次,即可跳过无关文本S,而找到第一个广义子串的最坏情形为比较n次字符。
上述输出广义子串离散数及位置的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出基于给定离散数的广义子串离散数及位置的模式匹配方法,其作法是上述输出广义子串离散数及位置的模式匹配方法中a步、b步、c步不变,d步修改为:
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则,模式P为文本S的广义子串“Sg1Sg2……Sgm”,求出:模式P的长度m、广义子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值、gm=pos[]中的最后一个数值、广义子串的离散数D=gm-g1-m+1。
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合离散数D0要求的第一个广义子串,输出离散数D,并输出位置数组pos[],结束匹配。
如果D>D0;重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为:当前被比较字符位置-模式P的长度m-预先给定的离散数D0,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
这种基于给定的离散数D0的广义子串模式匹配方法,可应用于网络信息搜索、数据库信息检索等长、短文本的定位检索。
该方法可以调整离散数D0,改变广义子串模式匹配的功能,搜索到满足给定离散数要求的广义子串及位置;离散数越小,搜索定位越精确,但搜索的查全功能就越差,可能跳过有关的一些满足广义子串的文本;离散数越大,搜索定位越不精确,但搜索查出的功能就越强,找出更多的满足广义子串匹配的文本。
因此,可以由用户确定该给定离散数,通过改变离散数,在查全率、查准率、定位精度上寻求平衡,从而满足不同情况下,用户对不同查全率、查准率、定位精度的信息检索要求。当给定离散数D0=0,演变为现有的子串模式匹配,检索功能等同于子串,实现了与子串模式匹配的兼容。可见,离散数D0在广义子串模式匹配方法中扮演着重要角色。
其时间复杂度分析:找到第一个满足离散数D0的广义子串的时间复杂度为O(n+(k-1)(m+D0)),字符比较次数为f(n)≤n+(k-1)(m+D0);找不到满足离散数D0的广义素子串的时间复杂度为O(n+k(m+D0)),字符比较次数为f(n)=n+k(m+D0);k为找到的广义子串出现的次数,D0为给定的离散数。
上述输出精确匹配度的用于信息检索与信息输入的广义子串模式匹配方法,略加修改与扩充即可形成输出广义素子串匹配度的模式匹配方法,其作法是上述的输出精确匹配度的模式匹配方法中a步、b步、c步不变,先找到广义子串,然后通过以下的d步、e步、f步,找到广义素子串也即找到的广义子串相关范围内离散数最小的广义子串,再由g步、h步判定并输出广义素子串匹配度:
d步 若比较字符不是结束标志,转h步;否则,将文本S中被比较字符的位置前移2个字符位置,并取该位置的字符作为被比较字符,将模式P中比较字符的位置前移2个字符位置,并取该位置的字符作为比较字符。
然后,再依次进行以下的e、f、g、h步:
e步 如果模式P的首字符已比较完毕,转g步;
f步 若被比较字符与比较字符相等,则将被比较字符在文本S中的位置值,存储于位置数组pos[]中,其存储位置与比较字符在模式P中的位置相同,取文本S的前一个字符作为被比较字符,取模式P的前一个字符作为比较字符,转e步;否则,取文本S的前一个字符作为被比较字符,比较字符不变,转e步;
g步 判定模式P为文本S的广义素子串,求出文本S的长度n,模式P的长度m,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出广义素子串匹配度=Round(100×(m-(gm-g1-m+1)÷n)÷n),结束匹配;
h步 判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配。
这种输出广义素子串匹配度的模式匹配方法,能判定是否存在广义素子串,并输出文本S与模式P的广义素子串的匹配度(100×(m-(gm-g1-m+1)÷n)÷n)。广义素子串反映了比广义子串更好、离散数更小的匹配位置,因此,广义素子串的匹配度,能更好地反映匹配的程度。
这种方法适合短文本、大容量字符串集的信息输入判定。利用该广义素子串匹配度,可以对检索出的所有文本进行降序排列输出,使用户首先处理匹配度高的文本,提高了检索的效率。
该种方法找到第一个广义素子串的时间复杂度为O(n),字符比较次数f(n)≤n+(m+Df)≤2n-1,Df为找到的第一个广义素子串的离散数;找不到广义素子串的时间复杂度为O(n),字符比较次数f(n)=n。从时间复杂度分析可知,该判定方法找不到广义素子串的时间复杂度与模式P无关,只需比较n次,即可跳过无关文本,找到第一个广义素子串的最坏情形为比较2n-1次字符。
上述输出广义素子串匹配度的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即形成输出广义素子串离散数及位置的模式匹配方法,其作法是上述的输出广义素子串匹配度的模式匹配方法中a-f步以及h步不变,g步修改为:
g步 判定模式P为文本S的广义素子串,求出模式P的长度m,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出离散数D=gm-g1-m+1,并输出位置数组pos[],结束匹配。
该种方法在判定存在广义素子串后,输出广义素子串的离散数及广义素子串的每个字符在文本S中的位置。广义素子串定位优于广义子串模式匹配定位,这是因为存在广义子串,就一定存在广义素子串,而广义素子串的离散数一定小于等于广义子串的离散数;并且离散数反映了相关程度,可对检出文本的离散数进行升序排序,再结合定位信息,使得信息检索的后续处理更为准确、有效。该种方法适用于网络信息搜索、数据库信息检索等短文本的定位检索。
该方法的时间复杂度分析:找到第一个广义素子串的时间复杂度为O(n),字符比较次数f(n)≤2n-1;找不到广义素子串的时间复杂度为O(n),字符比较次数f(n)=n。从时间复杂度上可以看出,该判定方法找不到广义素子串的时间复杂度与模式P无关,只需比较n次,即可跳过无关文本S,而找到第一个广义素子串的最坏情形为比较2n-1次字符。
上述输出广义素子串离散数及位置的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出基于给定离散数的广义素子串离散数及位置的模式匹配方法,其作法是上述输出广义素子串离散数及位置的模式匹配方法中的a-f步以及h步不变,g步修改为:
g步 判定模式P为文本S的广义素子串,求出模式P的长度m,求出:广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值、gm=pos[]中的最后一个数值、离散数D=gm-g1-m+1。
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合离散数D0要求的第一个广义素子串,输出离散数D,并输出位置数组pos[],结束匹配。
如果D>D0,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为:Max(pos[]的第二个位置的值,被比较字符的当前位置-m-D0),并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
这种方法可以调整广义素子串离散数D0,改变广义素子串模式匹配的功能,搜索到满足离散数要求的广义素子串及位置。离散数越小,搜索定位越精确,但搜索的查全功能就越差,可能跳过有关的一些满足广义素子串的文本;离散数越大,搜索定位越不精确,但搜索的查出功能就越强,找出更多满足广义素子串匹配的文本。这使得本发明可以通过调节预先给定的离散数,满足信息检索中不同场合对不同定位精度、不同查全功能的要求。
该方法可应用于网络信息搜索、数据库信息检索等长、短文本的定位检索。
其时间复杂度分析:找到第一个满足离散数D0的广义素子串的时间复杂度为O(n+2(k-1)(m+Da-1)),字符比较次数为f(n)≤n+2(k-1)(m+Da-1);找不到满足离散数D0的广义素子串的时间复杂度为O(n+2k(m+Da-1)),字符比较次数为f(n)=n+2k(m+Da-1);k为找到的广义素子串出现的次数,Da为找到的广义素子串的平均离散数。
上述输出广义素子串匹配度的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出最小广义素子串匹配度的模式匹配方法,其作法是上述的输出广义素子串匹配度的模式匹配方法中a-f步不变,修改g步、h步,并增加i步:
g步 判定模式P为文本S的广义素子串,如果当前最小广义素子串的首字符以及末字符在文本S中的位置y1、ym未被赋值,则令y1=pos[]中的第一个数值,ym=pos[]中的最后一个数值,转i步;否则,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,若(gm-g1)<(ym-y1),则y1=g1,ym=gm,转i步;若(gm-g1)≥(ym-y1),则直接转i步;
h步 如果当前最小广义素子串的首字符与末字符在文本S中的位置y1、y2未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出文本S的长度n,模式P的长度m,输出最小广义素子串匹配度=Round(100×(m-(ym-y1-m+1)÷n)÷n),结束匹配;
i步 若(ym-y1-m+1)=0,转h步;否则,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为pos[]的第二个位置的值,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
这种输出最小广义素子串匹配度的模式匹配方法,判定存在文本中最小的广义素子串时,输出文本S与模式P的最小广义素子串匹配度(100×(m-(ym-y1-m+1)÷n)÷n),最小广义素子串反映了文本中离散数最小的广义子串,因此,最小广义素子串的匹配度,能最精确地反映匹配的程度。
这种方法更适合短文本、大容量字符串集的信息输入判定。利用该匹配度,可以对检索出的所有文本进行降序排列输出,用户首先处理的是匹配度高的文本,更进一步提高了信息检索与输入的处理效率。
该种方法找到最小的广义素子串的时间复杂度为O(n+2k(m+Da-1)),字符比较次数为f(n)≤n+2k(m+Da-1),其中,k为找到的广义素子串出现的次数,Da为找到的广义素子串的平均离散数。找不到最小广义子串的时间复杂度为O(n),字符比较次数为f(n)=n。从时间复杂度分析中可知,当文本串T与模式P无关联时,也即T中不可能出现P的广义子串,本方法只需进行n次字符比较即可跳过无关文本。
上述输出最小广义素子串匹配度的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即形成输出最小广义素子串离散数及位置的模式匹配方法,其作法是上述的输出最小广义素子串匹配度的模式匹配方法中a-f步不变,g步、h步、i步修改为:
g步 找到广义素子串,如果当前最小广义素子串位置数组min[]未被赋值,则令min[]=pos[],转i步;否则,求出广义素子串的首字符及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,求出当前最小广义素子串首字符及末字符在文本s中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,若(gm-g1)<(ym-y1),则令min[]=pos[],转i步;若(gm-g1)≥(ym-y1),则直接转i步;
h步 如果当前最小广义素子串的位置数组min[]未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出模式P的长度m,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,输出离散数D=ym-y1-m+1,并输出位置数组min[],结束匹配;
i步 求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,若(ym-y1-m+1)=0,转h步;否则,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为pos[]的第二个位置的值,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
该种方法进一步改善了广义素子串模式匹配的定位精度。这是因为,若文本S中,存在广义素子串,则一定存在离散数最小的广义素子串。在文本的全部范围内,找出离散数最小的广义素子串,是一种最佳的定位方案,能最有效地提高信息检索的效率、准确率。
该方法的时间复杂度分析:找到最小的广义素子串的时间复杂度为O(n+2(k-1)(m+Da-1)),字符比较次数为f(n)≤n+2(k-1)(m+Da-1);找不到最小广义素子串的时间复杂度为O(n+2k(m+Da-1)),字符比较次数为f(n)=n+2k(m+Da-1);k为找到的广义素子串出现的次数,Da为找到的广义素子串的平均离散数。
上述输出最小广义素子串离散数及位置的用于信息检索与信息输入的广义子串模式匹配方法,略加修改即可形成输出基于给定离散数的最小广义素子串离散数及位置的模式匹配方法,其作法是上述输出最小广义素子串离散数及位置的模式匹配方法中的a-g步、i步不变,h步修改为:
h步 如果当前最小广义素子串的位置数组min[]未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出模式P的长度m,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,求出离散数D=ym-y1-m+1。
如果离散数D>预先给定的离散数D0,则判定文本S中不存在满足预先给定的离散数D0的最小广义素子串,输出判定结果“-1”,结束匹配。
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合预先给定的离散数D0要求的最小广义素子串,输出离散数D,并输出位置数组min[],结束匹配。
该种方法在文本S中找出满足给定离散数D0要求的最小的广义素子串,改善了广义素子串模式匹配的功能,过滤掉最小的广义素子串离散数过大的相关文本,提高了信息检索准确率。
本发明,可应用于网络信息搜索、数据库信息检索等长、短文本的定位检索。
该方法的时间复杂度与最小广义素子串模式匹配方法相同。
上述的用于信息检索与信息输入的广义子串模式匹配方法,修改扩充即可形成二维广义子串模式匹配方法,其作法是首先将广义子串及文本的概念扩充形成二维广义子串及二维文本的概念,然后相应进行与广义子串模式匹配方法中a、b、c、d四步分别类似的A、B、C、D四步,并在C步中引用了a、b、c、d四步,即:
用于信息检索与信息输入的广义子串模式匹配方法,所述的文本S有多个,多个文本S1S2……Sn构成二维文本Ds=“S1S2……Sn”,二维文本Ds=“S1S2……Sn”中的任意一个或一个以上的文本SGi的广义子串SGi’组成的文本串“SG1’SG2’……SGm’”(其中1≤G1<G2<……<Gm≤n)为二维广义子串,二维的广义子串模式匹配即判定二维模式Dp=“P1P2……Pm”(1≤m≤n)是否为二维文本Ds的二维广义子串,这种二维的广义子串模式匹配方法的具体步骤如下:
A步 取二维文本Ds的第一个文本S1作为被比较文本,取二维模式Dp的第一个模式P1作为比较文本;
B步 如果被比较文本或比较文本为结束标志,转D步;
C步 进行所述广义子串基本模式匹配方法中的a步、b步、c步、d步的步骤,若d步的结果为“存在”,则取二维文本Ds的下一个文本作为被比较文本,取二维模式Dp的下一个模式作为比较文本,转B步;否则,取二维文本Ds的下一个文本作为被比较文本,比较文本不变,转B步;
D步 若比较文本为结束标志,则二维模式Dp为二维文本Ds的二维广义子串,求出二维文本Ds的文本个数n,二维模式Dp的模式个数m;输出二维广义子串简单匹配度=Round(100×m÷n),结束匹配;否则二维文本Ds中不存在二维模式Dp的二维广义子串,输出判定结果“-1”,结束匹配。
这种二维广义子串模式匹配方法,对广义子串进行了拓展,实现了二维广义子串模式匹配,广义子串仅仅是二维广义子串的一个特例,也即当上述的二维广义子串“Sg1’Sg2’……Sgm’”中的m=1时,二维广义子串就演变为广义子串。
二维广义子串模式匹配方法用于二维空间。例如,在键盘输入中的中文单字拼音、英文单词为一维的字符串,中文词组的拼音、英文词组可认为是二维的字符串。二维广义子串具有广义子串的所有特点,又包容了广义子串。如此,本发明既可在一维文本空间的层面上进行任意字符省略输入与检索,又可在二维空间层面上进行任意一维文本的省略输入与检索,均可查出相关文本,使得信息检索与信息输入更加简单、灵活。
这种二维广义子串模式匹配方法,判定存在二维广义子串后,输出二维广义子串的简单匹配度(100×m÷n)。利用该匹配度,可以对检索出的所有二维文本进行降序排列输出,用户首先处理的是匹配度高的二维文本,提高了检索处理的效率。它适合于词典类短文本、大容量二维字符串集的检索判定。
其时间复杂度分析:假设二维文本S中各文本字符串的长度分别为:L1、L2、……、Ln,令L=L1+L2+……+Ln,则判定存在二维广义子串的时间复杂度为O(L),字符比较次数f(L)≤L,判定不存在二维广义子串的时间复杂度为O(L),字符比较次数f(L)=L,与二维模式P的长度无关,该判定方法,以最快的方式,跳过无关的文本。
上述的用于信息检索与信息输入的二维广义子串模式匹配方法,略加修改即可形成输出精确匹配度的模式匹配方法,其作法是上述的二维广义子串模式匹配方法中A步、B步不变,而C步、D步修改为:
C步 进行所述广义子串基本模式匹配方法中的a步、b步、c步、d步的步骤,若d步的结果为“存在”,则将被比较文本在二维文本Ds中的位置值,存储于位置数组pos[]中,其存储位置与比较文本在二维模式Dp中的位置相同,取二维文本Ds的下一个文本作为被比较文本,取二维模式Dp的下一个模式作为比较文本,转B步;否则,取二维文本Ds的下一个文本作为被比较文本,比较文本不变,转B步;
D步 若比较文本不是结束标志,则二维文本Ds中不存在二维模式Dp的二维广义子串,输出判定结果“-1”,结束匹配;否则,判定二维模式Dp为二维文本Ds的二维广义子串,求出二维文本Ds的文本个数n,二维模式Dp的模式个数m,求出二维广义子串的第一个文本串以及最后一个文本串在二维文本Ds中的位置G1=pos[]中的第一个数值,Gm=pos[]中的最后一个数值,输出二维广义子串的精确匹配度=Round(100×(m-(Gm-G1-m+1)÷n)÷n),结束匹配。
该种方法判定存在二维广义子串时,输出二维广义子串的精确匹配度(100×(m-(gm-g1-m+1)÷n)÷n)。二维广义子串的精确匹配度不仅考虑二维文本S与二维模式P的一维文本个数,还考虑检索出的二维广义子串的离散数对匹配度的影响。利用该匹配度,可以对检索出的所有二维文本进行降序排列输出,用户首先处理的是匹配度高的二维文本,进一步提高了二维空间的检索处理效率。它也适用于词典类短文本、大容量二维字符串集的检索判定。
其时间复杂度分析:判定存在二维广义子串的时间复杂度为O(L),字符比较次数f(L)≤L,判定不存在二维广义子串的时间复杂度为O(L),字符比较次数f(L)=L,与二维模式P的长度无关,该判定方法,以最快的方式,跳过无关的文本。
下面结合具体实施方式对本发明作进一步的详细说明。
具体实施方式
实施例一
本发明的第一种实施方式为:一种用于信息检索与信息输入的广义子串模式匹配方法,其特点是所述的广义子串为文本S=“S1S2……Sn”中的任意一个或一个以上的字符组成的字符串“Sg1Sg2……Sgm”(1≤g1<g2……<gm≤n);广义子串模式匹配即判定模式P=“P1P2P3……Pm”(0<m≤n)是否为文本S的广义子串“Sg1Sg2……Sgm”,并输出判定结果的具体步骤如下:
a步 取文本S的第一个字符作为被比较字符,取模式P的第一个字符作为比较字符;
b步 如果被比较字符或比较字符为结束标志,转d步;
c步 若被比较字符与比较字符相等,则取文本S的下一个字符作为被比较字符,取模式P的下一个字符作为比较字符,转b步;否则,取文本S的下一个字符作为被比较字符,比较字符不变,转b步;
d步 若比较字符为结束标志,则判定模式P为文本S的广义子串,输出判定结果“存在”,结束匹配;否则,判定文本S中不存在模式P的广义子串,输出判定结果“不存在”,结束匹配。
实施例二:
本例的方法是在实施一的基本匹配方法上,略加修改而形成的输出简单匹配度的模式匹配方法,其作法是实施例一的方法中a步、b步、c步不变,而d步修改为:
d步 若比较字符为结束标志,则判定模式P为文本S的广义子串,求出文本S的长度n,模式P的长度m,输出广义子串简单匹配度=Round(100×m÷n),结束匹配;否则,判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配。
本发明中的Round为取整函数即四舍五入取整运算。
实施例三
本例的方法也是在实施一的基本匹配方法上,略加修改而形成的输出精确匹配度的模式匹配方法,其作法是在实施一的方法中a步、b步不变,而c步、d步修改为:
c步 若被比较字符与比较字符相等,则将被比较字符在文本S中的位置值,存储于位置数组pos[]中,其存储位置与比较字符在模式P中的位置相同,取文本S的下一个字符作为被比较字符,取模式P的下一个字符作为比较字符,转b步;否则,取文本S的下一个字符作为被比较字符,比较字符不变,转b步;
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则判定模式P为文本S的广义子串,求出文本S的长度n,模式P的长度m,求出广义子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出能反映广义子串离散程度的精确匹配度=Round(100×(m-(gm-g1-m+1)÷n)÷n),结束匹配。
实施例四
本例方法是在实施三的输出精确匹配度的模式方法上,略加修改而形成的输出广义子串离散数及位置的模式匹配方法,其作法是实施三的方法中a步、b步、c步不变,d步修改为:
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则,模式P为文本S的广义子串“Sg1Sg2……Sgm”,求出模式P的长度m,求出广义子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出广义子串的离散数D=gm-g1-m+1,并输出位置数组pos[],结束匹配。
实施例五
本例的方法是在实施四的输出广义子串离散数及位置的方法上,略加修改而形成的输出基于给定离散数的广义子串离散数及位置的模式匹配方法,其作法是在实施例四的方法中a步、b步、c步不变,d步修改为:
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则,模式P为文本S的广义子串“Sg1Sg2……Sgm”,求出:模式P的长度m、广义子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值、gm=pos[]中的最后一个数值、广义子串的离散数D=gm-g1-m+1;
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合离散数D0要求的第一个广义子串,输出离散数D,并输出位置数组pos[],结束匹配。
如果D>D0;重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为:当前被比较字符位置-模式P的长度m-预先给定的离散数D0,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
实施例六
本例的方法是在实施例三的输出精确匹配度的模式匹配方法上,略加修改与扩充而形成的输出广义素子串匹配度的模式匹配方法,其作法是实施例三的方法中a步、b步、c步不变,先找到广义子串,然后通过以下的d步、e步、f步找到广义素子串,再由g步、h步判定并输出广义素子串匹配度:
d步 若比较字符不是结束标志,转h步;否则,将文本S中被比较字符的位置前移2个字符位置,并取该位置的字符作为被比较字符,将模式P中比较字符的位置前移2个字符位置,并取该位置的字符作为比较字符。
然后,再依次进行以下的e、f、g、h步:
e步 如果模式P的首字符已比较完毕,转g步;
f步 若被比较字符与比较字符相等,则将被比较字符在文本S中的位置值,存储于位置数组pos[]中,其存储位置与比较字符在模式P中的位置相同,取文本S的前一个字符作为被比较字符,取模式P的前一个字符作为比较字符,转e步;否则,取文本S的前一个字符作为被比较字符,比较字符不变,转e步;
g步 判定模式P为文本S的广义素子串,求出文本S的长度n,模式P的长度m,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出广义素子串匹配度=Round(100×(m-(gm-g1-m+1)÷n)÷n),结束匹配;
h步 判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配。
实施七
本例的方法是在实施例六的输出广义素子串匹配度的模式匹配方法上,略加修改而形成的输出广义素子串离散数及位置的模式匹配方法,其作法是实施例六的方法中a-f步以及h步不变,g步修改为:
g步 判定模式P为文本S的广义素子串,求出模式P的长度m,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,输出离散数D=gm-g1-m+1,并输出位置数组pos[],结束匹配。
实施例八
本例是在实施七的输出广义素子串离散数及位置的模式匹配方法上,略加修改而形成的输出基于给定离散数的广义素子串离散数及位置的模式匹配方法,其作法是在实施例七的方法中的a-f步以及h步不变,g步修改为:
g步 判定模式P为文本S的广义素子串,求出模式P的长度m,求出:广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值、gm=pos[]中的最后一个数值、离散数D=gm-g1-m+1。
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合离散数D0要求的第一个广义素子串,输出离散数D,并输出位置数组pos[],结束匹配。
如果D>D0,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为:Max(pos[]的第二个位置的值,被比较字符的当前位置-m-D0),Max为求最大值运算,该式的意义是取出两个数中最大的数的值。并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
实施例九
本例是在实施六的输出广义素子串匹配度的模式匹配方法上,略加修改而形成的输出最小广义素子串匹配度的模式匹配方法,其作法是在实施例六的方法中a-f步不变,修改g步、h步,并增加i步:
g步 判定模式P为文本S的广义素子串,如果当前最小广义素子串的首字符以及末字符在文本S中的位置y1、ym未被赋值,则令y1=pos[]中的第一个数值,ym=pos[]中的最后一个数值,转i步;否则,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,若(gm-g1)<(ym-y1),则y1=g1,ym=gm,转i步;若(gm-g1)≥(ym-y1),则直接转i步;
h步 如果当前最小广义素子串的首字符与末字符在文本S中的位置y1、y2未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出文本S的长度n,模式P的长度m,输出最小广义素子串匹配度=Round(100×(m-(ym-y1-m+1)÷n)÷n),结束匹配;
i步 若(ym-y1-m+1)=0,转h步;否则,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为pos[]的第二个位置的值,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
实施例十
本例是在实施例九的输出最小广义素子串匹配度的模式匹配方法上,略加修改而形成的输出最小广义素子串离散数及位置的模式匹配方法,其作法是实施例九的方法中a-f步不变,g步、h步、i步修改为:
g步 找到广义素子串,如果当前最小广义素子串位置数组min[]未被赋值,则令min[]=pos[],转i步;否则,求出广义素子串的首字符及末字符在文本S中的位置g1=pos[]中的第一个数值,gm=pos[]中的最后一个数值,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,若(gm-g1)<(ym-y1),则令min[]=pos[],转i步;若(gm-g1)≥(ym-y1),则直接转i步;
h步 如果当前最小广义素子串的位置数组min[]未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出模式P的长度m,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,输出离散数D=ym-y1-m+1,并输出位置数组min[],结束匹配;
i步 求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,若(ym-y1-m+1)=0,转h步;否则,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为pos[]的第二个位置的值,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
实施例十一
本例是在实施例十的输出最小广义素子串离散数及位置的模式匹配方法上,略加修改而形成的输出基于给定离散数的最小广义素子串离散数及位置的模式匹配方法,其作法是在实施例十的方法中的a-g步、i步不变,h步修改为:
h步 如果当前最小广义素子串的位置数组min[]未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出模式P的长度m,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[]中的第一个数值,ym=min[]中的最后一个数值,求出离散数D=ym-y1-m+1。
如果离散数D>预先给定的离散数D0,则判定文本S中不存在满足预先给定的离散数D0的最小广义素子串,输出判定结果“-1”,结束匹配。
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合预先给定的离散数D0要求的最小广义素子串,输出离散数D,并输出位置数组min[],结束匹配。
实施例十二
本例是在实施例一的用于信息检索与信息输入的广义子串模式匹配方法基础上,修改扩充而形成二维广义子串模式匹配方法,它首先将广义子串及文本的概念扩充形成二维广义子串及二维文本的概念,然后相应进行与广义子串模式匹配方法中a、b、c、d四步分别类似的A、B、C、D四步,并在C步中引用了a、b、c、d四步,即:
用于信息检索与信息输入的广义子串模式匹配方法,所述的文本S有多个,多个文本S1S2……Sn构成二维文本Ds=“S1S2……Sn”,二维文本Ds=“S1S2……Sn”中的任意一个或一个以上的文本SGi的广义子串SGi’组成的文本串“SG1’SG2’……SGm’”(其中1≤G1<G2<……<Gm≤n)为二维广义子串,二维的广义子串模式匹配即判定二维模式Dp=“P1P2……Pm”(1≤m≤n)是否为二维文本Ds的二维广义子串,这种二维的广义子串模式匹配方法的具体步骤如下:
A步 取二维文本Ds的第一个文本S1作为被比较文本,取二维模式Dp的第一个模式P1作为比较文本;
B步 如果被比较文本或比较文本为结束标志,转D步;
C步 进行所述广义子串模式匹配方法中的a步、b步、c步、d步的步骤,若d步的结果为“存在”,则取二维文本Ds的下一个文本作为被比较文本,取二维模式Dp的下一个模式作为比较文本,转B步;否则,取二维文本Ds的下一个文本作为被比较文本,比较文本不变,转B步;
D步 若比较文本为结束标志,则二维模式Dp为二维文本Ds的二维广义子串,求出二维文本Ds的文本个数n,二维模式Dp的模式个数m;输出二维广义子串简单匹配度=Round(100×m÷n),结束匹配;否则二维文本Ds中不存在二维模式Dp的二维广义子串,输出判定结果“-1”,结束匹配。
实施例十三
本例是在实施例十二的用于信息检索与信息输入的二维广义子串模式匹配方法,略加修改而形成的输出精确匹配度的二维广义子串模式匹配方法,其作法是实施例十二的方法中A步、B步不变,而C步、D步修改为:
C步 进行所述广义子串模式匹配方法中的a步、b步、c步、d步的步骤,若d步的结果为“存在”,则将被比较文本在二维文本Ds中的位置值,存储于位置数组pos[]中,其存储位置与比较文本在二维模式Dp中的位置相同,取二维文本Ds的下一个文本作为被比较文本,取二维模式Dp的下一个模式作为比较文本,转B步;否则,取二维文本Ds的下一个文本作为被比较文本,比较文本不变,转B步;
D步 若比较文本不是结束标志,则二维文本Ds中不存在二维模式Dp的二维广义子串,输出判定结果“-1”,结束匹配;否则,判定二维模式Dp为二维文本Ds的二维广义子串,求出二维文本Ds的文本个数n,二维模式Dp的模式个数m,求出二维广义子串的第一个文本串以及最后一个文本串在二维文本Ds中的位置G1=pos[]中的第一个数值,Gm=pos[]中的最后一个数值,输出二维广义子串的精确匹配度=Round(100×(m-(Gm-G1-m+1)÷n)÷n),结束匹配。
下面,是将以上的各实施例应用在列举的模式和文本中,进行模式匹配后输出的结果及其综合分析。
实施例一、二、三、六、九的模式匹配方法判定文本中是否存在广义子串并进行匹配度的计算,但不进行定位,主要在信息输入技术领域使用。表1给出了这几种模式匹配方法的一个具体模式匹配的输出结果。
表1:实施例一、二、三、六、九的模式匹配方法的输出结果比较
模式P=ab(检索词) | 文本S(1) | 文本S(2) | 文本S(3) | 文本S(4) | 文本S(5) | 文本排序结果 | |
ab | aacb | aaccbc | aacbcc | aacbab | |||
实施例一 | 匹配对应位置广义子串匹配结果 | ab存在 | aac b存在 | aacc bc存在 | aac bcc存在 | aac bab存在 | 不能排序 |
实施例二 | 匹配对应位置广义子串简单匹配度 | ab100 | aac b50 | aacc bc37 | aac bcc37 | aac bab37 | (1)(2)(3)(4)(5) |
实施例三 | 匹配对应位置广义子串精确匹配度 | ab100 | aac b38 | aacc bc25 | aac bcc28 | aac bab28 | (1)(2)(4)(5)(3) |
实施例六 | 匹配对应位置广义素子串匹配度 | ab100 | a ac b44 | a acc bc28 | a ac bcc31 | a ac bab31 | (1)(2)(4)(5)(3) |
实施例九 | 匹配对应位置最小广义素子串匹配度 | ab100 | a ac b44 | a acc bc28 | a ac bcc31 | aacb ab37 | (1)(2)(5)(4)(3) |
注:带下划线的字符表示模式P在文本中所匹配的字符。
从表1可知:实施例一的模式匹配方法只判定模式P是否存在于文本S中,输出结果均为“存在”,不能对检索到的文本进行排序输出。实施例二的输出简单匹配度的模式匹配方法能根据模式P与文本S的广义子串简单匹配度进行排序,但不能反映出广义子串离散数对匹配度的影响,离散数越小,匹配度应该越大。实施例三的精确匹配度模式匹配方法能反映离散数对匹配度的影响,不同离散数得到不同的匹配度,但实施例三模式匹配方法的判定结果不一定是更好的匹配位置。实施例六的广义素子串匹配度模式匹配方法可以求出广义素子串的位置,由于广义素子串是相应广义子串范围内,离散数更小的广义子串,表现出更为精确的匹配位置,因此输出的匹配度更为精确。实施例九的最小广义素子串匹配度的模式匹配方法,可以求出文本中的最小广义素子串的位置,因此输出的匹配度最为精确,排序结果最理想。
表2,则列出了上述的实施例一、二、三、六、九的广义子串模式匹配方法的时间复杂性。
表2:实施例一、二、三、六、九方法的时间复杂性分析
匹配方法 | 时间复杂度 | 字符比较次数 |
实施例一 | 0(n) | f(n)≤n |
实施例二 | 0(n) | f(n)≤n |
实施例三 | 0(n) | f(n)≤n |
实施例六 | 0(n) | f(n)≤2n |
实施例九 | O(n+2k(m+Da-1)) | f(n)≤n+2k(m+Da-1) |
(其中,k为检索中找到的广义素子串个数,Da为找到的广义素子串的平均离散数)
表1、表2反映出,对实施例九的最小广义素子串模式匹配方法检索得到的匹配度进行降序排序输出,能精确地体现文本的匹配程度,但该方法时间复杂度最高,也相应增加了该方法本身的复杂性。因此,可根据实际问题的要求,综合考虑各种因素,选择以上合适的方法进行检索判定。
实施例四、五、七、八、十、十一的模式匹配方法,在判定文本中是否存在广义子串基础上,进行离散数的计算,以反映模式与文本匹配的相关程度,并且给出模式每个字符在文本中的对应位置也即对模式进行定位。它们主要在信息检索技术领域使用,更方便、有效地检索出相关文本并指出模式P中的字符在文本T中的具体定位位置。下面列出了这几种模式匹配方法的一个具体模式匹配的输出定位结果。
能定位的几种广义子串模式匹配方法的输出结果(示例)如下,检索词即为模式。
文本 “拼音为主的中文拼音、笔划、声调组合输入法,简称拼、笔、声组合输入法”现有的子串定位 检索遗漏
检索词 =“
拼笔声”
文本 =“
拼音为主的中文拼音、
笔划、
声调组合输入法,简称拼、笔、声组合输入法”
实施例四 ↑ ↑ ↑
检索词 =“
拼笔声”
文本 =“
拼音为主的中文拼音、
笔划、
声调组合输入法,简称拼、笔、声组合输入法”
实施例五 ↑ ↑ ↑
检索词 =“
拼笔声” 给定离散数=25
文本 =“拼音为主的中文
拼音、
笔划、
声调组合输入法,简称拼、笔、声组合输入法”
实施例五 ↑ ↑ ↑
检索词 =“
拼笔声”,给定离散数=10
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称
拼、
笔、
声组合输入法”
实施例五 ↑ ↑ ↑
检索词 =“
拼笔声”,给定离散数=5
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称拼、笔、声组合输入法”
实施例五 检索遗漏(不符合给定离散数1的要求)
检索词 =“
拼笔声”,给定离散数=1
文本 =“拼音为主的中文
拼音、
笔划、
声调组合输入法,简称拼、笔、声组合输入法”
实施例七 ↑ ↑ ↑
检索词 =“
拼笔声”
文本 =“拼音为主的中文
拼音、
笔划、
声调组合输入法,简称拼、笔、声组合输入法”
实施例八 ↑ ↑ ↑
检索词 =“
拼笔声”,给定离散数=25
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称
拼、
笔、
声组合输入法”
实施例八 ↑ ↑ ↑
检索词 =“
拼笔声”,给定离散数=5
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称拼、笔、声组合输入法”
实施例八 检索遗漏(不符合给定离散数1的要求)
检索词 =“
拼笔声”,给定离散数=1
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称
拼、
笔、
声组合输入法”
实施例十 ↑ ↑ ↑
检索词 =“
拼笔声”
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称
拼、
笔、
声组合输入法”
实施例十一 ↑ ↑ ↑
检索词 =“
拼笔声”,给定离散数=25
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称
拼、
笔、
声组合输入法”
实施例十一 ↑ ↑ ↑
检索词 =“
拼笔声”,给定离散数=5
文本 =“拼音为主的中文拼音、笔划、声调组合输入法,简称拼、笔、声组合输入法”
实施例十一 检索遗漏(不符合给定离散数1的要求)
检索词 =“
拼笔声”,给定离散数=1
实施例四是输出广义子串离散数及位置的模式匹配方法,它定位于文本中出现的第一个广义子串,没有离散数限制,适合短文本的信息检索。实施例五是输出基于给定离散数的广义子串离散数及位置的模式匹配方法,对实施例四的模式匹配方法加以改进,定位于文本中出现的第一个满足预先给定的离散数D0的广义子串,适合长、短文本的信息检索。
实施例七是输出广义素子串离散数及位置的模式匹配方法,它定位于文本中出现的第一个广义素子串,广义素子串是相应广义子串范围内,离散数更小的广义子串,因此定位更精确,没有离散数限制,适合短文本的信息检索。实施例八是输出基于给定离散数的广义素子串离散数及位置的模式匹配方法,它对实施例七的方法加以改进,定位于文本中出现的第一个满足预先给定的离散数D0的广义素子串,适合长、短文本的信息检索。
实施例十是输出最小广义素子串离散数及位置的模式匹配方法,它定位于文本中出现的最小广义素子串,最小广义素子串是文本范围内,离散数最小的广义子串,因此定位最精确。该方法没有离散数限制,适合短文本的信息检索。实施例十一是输出基于给定离散数的最小广义素子串离散数及位置的模式匹配方法,它对实施例十的方法加以改进,定位于满足预先给定的离散数D0的最小广义素子串,适合长、短文本的信息检索。
从上面示例可知,基于现有的子串的模式匹配定位会出现离散相关文本的检索遗漏。本发明的广义子串模式匹配方法中,只有当实施例五、实施例八以及实施例十一方法的给定离散数过小时,才会出现不希望发生的离散相关文本检索遗漏,而其它广义子串模式匹配方法不会发生离散相关文本检索遗漏。实施例五、实施例八以及实施例十一的方法是最灵活的方法,可以通过调节预先给定的离散数大小,在查全率、查准率、定位精度上进行平衡;且在同样给定的离散数条件下,相关性文本的查全率、查准率相同,但后者定位最佳。
表3,列出了以上几种能定位的广义子串模式匹配方法的时间复杂性,以及各方法适应的范围。
表3:能定位的几种广义子串模式匹配方法综合分析
匹配方法 | 时间复杂度 | 字符比较次数 | 应用适应性 |
实施例四 | 0(n) | f(n)≤n | 短文本的离散相关判定与定位 |
实施例五 | O(n+k(m+D0)) | f(n)≤n+k(m+D0) | 长、短文本的离散相关判定与定位 |
实施例七 | 0(n) | f(n)≤2n-1 | 短文本的离散相关判定与定位 |
实施例八 | O(n+2k(m+Da-1)) | f(n)≤n+2k(m+Da-1) | 长、短文本的离散相关判定与定位 |
实施例十 | O(n+2k(m+Da-1)) | f(n)≤n+2k(m+Da-1) | 长、短文本的离散相关判定与定位 |
实施例十一 | O(n+2k(m+Da-1)) | f(n)≤n+2k(m+Da-1) | 长、短文本的离散相关判定与定位 |
(其中,D0为预先给定的离散度,k为检索中找到的广义素子串个数,Da为找到的广义素子串的平均离散素)
以上的实施例一、二、三、六、九是一维的广义子串模式匹配方法。而实施例十二、十三的模式匹配方法则是对以上的一维广义子串模式匹配方法进行扩充、修改而形成的二维广义子串模式匹配方法,它适用于二维空间的短文本、大容量词库模式匹配。例如,在键盘输入中的中文单字拼音、英文单词为一维的字符串,中文词组的拼音、英文词组可认为是二维的字符串。
以下表4给出了实施例十二、十三的方法具体用于二维文本中的模式匹配的结果。
表4:二维广义子串模式匹配方法的结果(示例)
二维模式Dp=中国(检索词) | 二维文本Ds(1) | 二维文本Ds(2) | 二维文本Ds(3) | 二维文本Ds(4) | 文本排序结果 | |
中国 | 中华全国 | 中等国家 | 发展中国家 | |||
实施例十二 | 匹配对应位置二维广义子串简单匹配度 | 中国100 | 中华全 国50 | 中等 国家50 | 发展 中国家40 | (1)(2)(3)(4) |
实施例十三 | 匹配对应位置二维广义子串精确匹配度 | 中国100 | 中华全 国38 | 中等 国家44 | 发展 中国家40 | (1)(3)(4)(2) |
注:带下划线的汉字表示二维模式Dp在二维文本中所匹配的汉字。
表4中的模式与文本内容,实际上为汉字的拼音,为了更清晰地反映二维离散特性,用汉字替代了汉字拼音。每个汉字的拼音还可以进行一维的随意缺省检索。
实施例十二的二维的广义子串模式匹配方法,能根据二维模式Dp与二维文本Ds的二维广义子串简单匹配度进行排序,但不能反映出二维广义子串离散数对匹配度的影响,离散数越小,匹配度应该越大。实施例十三的输出精确匹配度的二维广义子串模式匹配方法,输出的精确匹配度能反映离散数对匹配度的影响,不同离散数得到不同的匹配度,因此,排序结果更为合理。
相对于子串,本发明提出的广义子串从概念上极大地提高了相关性文本的值域。基于广义子串的模式匹配方法,要求模式中的字符必须完全、有序、可离散地出现在文本中,当离散数为零时即演变为精确子串模式匹配。广义子串包含了子串,子串是广义子串的特例。
在应用领域,广义子串的离散特性符合大众对检索词的选择思路,用户可以灵活、简单地选择满足有序、可离散的检索词。在检索功能上,广义子串模式匹配方法,由于满足完全性、有序性,并且可以通过离散数,约束检出文本的相关度,查全率高,准确性有保障,能合理地定位。
广义子串模式匹配方法,解决了三十年来信息检索中存在的固有离散相关检索遗漏问题,有重要的应用价值。适用于信息检索与信息输入的如下领域:各种文字的数据库检索;各种文字的网络信息搜索;各种文字的信息查询;各种文字的键盘输入;各种文字的电子词典;操作系统文件检索等。
本发明的各种模式匹配方法中的输出结果以“-1”代表“不存在”,当然也可以选用其它任何一个规定的符号,作为不存在的标志输出。
Claims (13)
1、一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于:所述的广义子串为文本S=“S1S2......Sn”中的任意一个或一个以上的字符组成的字符串“Sg1Sg2......Sgm”(1≤g1<g2......<gm≤n);广义子串模式匹配即判定模式P=“P1P2P3......Pm”(0<m≤n)是否为文本S的广义子串“Sg1Sg2......Sgm”,并输出判定结果的具体步骤如下:
a步 取文本S的第一个字符作为被比较字符,取模式P的第一个字符作为比较字符;
b步 如果被比较字符或比较字符为结束标志,转d步;
c步 若被比较字符与比较字符相等,则取文本S的下一个字符作为被比较字符,取模式P的下一个字符作为比较字符,转b步;否则,取文本S的下一个字符作为被比较字符,比较字符不变,转b步;
d步 若比较字符为结束标志,则判定模式P为文本S的广义子串,输出判定结果“存在”,结束匹配;否则,判定文本S中不存在模式P的广义子串,输出判定结果“不存在”,结束匹配。
2、根据权利要求1所述的用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
d步 若比较字符为结束标志,则判定模式P为文本S的广义子串,求出文本S的长度n,模式P的长度m,输出广义子串简单匹配度=Round(100×m÷n),结束匹配;否则,判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配。
3、根据权利要求1所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
c步 若被比较字符与比较字符相等,则将被比较字符在文本S中的位置值,存储于位置数组pos[]中,其存储位置与比较字符在模式P中的位置相同,取文本S的下一个字符作为被比较字符,取模式P的下一个字符作为比较字符,转b步;否则,取文本S的下一个字符作为被比较字符,比较字符不变,转b步;
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则判定模式P为文本S的广义子串,求出文本S的长度n,模式P的长度m,求出广义子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值,gm=pos[ ]中的最后一个数值,输出能反映广义子串离散程度的精确匹配度=Round(100×(m-(gm-g1-m+1)÷n)÷n),结束匹配。
4、根据权利要求3所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则,模式P为文本S的广义子串“Sg1Sg2......Sgm”,求出模式P的长度m,求出广义子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值,gm=pos[ ]中的最后一个数值,输出广义子串的离散数D=gm-g1-m+1,并输出位置数组pos[ ],结束匹配。
5、根据权利要求4所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
d步 若比较字符不是结束标志,则判定文本S中不存在模式P的广义子串,输出判定结果“-1”,结束匹配;否则,模式P为文本S的广义子串“Sg1Sg2......Sgm”,求出:模式P的长度m、广义子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值、gm=pos[ ]中的最后一个数值、广义子串的离散数D=gm-g1-m+1;
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合离散数D0要求的第一个广义子串,输出离散数D,并输出位置数组pos[ ],结束匹配;
如果D>D0;重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为:当前被比较字符位置-模式P的长度m-预先给定的离散数D0,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
6、根据权利要求3所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于:所述的,
d步 若比较字符不是结束标志,转h步;否则,将文本S中被比较字符的位置前移2个字符位置,并取该位置的字符作为被比较字符,将模式P中比较字符的位置前移2个字符位置,并取该位置的字符作为比较字符;
然后,再依次进行以下的e、f、g、h步:
e步 如果模式P的首字符已比较完毕,转g步;
f步 若被比较字符与比较字符相等,则将被比较字符在文本S中的位置值,存储于位置数组pos[ ]中,其存储位置与比较字符在模式P中的位置相同,取文本S的前一个字符作为被比较字符,取模式P的前一个字符作为比较字符,转e步;否则,取文本S的前一个字符作为被比较字符,比较字符不变,转e步;
g步 判定模式P为文本S的广义素子串,求出文本S的长度n,模式P的长度m,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值,gm=pos[ ]中的最后一个数值,输出广义素子串匹配度=Round(100×(m-(gm-g1-m+1)÷n)÷n),结束匹配;
h步 判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配。
7、根据权利要求6所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
g步 判定模式P为文本S的广义素子串,求出模式P的长度m,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值,gm=pos[ ]中的最后一个数值,输出离散数D=gm-g1-m+1,并输出位置数组pos[ ],结束匹配。
8、根据权利要求7所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
g步 判定模式P为文本S的广义素子串,求出模式P的长度m,求出:广义素子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值、gm=pos[ ]中的最后一个数值、离散数D=gm-g1-m+1;
如果离散数D≤预先给定的离散数,则判定模式P为文本S的符合离散数D0要求的第一个广义素子串,输出离散数D,并输出位置数组pos[ ],结束匹配;
如果D>D0,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为:Max(pos[ ]的第二个位置的值,被比较字符的当前位置-m-D0),并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
9、根据权利要求6所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
g步 判定模式P为文本S的广义素子串,如果当前最小广义素子串的首字符以及末字符在文本S中的位置y1、ym未被赋值,则令y1=pos[ ]中的第一个数值,ym=pos[ ]中的最后一个数值,转i步;否则,求出广义素子串的首字符以及末字符在文本S中的位置g1=pos[ ]中的第一个数值,gm=pos[ ]中的最后一个数值,若(gm-g1)<(ym-y1),则y1=g1,ym=gm,转i步;若(gm-g1)≥(ym-y1),则直接转i步;
h步 如果当前最小广义素子串的首字符与末字符在文本S中的位置y1、y2未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出文本S的长度n,模式P的长度m,输出最小广义素子串匹配度=Round(100×(m-(ym-y1-m+1)÷n)÷n),结束匹配;
i步 若(ym-y1-m+1)=0,转h步;否则,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为pos[]的第二个位置的值,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
10、根据权利要求9所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
g步 找到广义素子串,如果当前最小广义素子串位置数组min[ ]未被赋值,则令min[ ]=pos[ ],转i步;否则,求出广义素子串的首字符及末字符在文本S中的位置g1=pos[ ]中的第一个数值,gm=pos[ ]中的最后一个数值,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[ ]中的第一个数值,ym=min[ ]中的最后一个数值,若(gm-g1)<(ym-y1),则令min[ ]=pos[ ],转i步;若(gm-g1)≥(ym-y1),则直接转i步;
h步 如果当前最小广义素子串的位置数组min[ ]未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出模式P的长度m,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[ ]中的第一个数值,ym=min[ ]中的最后一个数值,输出离散数D=ym-y1-m+1,并输出位置数组min[ ],结束匹配;
i步 求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[ ]中的第一个数值,ym=min[ ]中的最后一个数值,若(ym-y1-m+1)=0,转h步;否则,重新开始下一个广义子串的匹配,将文本S中被比较字符的位置修改为pos[ ]的第二个位置的值,并取该位置的字符作为被比较字符;将模式P中比较字符的位置修改为模式P的首字符位置,并取该位置的字符作为比较字符,转b步。
11、根据权利要求10所述的一种用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
h步 如果当前最小广义素子串的位置数组min[ ]未被赋值,则判定文本S中不存在模式P的广义素子串,输出判定结果“-1”,结束匹配;否则,求出模式P的长度m,求出当前最小广义素子串首字符及末字符在文本S中的位置y1=min[ ]中的第一个数值,ym=min[ ]中的最后一个数值,求出离散数D=ym-y1-m+1;
如果离散数D>预先给定的离散数D0,则判定文本S中不存在满足预先给定的离散数D0的模式P的最小广义素子串,输出判定结果“-1”,结束匹配;
如果离散数D≤预先给定的离散数D0,则判定模式P为文本S的符合预先给定的离散数D0要求的最小广义素子串,输出离散数D,并输出位置数组min[ ],结束匹配。
12、根据权利要求1所述的用于信息检索与信息输入的广义子串模式匹配方法,其特征在于:所述的文本S有多个,多个文本S1S2......Sn构成二维文本Ds=“S1S2......Sn”,二维文本Ds=“S1S2......Sn”中的任意一个或一个以上的文本SGi的广义子串SGi’组成的文本串“SG1’SG2’......SGm’”(其中1≤G1<G2<……<Gm≤n)为二维广义子串,二维的广义子串模式匹配即判定二维模式Dp=“P1P2......Pm”(1≤m≤n)是否为二维文本Ds的二维广义子串,其具体步骤如下:
A步 取二维文本Ds的第一个文本S1作为被比较文本,取二维模式Dp的第一个模式P1作为比较文本;
B步 如果被比较文本或比较文本为结束标志,转D步;
C步 进行所述广义子串模式匹配方法中的a步、b步、c步、d步的步骤,若d步的结果为“存在”,则取二维文本Ds的下一个文本作为被比较文本,取二维模式Dp的下一个模式作为比较文本,转B步;否则,取二维文本Ds的下一个文本作为被比较文本,比较文本不变,转B步;
D步 若比较文本为结束标志,则二维模式Dp为二维文本Ds的二维广义子串,求出二维文本Ds的文本个数n,二维模式Dp的模式个数m;输出二维广义子串简单匹配度=Round(100×m÷n),结束匹配;否则二维文本Ds中不存在二维模式Dp的二维广义子串,输出判定结果“-1”,结束匹配。
13、根据权利要求12所述的用于信息检索与信息输入的广义子串模式匹配方法,其特征在于,所述的:
C步 进行所述广义子串模式匹配方法中的a步、b步、c步、d步的步骤,若d步的结果为“存在”,则将被比较文本在二维文本Ds中的位置值,存储于位置数组pos[ ]中,其存储位置与比较文本在二维模式Dp中的位置相同,取二维文本Ds的下一个文本作为被比较文本,取二维模式Dp的下一个模式作为比较文本,转B步;否则,取二维文本Ds的下一个文本作为被比较文本,比较文本不变,转B步;
D步 若比较文本不是结束标志,则二维文本Ds中不存在二维模式Dp的二维广义子串,输出判定结果“-1”,结束匹配;否则,判定二维模式Dp为二维文本Ds的二维广义子串,求出二维文本Ds的文本个数n,二维模式Dp的模式个数m,求出二维广义子串的第一个文本串以及最后一个文本串在二维文本Ds中的位置G1=pos[ ]中的第一个数值,Gm=pos[ ]中的最后一个数值,输出精确的二维广义子串匹配度=Round(100×(m-(Gm-G1-m+1)÷n)÷n),结束匹配。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610021280 CN1869983A (zh) | 2006-06-27 | 2006-06-27 | 用于信息检索与信息输入的广义子串模式匹配方法 |
PCT/CN2007/000392 WO2007101391A1 (fr) | 2006-03-07 | 2007-02-05 | Procédé d'adaptation de sous-chaîne discrète destiné à la recherche et à l'entrée de données |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610021280 CN1869983A (zh) | 2006-06-27 | 2006-06-27 | 用于信息检索与信息输入的广义子串模式匹配方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1869983A true CN1869983A (zh) | 2006-11-29 |
Family
ID=37443648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610021280 Pending CN1869983A (zh) | 2006-03-07 | 2006-06-27 | 用于信息检索与信息输入的广义子串模式匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1869983A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102138141A (zh) * | 2008-09-05 | 2011-07-27 | 日本电信电话株式会社 | 近似比对装置、近似比对方法、程序及记录介质 |
CN102737012A (zh) * | 2011-04-06 | 2012-10-17 | 鸿富锦精密工业(深圳)有限公司 | 文本信息对比方法及系统 |
CN102841919A (zh) * | 2012-06-30 | 2012-12-26 | 北京神州泰岳软件股份有限公司 | 一种会话文本中表情解析的方法和系统 |
CN101675430B (zh) * | 2007-05-01 | 2013-02-06 | 国际商业机器公司 | 用于近似串匹配的方法和系统 |
-
2006
- 2006-06-27 CN CN 200610021280 patent/CN1869983A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101675430B (zh) * | 2007-05-01 | 2013-02-06 | 国际商业机器公司 | 用于近似串匹配的方法和系统 |
CN102138141A (zh) * | 2008-09-05 | 2011-07-27 | 日本电信电话株式会社 | 近似比对装置、近似比对方法、程序及记录介质 |
CN102138141B (zh) * | 2008-09-05 | 2013-06-05 | 日本电信电话株式会社 | 近似比对装置、近似比对方法、程序及记录介质 |
CN102737012A (zh) * | 2011-04-06 | 2012-10-17 | 鸿富锦精密工业(深圳)有限公司 | 文本信息对比方法及系统 |
CN102737012B (zh) * | 2011-04-06 | 2015-09-30 | 赛恩倍吉科技顾问(深圳)有限公司 | 文本信息对比方法及系统 |
CN102841919A (zh) * | 2012-06-30 | 2012-12-26 | 北京神州泰岳软件股份有限公司 | 一种会话文本中表情解析的方法和系统 |
CN102841919B (zh) * | 2012-06-30 | 2016-08-03 | 北京神州泰岳软件股份有限公司 | 一种会话文本中表情解析的方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1174332C (zh) | 转换表达方式的方法和装置 | |
CN1171162C (zh) | 基于字符分类检索字符串的装置和方法 | |
CN1204515C (zh) | 自由格式数据处理的方法和设备 | |
CN1155906C (zh) | 数据处理方法、系统、处理程序及记录媒体 | |
CN1158627C (zh) | 用于字符识别的方法和装置 | |
CN1113305C (zh) | 语言处理装置和方法 | |
CN1281191A (zh) | 信息检索方法和信息检索装置 | |
CN1822003A (zh) | 数据库 | |
CN1409842A (zh) | 模式匹配方法和装置 | |
CN1669029A (zh) | 自文件集合中自动搜寻概念层次结构的方法及系统 | |
CN1855103A (zh) | 特定元素、字符串向量生成及相似性计算的装置、方法 | |
CN1894688A (zh) | 对译判断装置、方法及程序 | |
CN1053852A (zh) | 目录数据库中的名字判定 | |
CN1578954A (zh) | 机器翻译 | |
CN1942877A (zh) | 信息提取系统 | |
CN1215457C (zh) | 语句识别装置和方法 | |
CN1728140A (zh) | 信息检索系统中基于短语的索引编制 | |
CN1132564A (zh) | 用于数据存储与检索的方法与装置 | |
CN101034414A (zh) | 信息处理设备和方法以及程序 | |
CN1647069A (zh) | 对话控制系统和对话控制方法 | |
CN1869983A (zh) | 用于信息检索与信息输入的广义子串模式匹配方法 | |
CN1151558A (zh) | 信息检索方法和系统 | |
CN1314208C (zh) | 可扩展标记语言数据流压缩器及其压缩方法 | |
CN101030216A (zh) | 基于特性参数的字符串匹配方法 | |
CN1752966A (zh) | 使用本体论和用户查询处理技术解决问题的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |