【发明内容】
基于此,有必要提供一种能降低复杂度并能提高效率的搜索方法。
一种搜索方法,包括以下步骤:
将与关键字符相匹配的兴趣点预先标注顺序号;
将顺序号不同的兴趣点两两按顺序配对,生成兴趣点组;
根据所述兴趣点组中兴趣点顺序关系,对兴趣点进行排序,生成兴趣点的排序模型;
获取用户输入的关键字符,根据所述关键字符查找到相应的兴趣点,按照所述排序模型对查找到的所述兴趣点进行排序。
优选地,还包括步骤:将与关键字符相匹配的兴趣点进行分级;将与关键字符相匹配的兴趣点预先标注顺序号的步骤具体为:将与关键字符相匹配的同级的兴趣点标注相同的顺序号,不同级的兴趣点标注不同的顺序号。
优选地,根据所述兴趣点组中兴趣点的顺序关系对兴趣点进行排序,生成兴趣点的排序模型的步骤具体为:
对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值;
建立每个兴趣点与对应关键字符的特征函数;
根据每个兴趣点的权重值及特征函数计算每个兴趣点对应的参数值;
根据参数值对每个兴趣点进行排序,得到排序模型。
优选地,对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值的步骤具体为:
设置约束条件,所述约束条件同时满足:
所有兴趣点的权重值的平方和最小;及
所有兴趣点组中较小的顺序号对应的兴趣点的参数值大于较大的顺序号对应的兴趣点的参数值;
获取满足所述约束条件的权重值为所有兴趣点的权重值。
优选地,将顺序号不同的兴趣点两两按顺序配对,生成兴趣点组的步骤之后还包括:建立相关性模型样本库,将所述配对的兴趣点组存入所述相关性模型样本库中。
此外,还有必要提供一种能降低复杂度并能提高效率的搜索系统。
一种搜索系统,包括:
标记模块,用于将与关键字符相匹配的兴趣点预先标注顺序号;
配对模块,用于将顺序号不同的兴趣点两两按顺序配对,生成兴趣点组;
模型组建模块,用于根据所述兴趣点组中兴趣点顺序关系对兴趣点进行排序,生成兴趣点的排序模型;
排序模块,用于获取用户输入的关键字符,根据所述关键字符查找到相应的兴趣点,按照所述排序模型对查找到的所述兴趣点进行排序。
优选地,所述标记模块还用于将与关键字符相匹配的兴趣点进行分级,再将与关键字符相匹配的同级的兴趣点标注相同的顺序号,不同级的兴趣点标注不同的顺序号。
优选地,所述模型组建模块还用于对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值,建立每个兴趣点与对应关键字符的特征函数,且根据每个兴趣点的权重值及特征函数计算每个兴趣点对应的参数值,并根据参数值对所有兴趣点进行排序,得到排序模型。
优选地,所述模型组建模块还用于设置约束条件,所述约束条件同时满足:
所有兴趣点的权重值的平方和最小;及
所有兴趣点组中较小的顺序号对应的兴趣点的参数值大于较大的顺序号对应的兴趣点的参数值;
所述模型组件模块还用于获取同时满足所述约束条件的权重值为所有兴趣点的权重值。
优选地,还包括创建模块,所述创建模块用于建立相关性模型样本库,并将所述配对的兴趣点组存入所述相关性模型样本库中。
上述搜索方法及系统,采用预先对兴趣点标注顺序号及根据顺序号配对成兴趣点组,根据兴趣点组中兴趣点顺序关系,对兴趣点进行排序,生成兴趣点的排序模型,根据排序模型对兴趣点进行排序,不需再对兴趣点进行比较配对以及再对兴趣点组进行排序,降低了排序的复杂度,且提高了效率。
【具体实施方式】
下面结合具体的实施例及附图对本发明的搜索方法及系统的技术方案进行详细的描述。
如图1所示,在一个实施例中,一种搜索方法,包括以下步骤:
步骤S110,将与关键字符相匹配的兴趣点预先标注顺序号。
关键字符是指用户搜索时输入的查询字符,如在地图中搜索“北京大学”,关键字符为“北京大学”。不同的关键字符搜索得到的兴趣点不同。如关键字符为“北京大学”搜索得到的兴趣点可为:北京大学西门、北京大学东门、北京大学图书馆等;关键字符为“圆明园”搜索得到的兴趣点可为:圆明园北门、圆明园南门、圆明园遗址等。
将与关键字符相匹配的兴趣点标注顺序号,即关键字符为“北京大学”对应的兴趣点标注一组顺序号,关键字符为“圆明园”对应的兴趣点标注一组顺序号,两者互不干扰。标注顺序号可按照一个顺序号只标注一个兴趣点,也可按照一个顺序号标注多个兴趣点。后续均以某一关键字符对应的所有兴趣点为例描述技术方案。
优选的实施例中,在步骤S110之前还包括:将与关键字符相匹配的兴趣点进行分级。分级可按相关性高低进行。相关性是指兴趣点与关键字符的相关度。相关度可由概率模型或向量空间模块计算得到。将与关键字符相匹配的兴趣点标注顺序号的步骤具体为:对关键字符对应的同级的兴趣点标注相同的顺序号,不同级的兴趣点标注不同的顺序号。同级的兴趣点是指相关性相同的兴趣点,其位置相同,没有先后顺序;不同级的兴趣点是指相关性不同的兴趣点,其位置不同,需要明确先后顺序。如关键字符“北京大学”对应的兴趣点为“北京大学西门”、“北京大学东门”、“北京大学图书馆”,其中,“北京大学西门”和“北京大学东门”为同级的兴趣点,标注顺序号可为2,“北京大学西门”和“北京大学东门”比“北京大学图书馆”的级别高,“北京大学图书馆”标注顺序号可为4,其中,顺序号2和4并不表示在搜索结果中,排在第二位和第四位,仅表示“北京大学西门”和“北京大学东门”排在“北京大学图书馆”的前面。
一组标注好的兴趣点序列可如(poi[1],s[1])、(poi[2],s[2])、...、(poi[m],s[m]),其中,s[m]为兴趣点poi[m]的顺序号。
步骤S120,将顺序号不同的兴趣点两两按顺序配对,生成兴趣点组。
将顺序号不同的兴趣点进行两两配对,生成兴趣点组,配对的顺序按照顺序号的先后。如一兴趣点组X[ij]={(poi[1],s[1])、(poi[2],s[2])}。
在步骤S120之后还包括步骤:建立相关性模型样本库,将配对的兴趣点组存入该相关性模型样本库中。建立相关性模型样本库,将配对后的兴趣点组存储在该相关性模型样本库中,以便后续计算。
步骤S130,根据该兴趣点组中兴趣点顺序关系,对兴趣点进行排序,生成兴趣点的排序模型。
相关性模型样本库建立后,可从该样本库中提取兴趣点组,再根据每组兴趣点组中兴趣点的先后顺序,进行建模训练,直接对兴趣点进行排序,生成兴趣点的排序模型,排序模型中存有每个关键字符对应的所有兴趣点的排序顺序。
步骤S140,获取用户输入的关键字符,根据该关键字符查找到相应的兴趣点,按照该排序模型对查找到的该兴趣点进行排序。
用户通过键盘、触摸屏等输入设备输入关键字符,系统获取到用户输入的关键字符,并根据该关键字符查找到相应的兴趣点,按照得到的排序模型对兴趣点进行排序,得到用户需要的排序结果。
如图2所示,在一个实施例中,根据该兴趣点组中兴趣点顺序关系,对兴趣点进行排序,生成兴趣点的排序模型步骤具体包括:
步骤S210,对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值。
每个兴趣点的权重值与该兴趣点与关键字符的相关性有关,兴趣点组中兴趣点顺序号在先的,其权重值大,兴趣点的顺序号在后的权重值小。兴趣点组中兴趣点顺序关系便于后续建立约束条件。另外,所有兴趣点都有对应的参数值,该参数值可为反映兴趣点与关键字符的相关性程度的得分值。兴趣点的参数值可根据兴趣点的权重值与建立的相关的特征函数计算得到,具体计算如步骤S220和步骤S230,兴趣点组中兴趣点顺序关系体现在参数值大小关系,因此参数值大小关系对兴趣点的权重值有约束作用。
因每个兴趣点的权重值可有多个不同的值,如兴趣点组{(poi[1],s[1]),(poi[2],s[2])},(poi[1],s[1])的权重值w1,(poi[1],s[1])的权重值w2,w1可为5,w2可为3,或者w1可为3,w2可为1,为了确定兴趣点的权重值的最终取值,需设定约束条件进行训练得出。
对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值的步骤具体为:设置约束条件,该约束条件同时满足:
所有兴趣点的权重值的平方和最小,即
最小;所有兴趣点组中较小的顺序号对应的兴趣点的参数值大于较大的顺序号对应的兴趣点的参数值,即对所有兴趣点组{(poi[i],s[i]),(poi[j],s[j])},满足参数值Score以下约束条件,若s[i]<s[j],Score(poi[i],q)>Score(poi[j],q);若s[i]>s[j],Score(poi[j],q)>Score(poi[i],q)。
其中,
最小化过拟合带来的泛化错误,而所有约束条件保证了后续得到的排序模型中所有兴趣点组中的兴趣点的顺序与顺序号一致。
获取同时满足上述两个约束条件的权重值为某一关键字符对应的所有兴趣点的权重值。按照上述两个约束条件对某一关键字符对应的所有的兴趣点进行训练,得到每一个兴趣点的权重值。
步骤S220,建立每个兴趣点与对应关键字符的特征函数。
建立每个兴趣点与关键字符的特征函数,如fk(poi[i],q)是关于兴趣点poi和关键字符q的第k个特征函数。例如关键字符北京大学,兴趣点为“北京大学东门”、“北京大学图书馆”,可构建两个特征函数:特征函数f1(poi[i],q),其解为当poi[i]名称为q+“东门”时,则其函数值为1,否则为0;特征函数f2(poi[i],q),其解为当poi[i]名称为q+“图书馆”,则其函数值为1,否则为0。
步骤S230,根据每个兴趣点的权重值及特征函数计算每个兴趣点对应的参数值。
每个兴趣点的权重值与特征函数的乘积计算得到每个兴趣点对应的参数值。该参数值可为得分值。
步骤S240,根据参数值对所有兴趣点进行排序,得到排序模型。
得到每个兴趣点的参数值后,按照参数值对所有兴趣点进行排序,构成了排序模型,排序模型中存储有每一个关键字符对应的所有兴趣点排序顺序。
如图3所示,在一个实施例中,一种搜索系统,包括标记模块310、配对模块320、模型组建模块330和排序模块340。
标记模块310用于将与关键字符相匹配的兴趣点预先标注顺序号。关键字符是指用户搜索时输入的查询字符,如在地图中搜索“北京大学”,关键字符为“北京大学”。不同的关键字符搜索得到的兴趣点不同。如关键字符为“北京大学”搜索得到的兴趣点可为:北京大学西门、北京大学东门、北京大学图书馆等;关键字符为“圆明园”搜索得到的兴趣点可为:圆明园北门、圆明园南门、圆明园遗址等。
将与关键字符相匹配的兴趣点标注顺序号,即关键字符为“北京大学”对应的兴趣点标注一组顺序号,关键字符为“圆明园”对应的兴趣点标注一组顺序号,两者互不干扰。标注顺序号可按照一个顺序号只标注一个兴趣点,也可按照一个顺序号标注多个兴趣点。
优选的实施例中,标记模块310还用于将与关键字符相匹配的兴趣点进行分级,再将与关键字符相匹配的同级的兴趣点标注相同的顺序号,不同级的兴趣点标注不同的顺序号。分级是按照相关性高低进行分级,相关性是指兴趣点与关键字符的相关度。同级的兴趣点是指相关性相同的兴趣点,其位置相同,没有先后顺序;不同级的兴趣点是指相关性不同的兴趣点,其位置不同,需要明确先后顺序。如关键字符“北京大学”对应的兴趣点为“北京大学西门”、“北京大学东门”、“北京大学图书馆”,其中,“北京大学西门”和“北京大学东门”为同级的兴趣点,标注顺序号可为2,“北京大学西门”和“北京大学东门”比“北京大学图书馆”的级别高,“北京大学图书馆”标注顺序号可为4,其中,顺序号2和4并不表示在搜索结果中,排在第二位和第四位,仅表示“北京大学西门”和“北京大学东门”排在“北京大学图书馆”的前面。
一组标注好的兴趣点序列可如(poi[1],s[1])、(poi[2],s[2])、...、(poi[m],s[m]),其中,s[m]为兴趣点poi[m]的顺序号。
配对模块320用于将顺序号不同的兴趣点两两按顺序配对,生成兴趣点组。将顺序号不同的兴趣点两两配对成兴趣点组,配对的顺序按照顺序号的先后。如一兴趣点组X[ij]={(poi[1],s[1])、(poi[2],s[2])}。
模型组建模块330用于根据该兴趣点组中兴趣点顺序关系,对兴趣点进行排序,生成兴趣点的排序模型。模型组建模块330根据每组兴趣点组中兴趣点的先后顺序,进行建模训练,直接对所有兴趣点进行排序,生成兴趣点的排序模型,排序模型中存有每个关键字符对应的所有兴趣点的排序顺序。
排序模块340用于获取用户输入的关键字符,根据该关键字符查找到相应的兴趣点,按照该排序模型对查找到的所述兴趣点进行排序。排序模块340获取到用户通过键盘、触摸屏等输入的关键字符,并根据该关键字符查找到相应的兴趣点,按照得到的排序模型对兴趣点进行排序,得到用户需要的排序结果。
优选的实施例中,模型组建模块330还用于对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值,建立每个兴趣点与对应的关键字符的特征函数,且根据每个兴趣点的权重值及特征函数计算每个兴趣点对应的参数值,并根据参数值对所有兴趣点进行排序,得到排序模型,排序模型中存有每个关键字符对应的所有兴趣点的排序顺序。
模型组建模块330对所有兴趣点组进行相关性计算得到所有兴趣点的权重值,兴趣点的权重值与兴趣点与关键字符的相关性有关,兴趣点组中兴趣点顺序号在先的,其权重值大,兴趣点的顺序号在后的权重值小,兴趣点的顺序号相同其权重值也相同。建立每个兴趣点与对应的关键字符的特征函数,如fk(poi[i],q)是关于兴趣点poi和关键字符q的第k个特征函数。例如关键字符北京大学,兴趣点为“北京大学东门”、“北京大学图书馆”,可构建两个特征函数:特征函数f1(poi[i],q),其解为当poi[i]名称为q+“东门”时,则其函数值为1,否则为0;特征函数f2(poi[i],q),其解为当poi[i]名称为q+“图书馆”,则其函数值为1,否则为0。
每个兴趣点的权重值与特征函数的乘积计算得到每个兴趣点对应的参数值。该参数值可为得分值。其中,因每个兴趣点的权重值可有多个不同的值,如兴趣点组{(poi[1],s[1]),(poi[2],s[2])},(poi[1],s[1])的权重值w1,(poi[1],s[1])的权重值w2,w1可为5,w2可为3,或者w1可为3,w2可为1,为了确定兴趣点的权重值最终取值,需设定约束条件进行训练得出。
模型组建模块330对所有兴趣点组进行相关性计算,得到所有兴趣点的权重值具体过程为:设置约束条件,该约束条件同时满足:所有兴趣点的权重值的平方和最小,即
最小;所有兴趣点组中较小的顺序号对应的兴趣点的参数值大于较大的顺序号对应的兴趣点的参数值,即对所有兴趣点组{(poi[i],s[i]),(poi[j],s[j])},满足参数值Score以下约束条件,若s[i]<s[j],Score(poi[i],q)>Score(poi[j],q);若s[i]>s[j],Score(poi[j],q)>Score(poi[i],q)。其中,
最小化过拟合带来的泛化错误,而所有约束条件保证了后续得到的排序模型中所有兴趣点组中的兴趣点的顺序与顺序号一致。
模型组建模块330还用于获取同时满足该约束条件的权重值为所有兴趣点的权重值。根据约束条件进行计算得到所有兴趣点的权重值。
如图4所示,在一个实施例中,上述搜索系统,除了包括标记模块310、配对模块320、模型组建模块330和排序模块340,还包括创建模块350。
创建模块350用于建立相关性模型样本库,并将配对的兴趣点组存入该相关性模型样本库中。模型组建模块330还用于从该样本库中提取兴趣点组,再根据每组兴趣点组中兴趣点的先后顺序,进行建模,模拟计算,得到排序模型。
上述搜索方法及系统,适用于网搜索排序、地图搜索排序,特别适用于地图搜索排序。
上述搜索方法及系统,采用预先对兴趣点标注顺序号及根据顺序号配对成兴趣点组,根据兴趣点组中兴趣点顺序关系,对兴趣点进行排序,生成兴趣点的排序模型,根据排序模型对兴趣点进行排序,不需再对兴趣点进行比较配对以及再对兴趣点组进行排序,降低了排序的复杂度,且提高了效率。
另外,对同级的兴趣点标注相同的顺序号,不同级的兴趣点标注不同的顺序号,标注灵活,减少了构成排序模型前配对兴趣点组的组数,减少排序过程,节省时间,提高效率;根据兴趣点的权重值及特征函数值计算得到兴趣点的参数值,根据兴趣点的参数值进行排序,降低了排序复杂度,提高了效率;建立相关性模型样本库,方便后续的计算得出排序模型。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。