具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例进行详细描述。
实施例一
请参阅图1,其为本申请一种搜索结果的排序方法的一个实施例的流程图,该方法包括以下步骤:
步骤101:从日志系统中提取出被曝光的日志文档;
其中,在日志系统中以增量更新的方式保存有历史被曝光的日志文档和当天被曝光的日志文档。从日志系统中提取出在日志系统保存的所有被曝光的日志文档。用户通过搜索引擎进行查询时,与查询请求相关的搜索结果会展示给用户,该展示给用户的搜索结果即为被曝光的搜索结果,该被曝光的搜索结果以日志文档的形式保存在日志系统中。
步骤102:计算所述日志文档与查询请求的相关性的贝叶斯后验概率;
其中,发明人在研究中发现,一个信息与用户查询请求的相关性程度往往与该信息在搜索结果列表中的位置和在搜索结果列表中的被点击顺序有关。例如,当用户面对一个搜索结果展示页面时,一般会从上至下逐一浏览日志文档在网页中所展示的展示信息,如果发现某一个日志文档的展示信息符合自身的搜索意图,就会点击该展示信息并查看详细内容。当查看完该展示信息的详细内容后,可能会继续浏览下面的日志文档的展示信息,也有可能因为查看到了需要的内容而结束浏览。由此可见,用户是否点击某个日志文档主要取决于用户是否浏览到该日志文档,以及该日志文档与用户查询请求的相关性程度。而用户是否继续浏览下面的日志文档主要取决于之前日志文档的点击情况。
基于上述情况,建立一个数学模型。如图2所示,其为本申请一种构建的概率图模型结构示意图。图2中的每个节点代表一个随机变量,S表示日志文档与用户查询请求的相关性,E表示用户是否看到日志文档,C表示用户是否点击日志文档,下标表示日志文档在一个搜索结果展示页面中的位置,M表示一个搜索结果展示页面中的日志文档总数目。根据前述分析可知,用户是否点击某个日志文档与用户是否浏览到该日志文档,以及该日志文档与用户查询请求的相关性程度有关,用户是否浏览下面的日志文档与之前日志文档的点击情况有关,因此,从图2中可以看出,在该模型中,例如,S1和E1分别指向C1,表示用户是否点击一个日志文档C1与用户是否浏览到该日志文档E1,以及该日志文档与用户查询请求的相关性程度S1有关,而C1指向E2,表示用户是否继续浏览下面的日志文档E2与之前日志文档C1的点击情况有关。
根据如图2所示的数学模型的概率推论,当先验分布在[0,1]上服从均匀分布时,其中,0和1表示实数值区间的两个端点,即,相关性变量的先验分布是从0到1的实数值区间上的均匀分布,在用户点击日志文档C1、C2...和CN的情况下,日志文档与查询请求的相关性的联合后验分布计算公式为:
其中,上述公式中的Rj表示日志文档j与用户查询请求的相关性随机变量,Nj表示日志文档j被点击的总次数,表示日志文档j位于r+d处且没有被点击,位置r处的日志文档被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数,T表示所有(r,d)的可能取值,βr,d为一个全局参数,N表示从日志系统中提取的日志文档的总数目,z表示归一化系数。
从上述联合分布的形式可以看出,联合分布可以分解为单个文档分布的乘积。因此,单个文档j的相关性后验分布计算公式为:
其中,β
r,d为一个全局参数,其估计值
N
r,d为在日志文档j所在的同一个点击序列中,位置r处的日志文档和位置r+d处的日志文档都被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数;
为在日志文档j所在的同一个点击序列中,位置r处的日志文档被点击,位置r+d处的日志文档没有被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数;r的取值范围为小于或等于M-1的所有自然数,d的取值范围为小于或等于M-r的所有整数,M表示日志文档j所在的同一点击序列中所有日志文档的总数。其中,所述同一个点击序列即为针对同一个用户查询请求而获得的所有查询结果构成的序列。例如,针对用户查询请求“MP3”,有100个日志文档为该用户查询请求的所有查询结果,则100个日志文档构成针对“MP3”的同一个点击序列。
步骤103:根据所述贝叶斯后验概率计算所述日志文档与查询请求的相关性的期望值;
其中,根据上述步骤得到的贝叶斯后验概率计算日志文档与查询请求的相关性的期望值,期望值的计算公式为:
需要说明的是,由于计算期望值的开销比较大,会消耗较大的系统资源。为了避免计算期望值所带来的资源消耗,在本步骤计算日志文档的相关性的期望值之前,对日志文档进行过滤。其中,有一些日志文档与用户查询请求的相关性不好也不坏。在实际应用中,为了节省空间和时间,需要对这种相关性不好也不坏的日志文档进行过滤。
通常,当日志文档与用户查询请求的相关性的期望值为0.5时,表示相关性不好也不坏,因此,可以过滤掉与用于查询请求的相关性的期望值为0.5的日志文档。而本申请需要提供一种在计算期望值之前,就可以过滤掉相关性不好也不坏的日志文档。
优选的,在所述根据贝叶斯后验概率计算日志文档与查询请求的相关性的期望值之前,还包括:根据全局参数对日志文档进行过滤,使全局参数小于对应的预设阈值的日志文档被过滤。其中,全局参数指的是和用户查询请求无关的一个参数,反应的是用户对一个搜索引擎的评价的一组指标参数。在给定的情况下,全局参数与日志文档与查询请求的相关性的期望值通过概率分布函数建立起了对应关系,按照期望值的阈值过滤等价于全局参数的阈值过滤,这种关系的推导需要预先做出解析,然后在系统初始化阶段根据期望值的阈值计算全局参数的阈值,在日志处理阶段就可以根据全局参数的阈值进行过滤。
例如,从提取出的被曝光的日志文档中筛选出被曝光一次且没有被点击的日志文档;从筛选出的日志文档中按照过滤条件公式
过滤全局参数小于对应的预设阈值的日志文档,其中,β
r,d为全局参数,
N
r,d为在被筛选出的日志文档所在的同一个点击序列中,位置r处的日志文档和位置r+d处的日志文档都被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数;例如,为了便于描述,以一个包含5个日志文档的同一个点击序列为例来说明,已知位置排列第一、第三和第五的日志文档被点击,位置排列第二和第四的日志文档没有被点击。则位置排列第一和第三的日志文档都被点击,而位置排列位于第二和第二之间,即位置排列位于第二的日志文档没有被点击,该情况的发生次数为1次,同时,位置排列第三和第五的日志文档都被点击,而位置排列位于第三和第五之间,即位置排列位于第四的日志文档没有被点击,该情况的发生次数为1次。因此,在以上的同一个点击序列中,N
r,d为2。
为在被筛选出的日志文档所在的同一个点击序列中,位置r处的日志文档被点击,位置r+d处的日志文档没有被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数;r的取值范围为小于或等于M-1的所有自然数,d的取值范围为小于或等于M-r的所有整数,M表示被筛选出的日志文档所在的同一点击序列中所有日志文档的总数,E
th为与日志文档与查询请求的相关性的期望值对应的预设阈值。
需要说明的是,上述Eth为与相关性的期望值对应的预设阈值。通常,对日志文档与查询请求的相关性的期望值设定一个阈值,如设定阈值为0.5,则可以过滤掉相关性的期望值为0.5的日志文档。当然,可以根据用户的使用需求和应用场景任意设定与相关性的期望值对应的预设阈值,本申请实施例对此并不限定。
当对日志文档进行过滤后,在本步骤中,计算过滤后的日志文档的期望值。
另外,当计算了日志文档与查询请求的相关性的期望值后,且在将日志文档与查询请求的相关性的期望值作为value存储在检索数据结构之前,优选的,还可以再进行一次日志文档的过滤,以保证经过二次过滤后,检索数据结构中保存的日志文档与查询请求的相关性更高,搜索引擎可以快速地从检索数据结构中检索到与用户提交的查询请求相关的日志文档和其期望值。此处,由于已经计算得到了日志文档与查询请求的相关性的期望值,因此,可以直接利用日志文档与查询请求的相关性的期望值进行过滤,即,当日志文档与查询请求的相关性的期望值等于预设数值时,过滤掉该日志文档。
此外,还可以根据贝叶斯后验概率计算日志文档与查询请求的相关性的方差,可以直接利用日志文档与查询请求的相关性的方差进行过滤,即,当日志文档与查询请求的相关性的方差等于预设数值时,过滤掉该日志文档。其中,方差的计算公式为:
还需要说明的是,可以根据用户的使用需求和应用场景任意设定与日志文档与查询请求的相关性的期望值或者方差对应的预设阈值,本申请实施例对此并不限定。
步骤104:将查询请求和日志文档的标识作为key,将所述日志文档与查询请求的相关性的期望值作为value存储在检索数据结构中;
例如,key=查询请求和日志文档的标识所占内存的连续块,其中,查询请求的一个字符占一个内存字节,日志文档的标识用4个字节的内存表示;value=期望值乘以10000的整数部分所占内存。key和value在检索数据结构中的索引可以采用常用的trie树建立,本申请实施例对此不再做详细说明。
优选的,为了保证检索数据结构的准确性,在将查询请求和日志文档的标识作为键,将所述日志文档与查询请求的相关性的期望值作为值存储在检索数据结构中之后,还包括:对所述检索数据结构进行校验;则所述从检索数据结构中查询与所述用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值为:从通过校验的检索数据结构中查询与所述用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值。
其中,将检索数据结构中的键作为输入数据,经过搜索引擎在检索数据结构的检索后,如果输出的结果是与作为输入数据的键对应的值,则通过验证。例如,在检索数据结构中有一组键值对,该键值对中键对应的查询请求为“MP3”,对应的日志文档标识为ID1、ID2和ID3,该键值对中值对应的日志文档与查询请求的相关性的期望值为0.5、0.8和0.7。分别将“MP3和ID1”、“MP3和ID2”和“MP3和ID3”作为输入数据,经过搜索引擎在检索数据结构中检索后,如果输出的结果分别为0.5、0.8和0.7,则通过检验,否则,没有通过检验。
将检索数据结构中的所有键按照上述方式逐一地校验,当所有键都通过校验后,则该检索数据结构通过校验。
步骤105:当接收到用户提交的查询请求时,从所述检索数据结构中查询与所述用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值;
步骤106:按照期望值从大到小的顺序对查询到的日志文档进行排序。
由上述实施例可以看出,本申请基于贝叶斯后验概率计算日志文档与查询请求的相关性的期望值,当从检索数据结构中查询到与用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值后,按照期望值从大到小的顺序对日志文档进行排序,考虑到了信息的位置因素和点击顺序的因素,使用户快速获得最想要的信息。减少搜索过程对于搜索引擎服务器的消耗,并节省搜索引擎服务器的系统资源。
实施例二
下面详细说明一种搜索结果的排序方法的优选实施方式。请参阅图3,其为本申请一种搜索结果的排序方法的另一个实施例的流程图,所述方法包括以下步骤:
步骤301:从日志系统中提取出当天被曝光的日志文档和历史被曝光的日志文档;
其中,还可以分别保留一定时间段内当天被曝光的日志文档和历史被曝光的日志文档,例如,保留一个滑动时间窗口内的日志文档,作为一种备份,一旦系统运行过程中发现异常情况,可以用来排查问题和恢复数据。
步骤302:根据日志系统中提取出的当天被曝光的日志文档和历史被曝光的日志文档,分别计算当天局部统计量和历史局部统计量;
其中,局部统计量包括Nj和Nj表示日志文档j被点击的总次数,表示日志文档j位于r+d处且没有被点击,位置r处的日志文档被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数,T表示所有(r,d)的可能取值。
步骤303:将当天局部统计量和历史局部统计量进行合并;
其中,还可以分别保存一段时间内的当天局部统计量和历史局部统计量,以支持增量更新和排查运行中可能出现的问题,以及恢复数据。
步骤304:根据日志系统中提取的当天被曝光的日志文档和历史被曝光的日志文档,分别计算当天全局统计量和历史全局统计量;
其中,全局统计量包括N
r,d和
N
r,d为在日志文档j所在的同一个点击序列中,位置r处的日志文档和位置r+d处的日志文档都被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数;
为在日志文档j所在的同一个点击序列中,位置r处的日志文档被点击,位置r+d处的日志文档没有被点击,位置r到r+d之间的日志文档没有被点击在所有情况下发生的次数,r的取值范围为小于或等于M-1的所有自然数,d的取值范围为小于或等于M-r的所有整数,M表示日志文档j所在的同一点击序列中所有日志文档的总数。
步骤305:将当天局部统计量和历史局部统计量进行合并;
其中,还可以分别保存一段时间内的当天全局统计量和历史全局统计量,以支持增量更新和排查运行中可能出现的问题,以及恢复数据。
步骤306:根据合并后的全局统计量,计算全局参数;
步骤307:根据全局参数对日志文档进行过滤,使全局参数小于对应的预设阈值的日志文档被过滤;
步骤308:计算过滤后的日志文档与查询请求的相关性的贝叶斯后验概率;
其中,计算日志文档与查询请求的相关性的贝叶斯后验概率的过程已经在实施例一中进行了详细地说明,故此处不再赘述,相关计算过程可以参见实施例一。
步骤309:根据贝叶斯后验概率计算过滤后的日志文档与查询请求的相关性的期望值;
其中,计算日志文档与查询请求的相关性的期望值的过程已经在实施例一中进行了详细地说明,故此处不再赘述,相关计算过程可以参见实施例一。
步骤310:根据日志文档与查询请求的相关性的期望值对日志文档进行过滤,使相关性的期望值等于预设预置的日志文档被过滤掉;
步骤311:将查询请求和日志文档的标识作为key,将所述日志文档与查询请求的相关性的期望值作为value存储在检索数据结构中;
其中,还可以对检索数据结构进行校验,得到通过校验的检索数据结构。
步骤312:当接收到用户提交的查询请求时,从所述检索数据结构中查询与所述用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值;
步骤313:按照期望值从大到小的顺序对查询到的日志文档进行排序。
本申请中的搜索结果的排序方法可以应用在搜索领域,如图4所示,其为本申请一种搜索排序系统的结构示意图。每天提取新的搜索日志,每天增量更新,输出相关性的索引数据,更新到搜索排序系统中,作为排序的一个重要因素。
另外,本申请中的搜索结果的排序方法还可以应用在排序的评价系统。例如,给定一个查询请求,通过本申请中的排序方法得到日志文档序列中的每个日志文档与查询请求的相关性分值,这种分值是用户对排序的一种隐式评价,可以归一化该相关性分值序列,形成一个概率分布函数p(x)。同时,用待评价的排序方法对同一个日志文档序列中的每个日志文档计算相关性分值并进行归一化,形成一个概率分布函数g(x)。将p(x)和g(x)的距离作为对待评价的排序方法的评估,差距越小,则待评价的排序方法的评价越高。距离计算公式可以为:
另外,本申请中的搜索结果的排序方法还可以应用在排序的训练系统。例如,通过本申请中的排序方法得到(查询,文档)对的相关性分值,用Y表示,然后抽取(查询,文档)对的特征,用X表示,如文本特征和图像特征。然后,用于机器学习方法训练得到相关性算法Y=f(X)。
由上述实施例可以看出,本申请基于贝叶斯后验概率计算日志文档与查询请求的相关性的期望值,当从检索数据结构中查询到与用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值后,按照期望值从大到小的顺序对日志文档进行排序,考虑到了信息的位置因素和点击顺序的因素,使用户快速获得最想要的信息。减少搜索过程对于搜索引擎服务器的消耗,并节省搜索引擎服务器的系统资源。
实施例三
与上述一种搜索结果的排序方法相对应,本申请实施例还提供了一种搜索结果的排序装置。请参阅图5,其为本申请一种搜索结果的排序装置的一个实施例的结构示意图,包括:提取模块501、概率计算模块502、期望值计算模块503、索引建立模块504、检索模块505和排序模块506。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
提取模块501,用于从日志系统中提取出被曝光的日志文档;
概率计算模块502,用于计算所述日志文档与查询请求的相关性的贝叶斯后验概率;
期望值计算模块503,用于根据所述贝叶斯后验概率计算所述日志文档与查询请求的相关性的期望值;
索引建立模块504,用于将查询请求和日志文档的标识作为键,将所述日志文档与查询请求的相关性的期望值作为值存储在检索数据结构中;
检索模块505,用于当接收到用户提交的查询请求时,从所述检索数据结构中查询与所述用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值;
排序模块506,用于按照期望值从大到小的顺序对查询到的日志文档进行排序。
优选的,请参阅图6,其为本申请一种搜索结果的排序装置的另一个实施例的结构示意图。除了包括有提取模块501、概率计算模块502、期望值计算模块503、索引建立模块504、检索模块505和排序模块506之外,所述装置还包括:第一过滤模块507,用于在根据所述贝叶斯后验概率计算日志文档与查询请求的相关性的期望值之前,根据全局参数对日志文档进行过滤,使全局参数小于对应的预设阈值的日志文档被过滤;
则期望值计算模块503,用于根据贝叶斯后验概率计算过滤后的日志文档与查询请求的相关性的期望值。
其中,第一过滤模块507进一步包括:筛选子模块5071和过滤子模块5072,
筛选子模块5071,用于从提取出的被曝光的日志文档中筛选出被曝光一次且没有被点击的日志文档;
过滤子模块5072,从筛选出的日志文档中,按照过滤条件公式
过滤掉全局参数小于对应的预设阈值的日志文档,其中,β
r,d为全局参数,
N
r,d为在被筛选出的日志文档所在的同一个点击序列中,位置r处的日志文档和位置r+d处的日志文档都被点击,位置r到r+d之间的日志文档没有被点击在所有情况下的发生次数;
为在被筛选出的日志文档所在的同一个点击序列中,位置r处的日志文档被点击,位置r+d处的日志文档没有被点击,位置r到r+d之间的日志文档没有被点击在所有情况下发生的次数;r的取值范围为小于或等于M-1的所有自然数,d的取值范围为小于或等于M-r的所有整数,M表示被筛选出的日志文档所在的同一点击序列中所有日志文档的总数,E
th为与相关性的期望值对应的预设阈值。
优选的,请参阅图7,其为本申请一种搜索结果的排序装置的另一个实施例的结构示意图。所述装置还包括:第二过滤模块508,用于在所述将查询请求和日志文档的标识作为key,将所述日志文档的期望值作为value存储在检索数据结构中之前,根据日志文档与查询请求的相关性的期望值或者方差对日志文档进行过滤,使期望值或者方差等于对应的预设阈值的日志文档被过滤,
则索引建立模块504,用于将查询请求和日志文档的标识作为key,将过滤后的日志文档的期望值作为value存储在检索数据结构中。
优选的,请参阅图8,其为本申请一种搜索结果的排序装置的另一个实施例的结构示意图。除了包括有提取模块501、概率计算模块502、期望值计算模块503、索引建立模块504、检索模块505和排序模块506之外,所述装置还包括:校验模块509,用于在所述将查询请求和日志文档的标识作为键,将所述日志文档与查询请求的相关性的期望值作为值存储在检索数据结构中之后,对所述检索数据结构进行校验,
则检索模块505,用于从通过校验的检索数据结构中查询与所述用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值。
由上述实施例可以看出,本申请基于贝叶斯后验概率计算日志文档与查询请求的相关性的期望值,当从检索数据结构中查询到与用户提交的查询请求相关的所有日志文档与查询请求的相关性的期望值后,按照期望值从大到小的顺序对日志文档进行排序,考虑到了信息的位置因素和点击顺序的因素,使用户快速获得最想要的信息。减少搜索过程对于搜索引擎服务器的消耗,并节省搜索引擎服务器的系统资源。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上对本申请所提供的一种搜索结果的排序方法和装置进行了详细介绍,本文中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。