本申请涉及机器学习技术领域,尤其涉及一种名单查询方法及装置。
背景技术:
名单查询系统是指用户输入查询,该系统将存储在数据库中所有与输入查询相关的数据检索出来,根据输入查询与查询结果的相关度进行倒序排序,将最相关的查询结果排在最前面。
当前名单查询系统普遍采用的是基于规则的方式,即通过字符串匹配的方法进行检索查询结果。这种传统的检索系统通常会涉及到很多排序规则,而基于规则形成的特征环境只适用于特定的范围。随着数据量的不断增加,使用人工的方式做规则的组合,会变得越来越困难。
申请内容
为解决上述技术问题,本申请实施例提供了一种名单查询方法及装置。
本申请实施例提供的名单查询方法,包括:
基于用户输入的查询获取至少一条查询结果;
针对所述至少一条查询结果中的每条查询结果,计算所述查询和所述查询结果之间的特征数据;
加载排序模型,并基于所述特征数据计算每条查询结果的评分值;
对所述每条查询结果的评分值进行倒序排序,并选择前n个查询结果进行展示,n为正整数。
本申请实施例中,所述方法还包括:
从数据库中导出作为样本的查询和该查询对应的至少一条查询结果;
标注出所述查询与每条查询结果的相关程度;
针对所述每条查询结果,计算所述查询和所述查询结果之间的特征数据;
基于所述特征数据,对排序模型进行训练。
本申请实施例中,所述计算所述输入查询和所述查询结果之间的特征数据,包括:
对所述查询和所述查询结果进行数据预处理;
基于预处理后的数据,计算所述查询和所述查询结果之间的特征数据;
对所述特征数据进行格式化处理,得到格式化的特征数据。
本申请实施例中,所述特征数据包括:
第一特征值,所述第一特征值表示所述查询与所述查询结果的相同单词个数;
第二特征值,所述第二特征值表示所述查询与所述查询结果的相同单词个数的占比;
第三特征值,所述第三特征值表示所述查询与所述查询结果的相同单词的长度之和;
第四特征值,所述第四特征值表示所述查询与所述查询结果的基于n-gram距离的相似度;
第五特征值,所述第五特征值表示所述查询与所述查询结果的基于jaro–winkler距离的相似度;
第六特征值,所述第六特征值表示所述查询与所述查询结果的最长公共子串的长度;
第七特征值,所述第七特征值表示所述查询与所述查询结果的余弦相似度。
本申请实施例中,所述选择前n个查询结果进行展示,包括:
选择前n个查询结果后,从数据库中索引出所述n个查询结果对应的详情页数据,并对所述n个查询结果对应的详情页数据进行展示。
本申请实施例提供的名单查询装置,包括:
搜索单元,用于基于用户输入的查询获取至少一条查询结果;
特征提取单元,用于针对所述至少一条查询结果中的每条查询结果,计算所述查询和所述查询结果之间的特征数据;
评分单元,用于加载排序模型,并基于所述特征数据计算每条查询结果的评分值;
排序单元,用于对所述每条查询结果的评分值进行倒序排序,选择前n个查询结果进行展示,n为正整数。
本申请实施例中,所述装置还包括:
获取数据单元,用于从数据库中导出作为样本的查询和该查询对应的至少一条查询结果;
标注单元,用于标注出所述查询与每条查询结果的相关程度;
所述特征提取单元,用于针对所述每条查询结果,计算所述查询和所述查询结果之间的特征数据;
训练单元,用于基于所述特征数据,对排序模型进行训练。
本申请实施例中,所述特征提取单元,用于:
对所述查询和所述查询结果进行数据预处理;
基于预处理后的数据,计算所述查询和所述查询结果之间的特征数据;
对所述特征数据进行格式化处理,得到格式化的特征数据。
本申请实施例中,所述特征数据包括:
第一特征值,所述第一特征值表示所述查询与所述查询结果的相同单词个数;
第二特征值,所述第二特征值表示所述查询与所述查询结果的相同单词个数的占比;
第三特征值,所述第三特征值表示所述查询与所述查询结果的相同单词的长度之和;
第四特征值,所述第四特征值表示所述查询与所述查询结果的基于n-gram距离的相似度;
第五特征值,所述第五特征值表示所述查询与所述查询结果的基于jaro–winkler距离的相似度;
第六特征值,所述第六特征值表示所述查询与所述查询结果的最长公共子串的长度;
第七特征值,所述第七特征值表示所述查询与所述查询结果的余弦相似度。
本申请实施例中,所述排序单元,还用于选择前n个查询结果后,从数据库中索引出所述n个查询结果对应的详情页数据,并对所述n个查询结果对应的详情页数据进行展示。
本申请实施例的技术方案,实现了对用户输入的查询经solr搜索得到的查询结果进行智能排序,在数据量大、排序环境复杂的情况下,能够有效得到精确的排序结果。
附图说明
图1为本申请实施例提供的字符最大距离的示意图;
图2为本申请实施例提供的名单查询方法的流程示意图一;
图3为本申请实施例提供的名单查询方法的流程示意图二;
图4为本申请实施例提供的特征分析图;
图5为本申请实施例提供的名单查询装置的结构组成示意图;
图6为本申请实施例提供的名单查询系统总体结构图。
具体实施方式
将机器学习方法引入检索系统中,建立数学模型,机器自身学习用户输入与查询结果之间的特征,对搜索结果进行排序,这样能够解决数据量大、排序环境复杂的问题,效果优于基于规则的检索系统。在排序问题中使用的机器学习算法,称为机器学习排序(ltr,learningtorank)算法。
ltr机器学习排序算法通常有三种手段,ltr通常有三种手段,分别是:pointwise、pairwise和listwise。pointwise和pairwise类型的ltr算法,将排序问题转化为回归、分类或者有序分类问题。listwise类型的ltr算法则另辟蹊径,将用户查询所得的结果列表作为整体,用作训练用的实例,对结果列表作整体排序。
在ltr算法中,特征的构建和特征的选择直接决定排序算法模型的效果。从用户查询和查询结果数据中挖掘出具有物理意义的特征,通过分析生成的决策树模型,得到不同的特征在模型中的重要程度分布,进行特征选择。
为便于理解本申请实施例的技术方案,以下对本申请实施例涉及到的相关概念进行说明,需要说明的是,以下概念均属于本申请实施例的保护范围。
1)lambda的物理意义:在lambdamart算法模型原理中,lambda的符号(正或者负)表示每条queryresult在序列中的排名上升或下降,其数值表示上升或下降的程度,直接用来求解排序问题;另外,lambda可以将ndcg之类的不可求导的排序指标转换为可导的损失函数。
2)特征工程
注:在名单查询系统中,用户输入查询和某条查询结果对应这里的字符串s1和s2。
3)lambdamart参数
表4:lambdamart参数
图2为本申请实施例提供的名单查询方法的流程示意图,如图2所示,所述名单查询方法包括以下步骤:
步骤201:基于用户输入的查询获取至少一条查询结果。
本申请实施例中,用户输入的查询经solr搜索得到至少一条查询结果。
步骤202:针对所述至少一条查询结果中的每条查询结果,计算所述查询和所述查询结果之间的特征数据。
本申请实施例中,对所述查询和所述查询结果进行数据预处理;基于预处理后的数据,计算所述查询和所述查询结果之间的特征数据;对所述特征数据进行格式化处理,得到格式化的特征数据。
本申请实施例中,所述特征数据包括:
第一特征值,所述第一特征值表示所述查询与所述查询结果的相同单词个数;
第二特征值,所述第二特征值表示所述查询与所述查询结果的相同单词个数的占比;
第三特征值,所述第三特征值表示所述查询与所述查询结果的相同单词的长度之和;
第四特征值,所述第四特征值表示所述查询与所述查询结果的基于n-gram距离的相似度;
第五特征值,所述第五特征值表示所述查询与所述查询结果的基于jaro–winkler距离的相似度;
第六特征值,所述第六特征值表示所述查询与所述查询结果的最长公共子串的长度;
第七特征值,所述第七特征值表示所述查询与所述查询结果的余弦相似度。
本申请实施例中的上述7个特征值的可以参照前述2)特征计算中的描述进行理解,此处不再赘述。
步骤203:加载排序模型,并基于所述特征数据计算每条查询结果的评分值。
本申请实施例中,在步骤201之前,需要训练排序模型。具体地,从数据库中导出作为样本的查询和该查询对应的至少一条查询结果;标注出所述查询与每条查询结果的相关程度;针对所述每条查询结果,计算所述查询和所述查询结果之间的特征数据;基于所述特征数据,对排序模型进行训练。
需要说明的是,这里的数据库是指postgre数据库。
需要说明的是,这里特征数据的计算方法可以前述步骤302,同样也包括7个特征值。
步骤204:对所述每条查询结果的评分值进行倒序排序,并选择前n个查询结果进行展示,n为正整数。
本申请实施例中,选择前n个查询结果后,从数据库中索引出所述n个查询结果对应的详情页数据,并对所述n个查询结果对应的详情页数据进行展示。
以下结合图3对本申请实施例的技术方案进行详细说明。本申请实施例的名单查询系统包括离线学习系统和在线学习系统。
本申请实施例中,将查询结果标注为0、1、2、3,分别表示query与queryresult的相似程度:不相似、弱相似、近似相同、相同。在离线学习系统中,根据query和queryresult之间的相似程度,建立人工标注数据的规范,如query与queryresult的姓和名颠倒,标注为相同;query与queryresult相差了一个姓或名等,标注为近似相同。建立完善的标注数据的规范,有助于模型精度的提升。
本检索系统采用属于listwise类型的lambdamart算法,它在原理上与gbdt(gradientboostingdecisontree,梯度提升决策树)算法相似。在数据标注和特征选择之后,设置模型参数,如学习率、叶节点个数、树的个数等(具体参数见附录2:lambdamart参数),进行模型训练。在训练一颗决策回归树时,首先遍历所有的特征,计算每个特征作为分裂节点时的均方差(cost),最终选择所有可能分裂中最小的cost的那个特征作为分裂节点。同时,将分裂的样本存储到左右子节点中,分别再对左右子节点进行分裂,直到分裂次数达到参数设定,这样就训练出一个回归树,将所有的回归树叠加,训练出lambdamart排序算法模型文件,该模型文件能够计算出每个queryresult的ndcg值。
当在线排序时,用户输入query,对solr搜索返回的queryresults进行特征抽取,生成测试特征数据,加载训练好的排序模型文件,将测试特征数据喂给模型,得到每个queryresult的ndcg得分,按照降序排序,将前100条结果展示在用户面前。
图5为本申请实施例提供的名单查询装置的结构组成示意图,如图5所示,所述装置包括:
搜索单元501,用于基于用户输入的查询获取至少一条查询结果;
特征提取单元502,用于针对所述至少一条查询结果中的每条查询结果,计算所述查询和所述查询结果之间的特征数据;
评分单元503,用于加载排序模型,并基于所述特征数据计算每条查询结果的评分值;
排序单元504,用于对所述每条查询结果的评分值进行倒序排序,选择前n个查询结果进行展示,n为正整数。
在一实施方式中,所述装置还包括:
获取数据单元(图中未示出),用于从数据库中导出作为样本的查询和该查询对应的至少一条查询结果;
标注单元(图中未示出),用于标注出所述查询与每条查询结果的相关程度;
所述特征提取单元502,用于针对所述每条查询结果,计算所述查询和所述查询结果之间的特征数据;
训练单元(图中未示出),用于基于所述特征数据,对排序模型进行训练。
在一实施方式中,所述特征提取单元502,用于:
对所述查询和所述查询结果进行数据预处理;
基于预处理后的数据,计算所述查询和所述查询结果之间的特征数据;
对所述特征数据进行格式化处理,得到格式化的特征数据。
在一实施方式中,所述特征数据包括:
第一特征值,所述第一特征值表示所述查询与所述查询结果的相同单词个数;
第二特征值,所述第二特征值表示所述查询与所述查询结果的相同单词个数的占比;
第三特征值,所述第三特征值表示所述查询与所述查询结果的相同单词的长度之和;
第四特征值,所述第四特征值表示所述查询与所述查询结果的基于n-gram距离的相似度;
第五特征值,所述第五特征值表示所述查询与所述查询结果的基于jaro–winkler距离的相似度;
第六特征值,所述第六特征值表示所述查询与所述查询结果的最长公共子串的长度;
第七特征值,所述第七特征值表示所述查询与所述查询结果的余弦相似度。
在一实施方式中,所述排序单元504,还用于选择前n个查询结果后,从数据库中索引出所述n个查询结果对应的详情页数据,并对所述n个查询结果对应的详情页数据进行展示。
本领域技术人员应当理解,图5所示的名单查询装置中的各单元的实现功能可参照前述名单查询方法的相关描述而理解。图5所示的名单查询装置中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
图6为本申请实施例提供的名单查询系统总体结构图,如图6所示,所述名单查询系统包括:数据层、核心层、应用层;其中,应用层用于获取用户输入查询、将名单检索系统返回结果展现给用户;数据层是系统的基础,采用基于lucene的java搜索引擎服务器solr获取用户输入查询结果,采用postgre数据库存储该查询结果;核心层对用户输入查询和其查询结果进行数据处理,生成特征数据文件,加载离线学习系统下训练出的模型文件,计算每个查询结果的ndcg值,并按照ndcg值倒序排序。
以下对本申请实施例的特征工程进行详细描述。
在建立排序模型之前,需要人工构建用户输入查询与查询结果之间的特征数据,也就是query与queryresults之间的相似度,在根本上,就是两个短字符串之间的相似度。
研究query与queryresults的特点,从原始训练数据中挖掘与短字符串相似度有关的特征。在系统数据处理模块中,将所有英文字符转换成小写,而对于中文query,作两方面的处理:
1,使用工具包pinyin4j转换成英文拼音;
2,不作处理直接用于相似度计算。
此外,还需要构造专门的停用词,query和queryresults进行停用词过滤,仅计算有效部分的相似度。
数据处理后,需要构建特征,分析query和queryresults之间的字符串长度、以空格分词后相同单词的个数、以及相同单词个数的占比,建立与之相关的特征;在计算短字符串相似度时,一种有效的方法是基于编辑距离的相似度(编辑距离是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,该操作包含替换、删除、插入,编辑距离越小,字符串之间的相似度越高),本系统采用基于jarodistance的相似度和基于n-gramdistance的相似度构建特征。现在举例说明基于n-gramdistance的相似度特征计算过程。
假如query是benyoussefhamdi,其中某一个queryresult是samiabenyoussefbensliman,在名单检索中,类似于短文本相似度的计算,经过实验验证,当n取3时效果较好。将query和queryresult分割至字符级别颗粒度,如下:
g3(query)=['ben','en','ny','yo','you','ous','uss','sse','sef','ef','fh','ha','ham','amd','mdi'],其子字符串的个数|g3(query)|=15;
g3(queryresult)=['sam','ami','mia','ia','ab','be','ben','en','ny','yo','you','ous','uss','sse','sef','ef','fb','be','ben','en','ns','sl','sli','lim','ima','man'],其子字符串的个数g3(queryresult)=26;
g3(query)∩g3(queryresult)=['ben','en','ny','yo','you','ous','uss','sse','sef','ef'],其相同子字符串的个数g3(query)∩g3(queryresult)=10;
那么,根据n-gram相似度计算公式得到,benyoussefhamdi和samiabenyoussefbensliman的相似度为:
此外,还根据最长公共子串(longestcommonsubstring)和字符串之间的余弦相似度,建立特征,本系统所建立的特征列表及其解释见附录1:特征工程。
在进行特征抽取时,剔除不相关或者冗余的特征,以减少模型训练时间,提高模型的精度,一般依靠统计学方法或者机器学习模型本身的特征选择功能实现降维,而lambdamart模型恰恰具备自动特征选择功能。具体操作方法如下:根据构建的特征计算生成特征数据,喂给ltr排序模型lambdamart,经过多轮训练生成决策树模型文件,而决策树以某个特征作为分裂节点,往往能够说明该特征在那一时刻是重要特征,因而统计排序模型文件中决策树以某个特征分裂的特征个数,确定特征的重要程度分布,如图4所示。由重要特征分布,将特征编号为2的特征剔除,该特征分布结合计算出的query和queryresults之间的特征值决定每条queryresult的排序结果。
本申请实施例的技术方案,不仅支持中名单检索,还支持英文名单检索。
本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。