基于离散性、交叉性、非完全性的字符串模式匹配方法

文档序号:6336238阅读:211来源:国知局
专利名称:基于离散性、交叉性、非完全性的字符串模式匹配方法
技术领域
本发明涉及基于离散性、交叉性、非完全性的字符串模式匹配方法,属于信息检索领域。
背景技术
随着网络信息技术的快速发展,网络信息形成了信息时代的巨大宝藏。信息检索呈现大众化、家庭化的趋势,用户如何进行信息检索构成网络信息的瓶颈。字符串匹配,尤其是非精确字符串匹配,则是信息检索的基础,其重要性犹如发动机之于各种运动机械,是各种信息检索的主要核心竞争技术,直接影响到信息检索的方式、用户界面以及信息检索的质量。
四十年来,国内外对非精确字符串匹配的方法研究一直采用基于错误因素的距离计算,最常用的是Levenshtein距离,也称为ED(Edit Distance)距离。这种基于错误因素距离计算方法,存在一些固有问题,造成了信息检索方式的过于单调且信息检索质量也受到一定的影响,问题主要体现在以下四点1)现有的基于错误因素距离计算的非精确字符串匹配研究思路,是一种基于问题表象的研究思路,如插入、删除、替换、交换错误等,这些表象问题并非完全独立、可以严格界定。例如,本质上可以用一个插入错误和一个删除错误替代一个交换错误或者一个替换错误。理论上,基于表象的错误因素的分类方法并不理想,字符串匹配至今没有形成科学的分类体系,这也是其中的重要原因之一。
最直接的负面效果体现在采用错误因素很难界定匹配问题的相关理念、特征、值域,选择何种字符串匹配方法处理特定性质的匹配问题变得复杂化,因此,信息检索只能模糊化,信息检索方式只有精确检索和模糊检索(或非精确检索)。
2)现有的基于错误因素描述字符串匹配问题的多态性,直接影响到检索方式的分类以及质量。下表反映出基于错误因素对特定问题的错误现象进行描述的多态性。
基于错误因素对特定问题进行描述的多态性表

表中,忽略距离计算的量化影响,基于错误因素对特定文本与模式的匹配问题,存在多种基于错误因素的表示方法,反映出描述同一问题的多态性,不便于分类处理。
3)基于错误因素距离计算的非精确字符串匹配方法,由于通过距离计算对各种错误因素进行统一量化处理,如ED(Edit Distance)距离计算,使得匹配中不同错误因素的性质模糊化,因此,在提高查全率、查准率、定位精度,以及在定性定量检索上,缺少灵活方便的应对手段和方法。
4)另一方面基于错误因素距离计算的非精确字符串匹配方法,只考虑错误因素对精确匹配的负面影响,很少讨论错误因素在应用中的积极意义。例如在本专利中,离散特性与删除错误在反映匹配关系上很接近,但又不完全相同;当采用逆向思维模式,离散特性不再被看作一种错误,认识到离散特性在信息检索中有很多应用价值。例如,在信息输入中,可利用离散检索,让用户通过缺省输入,避免方言错误、避免模糊音输入、减少输入码长等;在数据库检索、网络搜索引擎中,可利用离散特性选择检索词,进行离散检索,提高查全率等。
以上问题,严重制约了信息检索技术的研究与发展,造成了信息检索在操作方式上以及功能上的匮乏,亟待解决。

发明内容
本发明的目的在于解决上述问题,提出一种基于离散性、交叉性、非完全性的字符串模式匹配方法,该种方法提供了多种信息检索方式且操作简单、灵活、方便,检索功能强大。
本发明解决其技术问题所采用的技术方案为一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其步骤为A步设置特性参数值用户在用户界面中设置反映离散性的离散数即检索词各字符出现在文本中的离散的字符数;反映交叉性的交叉数即检索词各字符出现在文本中的交叉的字符数或子串数;反映非完全性的非完全数即检索词各字符未出现在文本中的字符数;并由用户在用户界面中输入检索词;B步字符串匹配及输出信息处理设备根据用户输入的检索词,对指定的一个文本,以A步设置的离散数、交叉数、非完全数作为匹配约束条件,进行基于该三种特性的字符串匹配运算,输出精确检索、离散检索、交叉检索、离散交叉检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式的匹配结果。
与现有技术相比,本发明的有益效果是一、本发明提出的三种特性参数离散性、交叉性、非完全性,具有完全不同的性质和概念,是互为独立的特性。基于三种特性的字符串匹配方法,较之现有的基于错误因素距离计算的非精确字符串匹配方法,能更为科学地描述文本与模式的匹配关系。可通过下表的示例比较,得到清楚的说明。
基于错误因素及本发明对特定问题的描述差异表

可见,基于错误因素对特定文本与模式的字符串匹配问题,存在多种基于错误因素的描述方法,反映出描述同一问题的多态性,不便于细致的分类处理。而本发明对同一问题只存在一种描述方法,准确地反映了文本与模式的匹配关系,因此可以准确地分类。上表中关于两个子串匹配问题,基于错误因素有两种不同的描述方法;本发明对两个子串匹配问题,只存在一种描述方法,更为符合子串的定义。通过上表,还可以清楚地了解到离散特性与删除错误的差异,交叉特性与交换错误的差异,非完全性与插入错误的差异。
二、由三种特性进行组合,可以将信息检索方式严格地分为8种不同的类型,为用户提供了更多可供选择的信息检索方式。且基于特性的字符串匹配,不是简单地把特性看成一种消极错误,例如,利用离散检索,可让用户通过缺省输入,避免方言错误、避免模糊音输入、减少输入码长等。而现有的基于错误因素距离计算的信息检索方法,由于错误因素的可替代性,不能形成科学的分类体系,因此检索方式只有精确和模糊方式。
三、本发明具体通过设置三种特性值的大小,作为字符串匹配的约束条件参数,在提高查全率、查准率、定位精度上,提供更为灵活、方便、定性、定量的应对手段和方法,以满足不同性质的检索要求,方便用户对特定问题查全率、查准率、定位精度的综合考虑、随意调节。设置的特性值越大,检索条件越宽松,查全率越高;特性值越小,检索条件越严格,查准率越高;设置的某特性值为零,表示不允许该种特性的匹配,因此,可以通过设置特性参数值零,进行有选择的定性、定量检索,充分发挥各特性在信息检索中的潜在应用价值。
四、对不同的检索方式,可进行统一的集成化字符串匹配编程,用一个字符串匹配程序,满足8种信息检索方式的特定性质的信息检索。各种检索方式只是输入的检索特性值的不同,应用程序设计人员不必考虑选择何种字符串匹配方法进行不同方式的信息检索,而是对三种特性值进行统一处理,更方便其实施、推广。
五、由于各种因素造成的不可预知的文本信息错误,如传输错误、自动识别输入错误、存储错误等,会造成信息检索的遗漏,一些有用但有错误的信息无法正常检出。在本发明中,通过适当设置离散数、交叉数、非完全数,既可实现容错检索。
上述的B步的字符串匹配及输出的第一种作法的具体步骤为
a步输入参数合法性检验计算出检索词的长度m以及文本的长度n;对n、m、离散数、交叉数、非完全数,进行合法性检验,若不满足合法性,则退出匹配,并返回不匹配的结果;否则,交叉数、非完全数不能超过m-1,若超过则改为m-1;b步循环初始化设置滑动窗位置=1,表示文本中当前第一个正准备处理的位置;对检索词=p1p2......pm中的所有字符,进行稳定的升序排序,并存储在数组PT中,数组PT中同时存储了各字符在检索词中原来的位置,分别称为数组PT中存储的字符子数组PTc以及数组PT中存储的位置子数组PTp;从文本中的第一个字符开始,选取长度为min(m+离散数-1,n-滑动窗位置)的子串作为滑动窗子串,在该滑动窗子串前增加一个小于任何字符的特殊符号,对滑动窗子串的字符进行稳定的升序排序,并存储在数组WT中,数组WT中同时存储了各字符在文本中原有的位置,且特殊符号的位置为零,分别称为数组WT中存储的字符子数组WTc以及数组WT中存储的位置子数组WTp;min为最小值函数;c步判定循环是否结束若(n-滑动窗位置+1+非完全数)小于m,则结束处理,并返回不匹配结果;d步进行下一个滑动窗子串匹配的参数初始化滑动窗位置开始,在文本中选取长度为min(m+离散数,n-滑动窗位置+1)的子串作为滑动窗子串,再删除数组WT中最小的存储的位置以及对应的字符,然后对滑动窗子串的最后一个字符进行稳定插入排序,插入到数组WT中,若(n-滑动窗位置+1)<(m+离散数)则不用再进行插入排序;数组POS中全部初始化为-1,实际离散数=0,实际交叉数=0,实际非完全数=0,数组WT的位置W=1,数组PT的位置P=1,最大位置=最小位置=WTp中的第一个数值;e步滑动窗子串匹配是否结束若数组WT比较结束或者数组PT比较结束,则转g步;f步滑动窗子串字符与检索词的字符进行循环比较根据WTc中位置W存储的字符与PTc中位置P存储的字符的比较情况,分别进行以下情况处理若WTc中位置W存储的字符<PTc中位置P存储的字符,则位置W增加1,转e步;若WTp中位置W存储的字符>PTp中位置P存储的字符,则位置P增加1,实际非完全数增加1;若实际非完全数小于或等于非完全数,则转e步,否则,滑动窗位置增加1,转c步;若WTc中位置W存储的字符=PTc中位置P存储的字符,则将WTp中位置W存储的数值存储到数组POS中,其存储位置为PTp中位置P存储的数值;若WTp中位置W存储的数值>最大位置,则将WTp中位置W存储的数值存入最大位置中;若WTp中位置W存储的数值<最小位置,则将WTp中位置W存储的数值存入最小位置中;位置W增加1,位置P增加1,转e步;g步判定滑动窗子串是否满足约束条件求实际非完全数=(实际非完全数+m-位置P+1);若实际非完全数>非完全数,则滑动窗位置增加1,转c步;求实际离散数=(最大位置-最小位置+1-m+实际非完全数);若实际离散数>离散数,则滑动窗位置增加1,转c步;计算实际交叉数;若实际交叉数>交叉数,则滑动窗位置增加1,转c步;h步计算出匹配度临时变量=Sqrt([m-实际非完全数-实际离散数÷(最大位置-最小位置+1)]÷(最大位置-最小位置+实际非完全数+1)×[(m-实际非完全数-实际交叉数)÷m]);Sqrt为开方函数;匹配度=Round(100×临时变量);Round为四舍五入函数;i步结束匹配并返回如下结果返回匹配度,数组POS,实际离散数,实际交叉数,实际非完全数。
这种基于特性的字符串匹配运算过程,通过离散数、交叉数、非完全数的数值,用一个程序即可自动进行不同的8种信息检索方式的统一匹配,并返回满足不同特性约束条件的匹配结果,实现了更为规范的信息检索集成化环境。
返回的匹配度,代表了文本与模式满足特性约束条件的匹配程度,为零到100的整数。例如若返回的匹配度为50,则表示模式与文本匹配的子字符序列有50%的匹配程度,可以根据所有检出文本的匹配度进行排序输出,方便用户首先选则匹配度高的文本。返回的数组POS则记录了具体匹配的位置。返回的实际离散数、实际交叉数、实际非完全数,则记录了匹配的子字符序列的实际匹配状况,便于进一步的后续处理。这些返回数据可以组织成一个结构数据返回,也可以单独地返回。
匹配过程中,当实际非完全数不满足约束条件,立即进行下一个滑动窗的匹配,且只有当实际非完全数以及实际离散数,满足给定约束条件的情况下,才计算实际交叉数的大小,因此该方法的平均时间复杂度接近于0(nm+nd),最坏时间复杂度为0(nm+nd+nmLog2(m/2))≈0(nmLog2(m))。
上述的B步中的字符串匹配及输出的第二种作法的具体步骤为a步输入参数合法性检验计算出检索词的长度m以及文本的长度n;对n、m、离散数、交叉数、非完全数,进行合法性检验,若不满足合法性,退出匹配,并返回空指针结果;否则,交叉数、非完全数不能超过m-1,若超过则改为m-1;b步循环初始化设置有一个节点的OUT链,该节点中包含如下初始信息最大位置=0、最小位置=0,匹配度=100;设置滑动窗位置=1,表示文本中当前第一个正准备处理的位置;对检索词=p1p2......pm中的所有字符,进行稳定的升序排序,并存储在数组PT中,数组PT中同时存储了各字符在检索词中原来的位置,分别称为数组PT中存储的字符子数组PTc以及数组PT中存储的位置子数组PTp;从文本中的第一个字符开始,选取长度为min(m+离散数-1,n-滑动窗位置)的子串作为滑动窗子串,在该滑动窗子串前增加一个小于任何字符的特殊符号,对滑动窗子串的字符进行稳定的升序排序,并存储在数组WT中,数组WT中同时存储了各字符在文本中原有的位置,且特殊符号的位置为零,分别称为数组WT中存储的字符子数组WTc以及数组WT中存储的位置子数组WTp;min为最小值函数;c步判定循环是否结束若(n-滑动窗位置+1+非完全数)小于m,则删除OUT链首节点,退出匹配并返回OUT链;d步进行下一个滑动窗子串匹配的参数初始化滑动窗位置开始,在文本中选取长度为min(m+离散数,n-滑动窗位置+1)的子串作为滑动窗子串,再删除数组WT中最小的存储的位置以及对应的字符,然后对滑动窗子串的最后一个字符进行稳定插入排序,插入到数组WT中,若(n-滑动窗位置+1)<(m+离散数)则不用再进行插入排序;
数组POS中全部初始化为-1,实际离散数=0,实际交叉数=0,实际非完全数=0,数组WT的位置W=1,数组PT的位置P=1,最大位置=最小位置=WTp中的第一个数值;e步滑动窗子串匹配是否结束若数组WT比较结束或者数组PT比较结束,则转g步;f步滑动窗子串字符与检索词的字符进行循环比较根据WTc中位置W存储的字符与PTc中位置P存储的字符的比较情况,分别进行以下情况处理若WTc中位置W存储的字符<PTc中位置P存储的字符,则位置W增加1,转e步;若WTp中位置W存储的字符>PTp中位置P存储的字符,则位置P增加1,实际非完全数增加1;若实际非完全数小于或等于非完全数,则转e步,否则,滑动窗位置增加1,转c步;若WTc中位置W存储的字符=PTc中位置P存储的字符,则将WTp中位置W存储的数值存储到数组POS中,其存储位置为PTp中位置P存储的数值;若WTp中位置W存储的数值>最大位置,则将WTp中位置W存储的数值存入最大位置中;若WTp中位置W存储的数值<最小位置,则将WTp中位置W存储的数值存入最小位置中;位置W增加1,位置P增加1,转e步;g步判定滑动窗子串是否满足约束条件求实际非完全数=(实际非完全数+m-位置P+1);若实际非完全数>非完全数,则滑动窗位置增加1,转c步;求实际离散数=(最大位置-最小位置+1-m+实际非完全数);若实际离散数>离散数,则滑动窗位置增加1,转c步;计算实际交叉数;若实际交叉数>交叉数,则滑动窗位置增加1,转c步;h步计算出匹配度临时变量=Sqrt([m-实际非完全数-实际离散数÷(最大位置-最小位置+1)]÷(最大位置-最小位置+实际非完全数+1)×[(m-实际非完全数-实际交叉数)÷m]);Sqrt为开方函数;匹配度=Round(100×临时变量);Round为四舍五入函数;i步将匹配结果插入OUT链滑动窗位置增加1;将匹配度、最大位置、最小位置、数组POS、实际离散数、实际交叉数、实际非完全数组织成一个新节点;
若(新节点中的最小位置>OUT链最后一个节点中的最大位置)则将新节点直接插入OUT链最后,转c步;若(新节点中的最小位置小于或等于OUT链最后一个节点中的最大位置)且(新节点匹配度>OUT链最后一个节点匹配度)则将新节点替换OUT链最后一个节点,转c步;否则放弃新节点,转c步。
以上的字符串匹配运算的第二种作法的具体步骤与第一种作法的步骤基本相同,不同的仅仅是为适应全文检索,a步中不符合参数要求时,返回的是一个空指针,表示无匹配的子字符串;b步中增设了一个OUT链,用于记录文本中的所有满足匹配条件的无重叠子字符序列以及相应信息;相应的c步中不再输出不匹配结果,而改为输出OUT链;并在i步中根据匹配的结果对OUT链进行修改。实际匹配时,可能存在满足约束条件的,有位置重叠的两个子字符序列,或者有位置重叠的连环多个子字符序列,解决的方法为对于有位置重叠的两个子字符序列,或者有位置重叠的连环多个子字符序列,只输出匹配度大的子字符序列。
若返回的OUT链为空,表示不匹配,否则OUT链包含了所有匹配出的子字符序列,每个子字符序列包括匹配度、最大位置、最小位置、数组POS、实际离散数、实际交叉数、实际非完全数。
因此,第二种作法除具有第一种作法的全部优点外,还为信息检索用户提供了一个全面、详细的检索词在指定文本中的匹配信息,为用户对信息的取舍给出了最完整的参考信息。该方法的平均时间复杂度接近于0(nm+nd),最坏时间复杂度为0(nmLog2(m/2)。
上述的g步中的计算实际交叉数的第一种作法为(1)步初始化假设用数组LPOS存放最大升序序列,且数组LPOS的第一个位置的数值初始化为-1,LP用于指示当前数组LPOS处理的位置并初始化为1;数组POS最后添加一个结束标志,取数组POS中第一个数值到比较数据中;(2)步判断是否结束若比较数据为结束标记,转(4)步;(3)步循环处理根据比较进行三种情况处理;若比较数据大于数组LPOS中LP位置的数据,则LP增加1,将比较数据存储到数组LPOS中LP位置处,取数组POS中下一个数值到比较数据中,转(2)步;若比较数据小于数组LPOS中LP位置的数据,则从数组LPOS中第一个位置向后进行折半查找,搜索第一个大于或等于比较数据的数据,并用比较数据改写该数据,取数组POS中下一个数值到比较数据中,转(2)步;若比较数据等于数组LPOS中LP位置的数据,则取数组POS中下一个数值到比较数据中,转(2)步;(4)步得出实际交叉数实际交叉数=m-实际非完全数-LP+1。
这是一种基于字符为单位的交叉数计算方法。数组POS在匹配过程中,用于存放检索词中已经匹配的字符在文本中的出现位置,数组POS中数据的特点是除数值-1以外,其它数据均为大于0的整数,且互不相等。数组POS的最大升序序列的长度是指按数组POS中数据的位序,在数组POS寻找出一个最大升序序列,该序列的数据个数即为最大升序序列的长度。由于数值-1代表了未匹配的字符,因此数值-1不计入最大升序序列中。通过最大升序序列的长度,即可求出文本与模式匹配时的实际交叉数。从而通过该方法准确地计算出实际交叉数,并与用户设置的交叉数进行比较,筛选出满足交叉数约束条件的文本,并给出检索词与指定检索文本的交叉特性匹配状况,方便、灵活地满足用户的检索要求。交叉数的另一个作用是配合离散数、非完全数计算匹配度,方便检出文本的排序,满足用户的检索要求。
该算法的时间复杂度为0(mlog2(m/2))。
上述的g步中的计算实际交叉数的第二种作法为(1)步初始化最大连续序列长度=0,当前连续序列长度=0,连续后继整数出现总数=0;依次将数组POS中大于零的全部数值存入临时数组中,临时数组最后添加一个结束标志;用数组LPOS存放最大升序序列,且数组LPOS的第一个位置的数值初始化为临时数组中第一个数值;LP用于指示当前数组LPOS处理的位置,并初始化为1;取临时数组中第二个数值到比较数据中;(2)步判断是否结束若比较数据为结束标记,转(5)步;(3)步进行连续性处理若比较数据减1等于上一个位置的数据,则当前连续序列长度增加1,连续后继整数出现总数增加1,转(4)步;否则将当前连续序列长度与最大连续序列长度中较大的数值,重新存入最大连续序列长度中,当前连续序列长度=0;(4)步根据比较进行两种情况处理若比较数据大于数组LPOS中LP位置的数据,则LP增加1,将比较数据存储到数组LPOS中LP位置处,取临时数组中下一个数值到比较数据中,转(2)步;若比较数据小于数组LPOS中LP位置的数据,则从数组LPOS中第一个位置向后进行折半查找,搜索第一个大于比较数据的数据,并用比较数据改写该数据;取临时数组中下一个数值到比较数据中,转(2)步;(5)步实际交叉数=m-实际非完全数-(LP+连续后继整数出现总数-Max(最大连续序列长度,当前连续序列长度)),其中Max为求最大值函数。
该第二种作法是对第一种作法的改进,称为基于子串为单位的交叉数计算方法当模式中的一个子串整体出现交叉时,算作一个交叉;而第一种方法的交叉数则为该子串的长度。这种改进方式的理由为当模式中的一个子串整体出现交叉时,认为整体是一个有语义的结构子串,例如两个英文单词间的整体交叉算作一个交叉数。这种改进处理方式更符合检索的实际,使得整体交叉的匹配度明显高于第一种方法的匹配度,其输出的匹配度与用户的实际要求更一致,更便于用户优先选择。
该算法的时间复杂度为0(mlog2(m/2))。
上述的A步设置特性参数值时,用户界面有三个数值输入框供用户分别设置离散数、交叉数、非完全数。
上述的用户界面中的三个数值输入框为单纯数值输入框或者组合框,在三个数值输入框的每个框附近还显示有相应特性参数名称。
上述的A步输入检索词时,用户界面有一个文本框供用户输入检索词。
上述的A步设置特性参数值后,信息处理设备根据用户界面设置的离散数、交叉数、非完全数还进行检索方式的判断,判断出用户要求的检索方式属于精确检索、离散检索、交叉检索、离散交叉检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式,并提供给用户界面显示出检索方式的名称。
这样的用户界面给用户提供了一种灵活、方便、简单、容易的操作方式通过对离散数、交叉数、非完全数的数值框设置不同的数值,即可自动显示相应信息检索方式的名称,供用户选择8种不同信息检索方式之一,进行不同性质的信息检索,同时数值框的数值还代表了信息检索的约束条件。用户界面的提示信息醒目、直观,使用户操作容易,无需学习。
下面结合具体实施方式
对本发明作进一步的详细说明。
具体实施例方式
实施例一本发明的第一种具体实施方式
为,一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其步骤为A步设置特性参数值用户在用户界面中设置反映离散性的离散数即检索词各字符出现在文本中的离散的字符数;反映交叉性的交叉数即检索词各字符出现在文本中的交叉的字符数或子串数;反映非完全性的非完全数即检索词各字符未出现在文本中的字符数;并由用户在用户界面中输入检索词;B步字符串匹配及输出信息处理设备根据用户输入的检索词,对指定的一个文本,以A步设置的离散数、交叉数、非完全数作为匹配约束条件,进行基于该三种特性的字符串匹配运算,输出精确检索、离散检索、交叉检索、离散交叉检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式的匹配结果。
本例中B步的字符串匹配及输出的具体步骤为a步输入参数合法性检验计算出检索词的长度m以及文本的长度n;对n、m、离散数、交叉数、非完全数,进行合法性检验,若不满足合法性,则退出匹配,并返回不匹配的结果;否则,交叉数、非完全数不能超过m-1,若超过则改为m-1;b步循环初始化设置滑动窗位置=1,表示文本中当前第一个正准备处理的位置;对检索词=p1p2......pm中的所有字符,进行稳定的升序排序,并存储在数组PT中,数组PT中同时存储了各字符在检索词中原来的位置,分别称为数组PT中存储的字符子数组PTc以及数组PT中存储的位置子数组PTp;从文本中的第一个字符开始,选取长度为min(m+离散数-1,n-滑动窗位置)的子串作为滑动窗子串,在该滑动窗子串前增加一个小于任何字符的特殊符号,对滑动窗子串的字符进行稳定的升序排序,并存储在数组WT中,数组WT中同时存储了各字符在文本中原有的位置,且特殊符号的位置为零,分别称为数组WT中存储的字符子数组WTc以及数组WT中存储的位置子数组WTp;min为最小值函数;c步判定循环是否结束
若(n-滑动窗位置+1+非完全数)小于m,则结束处理,并返回不匹配结果;d步进行下一个滑动窗子串匹配的参数初始化滑动窗位置开始,在文本中选取长度为min(m+离散数,n-滑动窗位置+1)的子串作为滑动窗子串,再删除数组WT中最小的存储的位置以及对应的字符,然后对滑动窗子串的最后一个字符进行稳定插入排序,插入到数组WT中,若(n-滑动窗位置+1)<(m+离散数)则不用再进行插入排序;数组POS中全部初始化为-1,实际离散数=0,实际交叉数=0,实际非完全数=0,数组WT的位置W=1,数组PT的位置P=1,最大位置=最小位置=WTp中的第一个数值;e步滑动窗子串匹配是否结束若数组WT比较结束或者数组PT比较结束,则转g步;f步滑动窗子串字符与检索词的字符进行循环比较根据WTc中位置W存储的字符与PTc中位置P存储的字符的比较情况,分别进行以下情况处理若WTc中位置W存储的字符<PTc中位置P存储的字符,则位置W增加1,转e步;若WTp中位置W存储的字符>PTp中位置P存储的字符,则位置P增加1,实际非完全数增加1;若实际非完全数小于或等于非完全数,则转e步,否则,滑动窗位置增加1,转c步;若WTc中位置W存储的字符=PTc中位置P存储的字符,则将WTp中位置W存储的数值存储到数组POS中,其存储位置为PTp中位置P存储的数值;若WTp中位置W存储的数值>最大位置,则将WTp中位置W存储的数值存入最大位置中;若WTp中位置W存储的数值<最小位置,则将WTp中位置W存储的数值存入最小位置中;位置W增加1,位置P增加1,转e步;g步判定滑动窗子串是否满足约束条件求实际非完全数=(实际非完全数+m-位置P+1);若实际非完全数>非完全数,则滑动窗位置增加1,转c步;求实际离散数=(最大位置-最小位置+1-m+实际非完全数);若实际离散数>离散数,则滑动窗位置增加1,转c步;计算实际交叉数;若实际交叉数>交叉数,则滑动窗位置增加1,转c步;h步计算出匹配度
临时变量=Sqrt([m-实际非完全数-实际离散数÷(最大位置-最小位置+1)]÷(最大位置-最小位置+实际非完全数+1)×[(m-实际非完全数-实际交叉数)÷m]);Sqrt为开方函数;匹配度=Round(100×临时变量);Round为四舍五入函数;i步结束匹配并返回如下结果返回匹配度,数组POS,实际离散数,实际交叉数,实际非完全数。
以上g步中的实际交叉数的作法可以为(1)步初始化假设用数组LPOS存放最大升序序列,且数组LPOS的第一个位置的数值初始化为-1,LP用于指示当前数组LPOS处理的位置并初始化为1;数组POS最后添加一个结束标志,取数组POS中第一个数值到比较数据中;(2)步判断是否结束若比较数据为结束标记,转(4)步;(3)步循环处理根据比较进行三种情况处理;若比较数据大于数组LPOS中LP位置的数据,则LP增加1,将比较数据存储到数组LPOS中LP位置处,取数组POS中下一个数值到比较数据中,转(2)步;若比较数据小于数组LPOS中LP位置的数据,则从数组LPOS中第一个位置向后进行折半查找,搜索第一个大于或等于比较数据的数据,并用比较数据改写该数据,取数组POS中下一个数值到比较数据中,转(2)步;若比较数据等于数组LPOS中LP位置的数据,则取数组POS中下一个数值到比较数据中,转(2)步;(4)步得出实际交叉数实际交叉数=m-实际非完全数-LP+1。
这种方式计算的实际交叉数为以字符为单位的实际交叉数。
以上g步中的计算实际交叉数的作法还可以为(1)步初始化最大连续序列长度=0,当前连续序列长度=0,连续后继整数出现总数=0;依次将数组POS中大于零的全部数值存入临时数组中,临时数组最后添加一个结束标志;用数组LPOS存放最大升序序列,且数组LPOS的第一个位置的数值初始化为临时数组中第一个数值;LP用于指示当前数组LPOS处理的位置,并初始化为1;取临时数组中第二个数值到比较数据中;(2)步判断是否结束若比较数据为结束标记,转(5)步;(3)步进行连续性处理若比较数据减1等于上一个位置的数据,则当前连续序列长度增加1,连续后继整数出现总数增加1,转(4)步;否则将当前连续序列长度与最大连续序列长度中较大的数值,重新存入最大连续序列长度中,当前连续序列长度=0;(4)步根据比较进行两种情况处理若比较数据大于数组LPOS中LP位置的数据,则LP增加1,将比较数据存储到数组LPOS中LP位置处,取临时数组中下一个数值到比较数据中,转(2)步;若比较数据小于数组LPOS中LP位置的数据,则从数组LPOS中第一个位置向后进行折半查找,搜索第一个大于比较数据的数据,并用比较数据改写该数据;取临时数组中下一个数值到比较数据中,转(2)步;(5)步实际交叉数=m-实际非完全数-(LP+连续后继整数出现总数-Max(最大连续序列长度,当前连续序列长度)),其中Max为求最大值函数。
这种方式计算的实际交叉数为以子串为单位的实际交叉数。
本例中A步设置特性参数值时,用户界面有三个数值输入框供用户分别设置离散数、交叉数、非完全数。用户界面中的三个数值输入框为单纯数值输入框或者组合框,在三个数值输入框的每个框附近还显示有相应特性参数名称。A步输入检索词时,用户界面有一个文本框供用户输入检索词。
本例中A步设置特性参数值后,信息处理设备还根据用户界面设置的离散数、交叉数、非完全数进行检索方式的判断,判断出用户要求的检索方式属于精确检索、离散检索、交叉检索、离散交叉检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式,并提供给用户界面显示出检索方式的名称。
下面是依据本例的方法具体设计的用户界面及其检索实例的结果。
用户界面根据数值输入框设置的不同数据,可以呈现八种信息检索方式名称,进行八种不同方式的信息检索。
1、八种信息检索方式之一的精确检索方式的用户界面实例精确检索 离散数 交叉数 非完全数 该种方式,对用户提供的检索词进行精确检索,为缺省方式。离散数、交叉数、非完全数均为0,表示检索词中的字符不允许离散,不允许交叉,不允许非完全,必须完整地出现在被检索出的文本中。
检索实例文本=“中华人民共和国信息产业部”
检索词=“信息产业部”通过本例的方法进行匹配后,能检索出文本“中华人民共和国信息产业部”。该例匹配度为100%。(注加粗并添加下划线的字符为匹配的字符)2、八种信息检索方式之二的离散检索方式的用户界面实例离散检索 离散数 交叉数 非完全数 该种方式,离散数>0,表示对用户提供的检索词进行离散检索,被检出的文本满足的条件为检索词出现在文本中的字符不允许交叉,不允许非完全,但其离散的字符数允许小于或等于设置的离散数。
检索实例设置离散数=10,用检索词“string matching”,通过本例的字符串匹配方法,进行离散检索,能检索出文献数据库中的文章“......stringpatternmatching......”。该例匹配的实际离散数为8个字符,其中“pattern”为文本中离散的字符,该例匹配度为80%。
更进一步,如果设置离散数=8,用检索词“strg paten machg”,通过本例的字符串匹配方法,同样能检索出文献数据库中的文章“......string patternmatching......”。该例匹配的实际离散数为7个字符,其中“in”“t”“r”“t”“in”为文本中离散的字符,其匹配度为83%。该例用检索词“strg paten machg”以及选择的离散数=8,进行基于离散特性的定性、定量(离散数=8)检索,让英语拼写不准确的人如释重负,充分体现了基于离散特性匹配的优越性能。
3、八种信息检索方式之三的交叉检索方式的用户界面实例交叉检索 离散数 交叉数 非完全数 该种方式,交叉数>0,表示对用户提供的检索词进行交叉检索,被检出的文本满足的条件为检索词出现在文本中的字符不允许离散,不允许非完全,但其交叉的字符数或子串数允许小于或等于设置的交叉数。
例如文本=“拼音笔划声调组合输入法”检索词=“拼音声调笔划”并设置交叉数=5(注一个中文符号为两个字符长度)。
通过本例的字符串匹配方法,进行交叉检索,可以检索出文本“拼音笔划声调组合输入法”。该例匹配的以字符为单位的实际交叉数为4,以子串为单位的实际交叉数为1,其中“笔划”或“声调”为交叉的字符,该例的以字符为单位的匹配度为82%,以子串为单位的匹配度为96%。
具体实施时,实际交叉数的计算方法,可根据检索的需要选择其中的一种进行计算。一般以子串为单位计算,更符合实际要求。
4、八种信息检索方式之四的离散交叉检索方式的用户界面实例离散交叉检索 离散数 交叉数 非完全数 该种方式,离散数>0且交叉数>0,表示对用户提供的检索词进行离散交叉检索,被检出的文本满足的条件为检索词出现在文本中的字符不允许非完全,但允许离散,允许交叉,其交叉的字符数或子串数允许小于或等于设置的交叉数,其离散的字符数允许小于或等于设置的离散数。
例如文本=“拼音、笔划、声调组合输入法”检索词=“拼音声调笔划”并设置交叉数=5,离散数=5。
通过本例的字符串匹配方法,进行离散交叉检索,可以检索出“拼音、笔划、声调组合输入法”的文本。该例匹配的以字符为单位的实际交叉数为4,以子串为单位的实际交叉数为1;实际离散数也为4。其中“笔划”或“声调”为交叉的字符,而两个中文“、”号为离散的字符,该例以字符为单位的匹配度为70%,以子串为单位的匹配度为82%。
若离散数设置为零,或者交叉数设置为零,均不能用检索词“拼音声调笔划”检索出文本“拼音、笔划、声调组合输入法”。
5、八种信息检索方式之五的非完全检索方式的用户界面实例非完全检索 离散数 交叉数 非完全数 该种方式,非完全数>0,表示对用户提供的检索词进行非完全检索,被检出的文本满足的条件为检索词出现在文本中的字符不允许离散和交叉,但允许非完全,其非完全的字符数允许小于或等于设置的非完全数。
例如文本=“中华人民共和国信产部项目”检索词=“信息产业部项目”
并设置非完全数=5。
通过本例的字符串匹配方法,进行非完全检索,可以检索出“中华人民共和国信产部项目”的文本。该例匹配的实际非完全数=4,其中“息”与“业”为非完全匹配的字符,该例匹配度为71%。
6、八种信息检索方式之六的离散非完全检索方式的用户界面实例离散非完全检索 离散数 交叉数 非完全数 该种方式,离散数>0且非完全数>0,表示对用户提供的检索词进行离散非完全检索,被检出的文本满足的条件为检索词出现在文本中的字符不允许交叉,但允许离散和非完全,其离散的字符数允许小于或等于设置的离散数,其非完全的字符数允许小于或等于设置的非完全数。
例如文本=“拼音、笔划组合输入法”检索词=“拼音声调笔划”并设置离散数=4,非完全数=4。
通过本例的字符串匹配方法,进行离散非完全检索,可以检索出“拼音、笔划组合输入法”的文本。该例匹配的实际离散数为2,实际非完全数为4,其中中文“、”为离散的字符,而“声调”为非完全匹配的字符,该例匹配度为61%。
7、八种信息检索方式之七的交叉非完全检索方式的用户界面实例交叉非完全检索 离散数 交叉数 非完全数 该种方式,交叉数>0且非完全数>0,表示对用户提供的检索词进行交叉非完全检索,被检出的文本满足的条件为检索词出现在文本中的字符不允许离散,但允许交叉和非完全,其交叉的字符数或子串数允许小于或等于设置的交叉数,其非完全的字符数允许小于或等于设置的非完全数。
例如文本=“拼音笔划组合输入法”检索词=“拼音、划笔”并设置交叉数=4,非完全数=4。
通过本例的字符串匹配方法,进行交叉非完全检索,可以检索出“拼音笔划组合输入法”的文本。该例匹配的以字符为单位的实际交叉数为2,以子串为单位的实际交叉数为1;实际非完全数为2。其中“笔”或“划”为交叉的字符,而中文“、”号为非完全的字符,该例以字符为单位的匹配度为69%,以子串为单位的匹配度为75%。
8、八种信息检索方式之八的离散交叉非完全检索方式的用户界面实例离散交叉非完全检索 离散数 交叉数 非完全数 该种方式,离散数>0且交叉数>0且非完全数>0,表示对用户提供的检索词进行离散交叉非完全检索,被检出的文本满足的条件为检索词出现在文本中的字符,其离散的字符数允许小于或等于设置的离散数、交叉的字符数或子串数允许小于或等于设置的交叉数,其非完全的字符数允许小于或等于设置的非完全数。
例如文本=“拼音、笔划、声调组合输入法”检索词=“声调-拼音-笔划”并设置离散数=5,交叉数=5,非完全数=5。
通过本例的字符串匹配方法,进行离散交叉非完全检索,可以检索出“拼音、笔划、声调组合输入法”的文本。该例匹配的实际离散数为4,匹配的以字符为单位的实际交叉数为4,以子串为单位的实际交叉数为1;实际非完全数为2。其中两个中文“、”号为离散的字符,“声调”为交叉的字符,而两个西文“-”号为非完全匹配的字符。该例以字符为单位的匹配度为61%,以子串为单位的匹配度为72%。
以上信息检索方式用户界面每当修改任意一个数值框中的数值,将自动调整信息检索方式的名称。显然本例的信息检索方式的判断及显示的规则为若离散数=0且交叉数=0且非完全数=0,则为精确检索方式;若离散数>0且交叉数=0且非完全数=0,则为离散检索方式;若离散数=0且交叉数>0且非完全数=0,则为交叉检索方式;若离散数>0且交叉数>0且非完全数=0,则为离散交叉检索方式;若离散数=0且交叉数=0且非完全数>0,则为非完全检索方式;若离散数>0且交叉数=0且非完全数>0,则为离散非完全检索方式;若离散数=0且交叉数>0且非完全数>0,则为交叉非完全检索方式;若离散数>0且交叉数>0且非完全数>0,则为离散交叉非完全检索方式。
本例的这种判别方法及其对应的输入值,以0代表“不允许”,其检索条件最严格,查准率最高;大于0的整数代表检索约束条件,数值越大,检索条件越宽松,查全率越高。数值越小,检索条件越严格,查准率越高。它能最简单、直观的反映不同要求的信息检索,并且进行处理时最为简便、有效。
实施例二本例的方法与实施例一的方法基本相同,不同的仅仅是B步的字符串匹配及输出的具体步骤为a步输入参数合法性检验计算出检索词的长度m以及文本的长度n;对n、m、离散数、交叉数、非完全数,进行合法性检验,若不满足合法性,退出匹配,并返回空指针结果;否则,交叉数、非完全数不能超过m-1,若超过则改为m-1;b步循环初始化设置有一个节点的OUT链,该节点中包含如下初始信息最大位置=0、最小位置=0,匹配度=100;设置滑动窗位置=1,表示文本中当前第一个正准备处理的位置;对检索词=p1p2......pm中的所有字符,进行稳定的升序排序,并存储在数组PT中,数组PT中同时存储了各字符在检索词中原来的位置,分别称为数组PT中存储的字符子数组PTc以及数组PT中存储的位置子数组PTp;从文本中的第一个字符开始,选取长度为min(m+离散数-1,n-滑动窗位置)的子串作为滑动窗子串,在该滑动窗子串前增加一个小于任何字符的特殊符号,对滑动窗子串的字符进行稳定的升序排序,并存储在数组WT中,数组WT中同时存储了各字符在文本中原有的位置,且特殊符号的位置为零,分别称为数组WT中存储的字符子数组WTc以及数组WT中存储的位置子数组WTp;min为最小值函数;c步判定循环是否结束若(n-滑动窗位置+1+非完全数)小于m,则删除OUT链首节点,退出匹配并返回OUT链;d步进行下一个滑动窗子串匹配的参数初始化滑动窗位置开始,在文本中选取长度为min(m+离散数,n-滑动窗位置+1)的子串作为滑动窗子串,再删除数组WT中最小的存储的位置以及对应的字符,然后对滑动窗子串的最后一个字符进行稳定插入排序,插入到数组WT中,若(n-滑动窗位置+1)<(m+离散数)则不用再进行插入排序;
数组POS中全部初始化为-1,实际离散数=0,实际交叉数=0,实际非完全数=0,数组WT的位置W=1,数组PT的位置P=1,最大位置=最小位置=WTp中的第一个数值;e步滑动窗子串匹配是否结束若数组WT比较结束或者数组PT比较结束,则转g步;f步滑动窗子串字符与检索词的字符进行循环比较根据WTc中位置W存储的字符与PTc中位置P存储的字符的比较情况,分别进行以下情况处理若WTc中位置W存储的字符<PTc中位置P存储的字符,则位置W增加1,转e步;若WTp中位置W存储的字符>PTp中位置P存储的字符,则位置P增加1,实际非完全数增加1;若实际非完全数小于或等于非完全数,则转e步,否则,滑动窗位置增加1,转c步;若WTc中位置W存储的字符=PTc中位置P存储的字符,则将WTp中位置W存储的数值存储到数组POS中,其存储位置为PTp中位置P存储的数值;若WTp中位置W存储的数值>最大位置,则将WTp中位置W存储的数值存入最大位置中;若WTp中位置W存储的数值<最小位置,则将WTp中位置W存储的数值存入最小位置中;位置W增加1,位置P增加1,转e步;g步判定滑动窗子串是否满足约束条件求实际非完全数=(实际非完全数+m-位置P+1);若实际非完全数>非完全数,则滑动窗位置增加1,转c步;求实际离散数=(最大位置-最小位置+1-m+实际非完全数);若实际离散数>离散数,则滑动窗位置增加1,转c步;计算实际交叉数;若实际交叉数>交叉数,则滑动窗位置增加1,转c步;h步计算出匹配度临时变量=Sqrt([m-实际非完全数-实际离散数÷(最大位置-最小位置+1)]÷(最大位置-最小位置+实际非完全数+1)×[(m-实际非完全数-实际交叉数)÷m]);Sqrt为开方函数;匹配度=Round(100×临时变量);Round为四舍五入函数;i步将匹配结果插入OUT链滑动窗位置增加1;将匹配度、最大位置、最小位置、数组POS、实际离散数、实际交叉数、实际非完全数组织成一个新节点;
若(新节点中的最小位置>OUT链最后一个节点中的最大位置)则将新节点直接插入OUT链最后,转c步;若(新节点中的最小位置小于或等于OUT链最后一个节点中的最大位置)且(新节点匹配度>OUT链最后一个节点匹配度)则将新节点替换OUT链最后一个节点,转c步;否则放弃新节点,转c步。
由于在实际匹配时,文本中可能出现多个满足检索约束条件的子串,且可能存在有位置重叠的两个子字符序列,或者有位置重叠的连环多个子字符序列,将产生许多冗余的重叠信息,对此,本例的方法对于有位置重叠的两个子字符序列,或者有位置重叠的连环多个子字符序列,在其输出的OUT链上只输出匹配度大的子字符序列,使输出信息既全面又不冗余。
若返回的OUT链为空,表示不匹配,否则OUT链包含了所有匹配出的子字符序列,每个子字符序列包括匹配度、最大位置、最小位置、数组POS、实际离散数、实际交叉数、实际非完全数。
因此,本例的作法除具有实施例一的全部优点外,还为信息检索用户提供了一个全面、详细的检索词在指定文本中的匹配信息,为用户对信息的取舍给出了最完整的参考信息。
下面是本例的方法的实际检索例子及用户界面DCN检索 D C N 该实例的用户界面中,用“离散”对应的英文单词“Discrete”的首字母D表示离散,用“交叉”对应的英文单词“Cross”的首字母C表示交叉,用“非完全”对应的英文单词“Non complete”的首字母N表示非完全。
该种方式,离散数>0且交叉数>0且非完全数>0,表示对用户提供的检索词进行离散交叉非完全检索,被检出的文本满足的条件为检索词出现在文本中的字符,其离散的字符数允许小于或等于设置的离散数、交叉的字符数或子串数允许小于或等于设置的交叉数,其非完全的字符数允许小于或等于设置的非完全数。
实例文本=“声调、拼音、笔划或声调、拼音笔划声调”检索词=“拼音-笔划-声调”并设置N=5,C=5,D=5。
通过本例的字符串匹配方法,进行离散交叉非完全检索,可以检索出文本“声调、拼音、笔划或声调、拼音笔划声调”。该例中,存在满足约束条件的有位置重叠的连环多个子字符序列,匹配处理后OUT链输出两个无位置重叠的匹配子串“拼音、笔划或声调”和“拼音笔划声调”。
OUT链的第一个节点包含第一个匹配子串“拼音、笔划或声调”及其相关信息该子串的的实际离散数为4,实际交叉数为0,实际非完全数为2,其中“、”和“或”为离散的字符,而两个西文“-”号为非完全匹配的字符,该例匹配度为75%。
OUT链的第二个节点包含第二个匹配子串“拼音笔划声调”及其相关信息实际离散数为0,实际交叉数为0,实际非完全数为2,其中两个西文“-”号为非完全匹配的字符,该子串的匹配度为86%。
本发明在具体实施时,还可选择三种特性参数的部分组合,形成其它用户界面。
例如,将非完全特性不由用户设置而固定设置为不允许,离散、交叉特性则可由用户选择设置的用户界面。该种界面只有离散数和交叉数两个特性值,可以选择精确、离散、交叉、离散交叉共4种信息检索方式。如下所示X检索 离散数 交叉数 其中的“X”=“精确”或“离散”或“交叉”或“离散交叉”。
又如,将非完全及交叉特性均不由用户设置而固定设置为不允许,离散特性则可由用户选择设置的用户界面,该种界面根据离散数参数值,可以选择精确和离散2种信息检索方式。如下所示X检索 离散数 其中的“X”=“精确”或“离散”。
以上用户界面中的特性参数名称,以及信息检索方式名称,在具体实施时,还可规定其它文字符号替代。
本发明用于信息检索的字符串匹配方法、数值输入框、数值的大小,相应地影响到信息检索的检索性能、信息检索的检索方式以及提供多大约束的检索。
本发明充分考虑了信息检索功能的扩展,以及用户对信息检索操作上的需求用户通过任意选择三种特性参数的数值框,输入不同的数值,即可选择8种检索方式之一,进行不同性质、满足不同约束要求的信息检索。本发明操作简单、灵活、方便,并且在功能上为查全、查准提供了灵活多样的应对手段和方法,可以进行定性、定量检索。
本发明的基于三种特性的字符串匹配方法,应用于信息检索领域,如各种语言的网络信息搜索、数据库检索、电子词典、数据查询、信息输入等领域。不仅如此,在生物技术领域也有其用武之地DNA匹配是目前遗传基因研究中的重要课题,基于特性的字符串匹配方法,以其灵活、方便、多样的匹配功能,同样能够适应于DNA匹配的要求。
权利要求
1.一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其步骤为A步设置特性参数值用户在用户界面中设置反映离散性的离散数即检索词各字符出现在文本中的离散的字符数;反映交叉性的交叉数即检索词各字符出现在文本中的交叉的字符数或子串数;反映非完全性的非完全数即检索词各字符未出现在文本中的字符数;并由用户在用户界面中输入检索词;B步字符串匹配及输出信息处理设备根据用户输入的检索词,对指定的一个文本,以A步设置的离散数、交叉数、非完全数作为匹配约束条件,进行基于该三种特性的字符串匹配运算,输出精确检索、离散检索、交叉检索、离散交叉检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式的匹配结果。
2.根据权利要求1所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述B步的字符串匹配及输出的具体步骤为a步输入参数合法性检验计算出检索词的长度m以及文本的长度n;对n、m、离散数、交叉数、非完全数,进行合法性检验,若不满足合法性,则退出匹配,并返回不匹配的结果;否则,交叉数、非完全数不能超过m-1,若超过则改为m-1;b步循环初始化设置滑动窗位置=1,表示文本中当前第一个正准备处理的位置;对检索词=p1p2……pm中的所有字符,进行稳定的升序排序,并存储在数组PT中,数组PT中同时存储了各字符在检索词中原来的位置,分别称为数组PT中存储的字符子数组PTc以及数组PT中存储的位置子数组PTp;从文本中的第一个字符开始,选取长度为min(m+离散数-1,n-滑动窗位置)的子串作为滑动窗子串,在该滑动窗子串前增加一个小于任何字符的特殊符号,对滑动窗子串的字符进行稳定的升序排序,并存储在数组WT中,数组WT中同时存储了各字符在文本中原有的位置,且特殊符号的位置为零,分别称为数组WT中存储的字符子数组WTc以及数组WT中存储的位置子数组WTp;其中min为最小值函数;c步判定循环是否结束若(n-滑动窗位置+1+非完全数)小于m,则结束处理,并返回不匹配结果;d步进行下一个滑动窗子串匹配的参数初始化滑动窗位置开始,在文本中选取长度为min(m+离散数,n-滑动窗位置+1)的子串作为滑动窗子串,再删除数组WT中最小的存储的位置以及对应的字符,然后对滑动窗子串的最后一个字符进行稳定插入排序,插入到数组WT中,若(n-滑动窗位置+1)<(m+离散数)则不用再进行插入排序;数组POS中全部初始化为-1,实际离散数=0,实际交叉数=0,实际非完全数=0,数组WT的位置W=1,数组PT的位置P=1,最大位置=最小位置=WTp中的第一个数值;e步滑动窗子串匹配是否结束若数组WT比较结束或者数组PT比较结束,则转g步;f步滑动窗子串字符与检索词的字符进行循环比较根据WTc中位置W存储的字符与PTc中位置P存储的字符的比较情况,分别进行以下情况处理若WTc中位置W存储的字符<PTc中位置P存储的字符,则位置W增加1,转e步;若WTp中位置W存储的字符>PTp中位置P存储的字符,则位置P增加1,实际非完全数增加1;若实际非完全数小于或等于非完全数,则转e步,否则,滑动窗位置增加1,转c步;若WTc中位置W存储的字符=PTc中位置P存储的字符,则将WTp中位置W存储的数值存储到数组POS中,其存储位置为PTp中位置P存储的数值;若WTp中位置W存储的数值>最大位置,则将WTp中位置W存储的数值存入最大位置中;若WTp中位置W存储的数值<最小位置,则将WTp中位置W存储的数值存入最小位置中;位置W增加1,位置P增加1,转e步;g步判定滑动窗子串是否满足约束条件求实际非完全数=(实际非完全数+m-位置P+1);若实际非完全数>非完全数,则滑动窗位置增加1,转c步;求实际离散数=(最大位置-最小位置+1-m+实际非完全数);若实际离散数>离散数,则滑动窗位置增加1,转c步;计算实际交叉数;若实际交叉数>交叉数,则滑动窗位置增加1,转c步;h步计算出匹配度临时变量=Sqrt([m-实际非完全数-实际离散数÷(最大位置-最小位置+1)]÷(最大位置-最小位置+实际非完全数+1)×[(m-实际非完全数-实际交叉数)÷m]);其中Sqrt为开方函数;匹配度=Round(100×临时变量);其中Round为四舍五入函数;i步结束匹配并返回如下结果返回匹配度,数组POS,实际离散数,实际交叉数,实际非完全数。
3.根据权利要求1所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述B步的字符串匹配及输出的具体步骤为a步输入参数合法性检验计算出检索词的长度m以及文本的长度n;对n、m、离散数、交叉数、非完全数,进行合法性检验,若不满足合法性,退出匹配,并返回空指针结果;否则,交叉数、非完全数不能超过m-1,若超过则改为m-1;b步循环初始化设置有一个节点的OUT链,该节点中包含如下初始信息最大位置=0、最小位置=0,匹配度=100;设置滑动窗位置=1,表示文本中当前第一个正准备处理的位置;对检索词=p1p2……pm中的所有字符,进行稳定的升序排序,并存储在数组PT中,数组PT中同时存储了各字符在检索词中原来的位置,分别称为数组PT中存储的字符子数组PTc以及数组PT中存储的位置子数组PTp;从文本中的第一个字符开始,选取长度为min(m+离散数-1,n-滑动窗位置)的子串作为滑动窗子串,在该滑动窗子串前增加一个小于任何字符的特殊符号,对滑动窗子串的字符进行稳定的升序排序,并存储在数组WT中,数组WT中同时存储了各字符在文本中原有的位置,且特殊符号的位置为零,分别称为数组WT中存储的字符子数组WTc以及数组WT中存储的位置子数组WTp;其中min为最小值函数;c步判定循环是否结束若(n-滑动窗位置+1+非完全数)小于m,则删除OUT链首节点,退出匹配并返回OUT链;d步进行下一个滑动窗子串匹配的参数初始化滑动窗位置开始,在文本中选取长度为min(m+离散数,n-滑动窗位置+1)的子串作为滑动窗子串,再删除数组WT中最小的存储的位置以及对应的字符,然后对滑动窗子串的最后一个字符进行稳定插入排序,插入到数组WT中,若(n-滑动窗位置+1)<(m+离散数)则不用再进行插入排序;数组POS中全部初始化为-1,实际离散数=0,实际交叉数=0,实际非完全数=0,数组WT的位置W=1,数组PT的位置P=1,最大位置=最小位置=WTp中的第一个数值;e步滑动窗子串匹配是否结束若数组WT比较结束或者数组PT比较结束,则转g步;f步滑动窗子串字符与检索词的字符进行循环比较根据WTc中位置W存储的字符与PTc中位置P存储的字符的比较情况,分别进行以下情况处理若WTc中位置W存储的字符<PTc中位置P存储的字符,则位置W增加1,转e步;若WTp中位置W存储的字符>PTp中位置P存储的字符,则位置P增加1,实际非完全数增加1;若实际非完全数小于或等于非完全数,则转e步,否则,滑动窗位置增加1,转c步;若WTc中位置W存储的字符=PTc中位置P存储的字符,则将WTp中位置W存储的数值存储到数组POS中,其存储位置为PTp中位置P存储的数值;若WTp中位置W存储的数值>最大位置,则将WTp中位置W存储的数值存入最大位置中;若WTp中位置W存储的数值<最小位置,则将WTp中位置W存储的数值存入最小位置中;位置W增加1,位置P增加1,转e步;g步判定滑动窗子串是否满足约束条件求实际非完全数=(实际非完全数+m-位置P+1);若实际非完全数>非完全数,则滑动窗位置增加1,转c步;求实际离散数=(最大位置-最小位置+1-m+实际非完全数);若实际离散数>离散数,则滑动窗位置增加1,转c步;计算实际交叉数;若实际交叉数>交叉数,则滑动窗位置增加1,转c步;h步计算出匹配度临时变量=Sqrt([m-实际非完全数-实际离散数÷(最大位置-最小位置+1)]÷(最大位置-最小位置+实际非完全数+1)×[(m-实际非完全数-实际交叉数)÷m]);Sqrt为开方函数;匹配度=Round(100×临时变量);Round为四舍五入函数;i步将匹配结果插入OUT链滑动窗位置增加1;将匹配度、最大位置、最小位置、数组POS、实际离散数、实际交叉数、实际非完全数组织成一个新节点;若(新节点中的最小位置>OUT链最后一个节点中的最大位置)则将新节点直接插入OUT链最后,转c步;若(新节点中的最小位置小于或等于OUT链最后一个节点中的最大位置)且(新节点匹配度>OUT链最后一个节点匹配度)则将新节点替换OUT链最后一个节点,转c步;否则放弃新节点,转c步。
4.根据权利要求2、3所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述的g步中的计算实际交叉数的作法为(1)步初始化假设用数组LPOS存放最大升序序列,且数组LPOS的第一个位置的数值初始化为-1,LP用于指示当前数组LPOS处理的位置并初始化为1;数组POS最后添加一个结束标志,取数组POS中第一个数值到比较数据中;(2)步判断是否结束若比较数据为结束标记,转(4)步;(3)步循环处理根据比较进行三种情况处理;若比较数据大于数组LPOS中LP位置的数据,则LP增加1,将比较数据存储到数组LPOS中LP位置处,取数组POS中下一个数值到比较数据中,转(2)步;若比较数据小于数组LPOS中LP位置的数据,则从数组LPOS中第一个位置向后进行折半查找,搜索第一个大于或等于比较数据的数据,并用比较数据改写该数据,取数组POS中下一个数值到比较数据中,转(2)步;若比较数据等于数组LPOS中LP位置的数据,则取数组POS中下一个数值到比较数据中,转(2)步;(4)步得出实际交叉数实际交叉数=m-实际非完全数-LP+1。
5.根据权利要求2、3所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述的g步中的计算实际交叉数的作法为(1)步初始化最大连续序列长度=0,当前连续序列长度=0,连续后继整数出现总数=0;依次将数组POS中大于零的全部数值存入临时数组中,临时数组最后添加一个结束标志;用数组LPOS存放最大升序序列,且数组LPOS的第一个位置的数值初始化为临时数组中第一个数值;LP用于指示当前数组LPOS处理的位置,并初始化为1;取临时数组中第二个数值到比较数据中;(2)步判断是否结束若比较数据为结束标记,转(5)步;(3)步进行连续性处理若比较数据减1等于上一个位置的数据,则当前连续序列长度增加1,连续后继整数出现总数增加1,转(4)步;否则将当前连续序列长度与最大连续序列长度中较大的数值,重新存入最大连续序列长度中,当前连续序列长度=0;(4)步根据比较进行两种情况处理若比较数据大于数组LPOS中LP位置的数据,则LP增加1,将比较数据存储到数组LPOS中LP位置处,取临时数组中下一个数值到比较数据中,转(2)步;若比较数据小于数组LPOS中LP位置的数据,则从数组LPOS中第一个位置向后进行折半查找,搜索第一个大于比较数据的数据,并用比较数据改写该数据;取临时数组中下一个数值到比较数据中,转(2)步;(5)步实际交叉数=m-实际非完全数-(LP+连续后继整数出现总数-Max(最大连续序列长度,当前连续序列长度)),其中Max为求最大值函数。
6.根据权利要求1所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述的A步设置特性参数值时,用户界面有三个数值输入框供用户分别设置离散数、交叉数、非完全数。
7.根据权利要求6所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于所述的用户界面中的三个数值输入框为单纯数值输入框或者组合框,在三个数值输入框的每个框附近还显示有相应特性参数名称。
8.根据权利要求1所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述的A步输入检索词时,用户界面有一个文本框供用户输入检索词。
9.根据权利要求1所述的一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其特征在于,所述的A步设置特性参数值后,信息处理设备根据用户界面设置的离散数、交叉数、非完全数还进行检索方式的判断,判断出用户要求的检索方式属于精确检索、离散检索、交叉检索、离散交叉检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式,并提供给用户界面显示出检索方式的名称。
全文摘要
本发明公开了一种基于离散性、交叉性、非完全性的字符串模式匹配方法,其步骤为A.用户在用户界面中设置离散数、交叉数、非完全数,输入检索词;B.信息处理设备根据用户输入的检索词,对指定的一个文本,以A步设置的离散数、交叉数、非完全数作为匹配约束条件,进行基于该三种特性的字符串匹配运算,输出精确检索、离散检索、交叉检索、交叉离散检索、非完全检索、离散非完全检索、交叉非完全检索、离散交叉非完全检索共八种检索方式中的一种方式的匹配结果。该种方法提供了多种信息检索方式且操作简单、灵活、方便,可进行定性、定量检索,检索功能强大。
文档编号G06F17/30GK1916896SQ20061002178
公开日2007年2月21日 申请日期2006年9月8日 优先权日2006年9月8日
发明者丁光耀 申请人:丁光耀
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1