搜索算法小知识:QP之类目识别
1.搜索引擎中有一套多级类目体系,通常包含数十个一级类目、数百个二级类目、甚至还有三级和四级类目。每篇文档、每条查询词可以属于一个或多个类目。例如查询词q =“冬季卫衣推荐”,一级类目是“时尚”,二级类目是“穿搭”。再例如 q =“狄仁杰”的一级类目是“影视娱乐”和“游戏”,二级类目是“电视”和“手游”,原因是狄仁杰即是电视剧中的人物形象,也是王者荣耀中的游戏角色,有的用户想搜电视剧,有的用户想搜王者荣耀游戏。在文档发布和更新时,系统会计算文档类目,将其作为文档特征存储。查询词的类目由 QP 模块在线计算,供下游的召回和排序使用。
2. 文档类目和查询词类目识别。有多种方法可以实现:a.基于多标签的分类;b.基于层次分类实现的分类;c.基于查询词类目识别的分类;
3.类目识别看做多标签的二分类问题,使用 micro F1 和 macro F1 作为评价指标。模型输出预测 p = [p1, · · · , pk],其中 pi 表示查询词(或文档)属于类目 i(比如美甲这个类目)的概率。设置一个阈值 τ,如果 pi > τ,则判定查询词(或文档)属于类目 i;一条查询词(或文档)可以同时属于多个类目。
4.文档和查询词共享同一个多级类目体系。一篇文档(或一条查询词)可以属于多个类目,且类目是多级的,因此类目识别属于多标签层次分类问题。多标签分类的基线模型以 BERT 为底座,输出层使用 sigmoid 激活函数。做训练时,使用 BCE 或 focal loss 作为损失函数。如果考虑到多级类目属于层次分类问题,可以进一步使用递归正则,将多级类目的信息用于训练。
5.文档的字数多、信息量大,类目识别相对容易。而查询词很短,类目识别很困难。因此,在预训练和微调中间,可以做后预训练,提升查询词类目识别的准确性。如果把类目识别看做多个二分类问题,可以用 micro F1 和 macro F1 作为离线评价指标。如果把类目识别看做排序问题,可以用 MAP 作为评价指标。