当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > 深度学习在携程搜索词义解析中的应用

深度学习在携程搜索词义解析中的应用

来源:51CTO.COM 2023-04-13 08:02:08 0浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《深度学习在携程搜索词义解析中的应用》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

作者简介

携程旅游研发部大数据与AI研发团队,为旅游事业部提供丰富的AI技术产品和技术能力。

一、背景介绍

搜索是电商最重要的门面之一,大部分用户通过搜索来找到他们想要的商品,因此搜索是用户表达意图最直接的方式,也是转化率最高的流量来源之一。绝大部分的电商搜索是通过搜索框输入搜索词(Query)来完成,因此,搜索词的词义解析和意图理解成为了搜索中的重要一环。

主流的搜索词义解析和Query理解需要经过纠错、同义词替换、分词、词性标注、实体识别、意图识别、词重要度权重、丢词等步骤。以旅游场景下的搜索举例,如图1所示,当用户在搜索框输入“云南香各里拉”作为Query的时候,首先搜索引擎需要对该搜索词进行纠错,这是为了便于后续步骤正确解析出用户想要搜索的内容;如果有必要,还会进行同义词替换。然后,对搜索词进行分词和词性标注,识别出“云南”是省,“香格里拉”是城市或者酒店品牌,紧接着会做实体识别,召回“云南”和“香格里拉”在后台数据库里对应的实体id。

这个时候,出现了一个分歧,“香格里拉”既可能是城市,又可能是酒店品牌。在用户进行搜索的时候,是否能够预测出正确的类别和实体,对于搜索结果的精准展示和提升用户体验有重要的意义。因此,我们必须识别出用户真正想要搜的是什么类别,并找到对应的实体,否则可能在搜索列表页前排会给出用户不想要的结果。从人的先验知识来看,用户搜索“云南香格里拉”,很大可能性是想要搜城市。意图识别步骤,就是为了实现这个功能,识别出用户真正的搜索意图是代表城市的“香格里拉”。

后续就可以进入搜索的召回步骤,召回主要负责的是把和搜索词意图相关的商品或内容找出来。前面的步骤获取了“云南”和“香格里拉”的id,就可以很方便的召回和“云南”和“香格里拉”都相关的商品或内容。但是,有些时候,召回的结果为空或者过于稀少,这个时候给用户的体验不好,因此,在召回的结果为空或者过于稀少的情况下,往往还需要丢词和二次召回的操作。此外,有些词属于可省略词,或者对搜索产生干扰的词,也可以通过丢词来处理。

所谓丢词,就是把搜索词中相对不重要或者联系不紧密的词丢掉,再次召回。那么该如何衡量每个词的重要程度或者紧密程度?这里就需要引入了Term Weighting的模块,把每个词视为term,通过算法或规则计算每个term的weight,每个term的weight直接决定了term重要度和紧密度的顺序。例如,假设“云南”的term weight是0.2,“香格里拉”的term weight是0.8,那么如果需要丢词,就应该先丢“云南”,保留“香格里拉”。

图片

图1 搜索词义解析和Query理解步骤

传统的搜索意图识别会采用词表匹配,类目概率统计,加上人为设定规则。传统的Term Weighting同样会采用词表匹配和统计方法,比如根据全量商品的标题和内容统计出词的TF-IDF、前后词互信息、左右邻熵等数据,直接存成词典和分值,提供给线上使用,再根据一些规则辅助判断,比如行业专有名词直接给出较高的term weight,助词直接给出较低的term weight。

但是,传统的搜索意图识别和Term Weighting算法无法达到很高的准确率和召回率,特别是无法处理一些较为罕见的搜索词,因此需要一些新的技术来提升这两个模块的准确率和召回率,以及提升对罕见搜索词的适应能力。此外,因为访问频率较高,搜索词义解析需要非常快的响应速度,在旅游搜索场景下,响应速度往往需要达到接近个位数的毫秒级,这对于算法来说是一个很大的挑战。

二、 问题分析

为了提高准确率和召回率,我们采用深度学习来改进搜索意图识别和Term Weighting算法。深度学习通过样本的学习,可以有效解决各种情况下的意图识别和Term Weighting。此外,针对自然语言处理的大规模预训练语言模型的引入,可以进一步强化深度学习模型的能力,减少样本的标注量,使得原本标注成本较高的深度学习在搜索上应用成为可能。

但是深度学习面临的问题是,由于模型的复杂度较高,神经网络层数较深,响应速度没法满足搜索的高要求。因此我们采用模型蒸馏和模型压缩来减少模型的复杂度,在略微降低准确率和召回率的情况下减少深度学习模型的耗时,以此保证较快的响应速度和较高的性能。

三、意图识别

类目识别是意图识别的主要组成部分。意图识别中的类目识别是搜索词query经过分词后,对分词结果打上所属类目并给出对应概率值的方法。解析用户的搜索词的意图有利于分析用户的直接搜索需求,从而辅助提升用户体验。例如用户在旅游页面搜索 “云南香格里拉”,获取到用户输入的“香格里拉”对应的类目是“城市”,而不是“酒店品牌”,引导后续检索策略偏向城市意图。

在旅游场景下,用户输入的类目存在歧义的搜索词占总量约11%,其中包含大量无分词的搜索词。“无分词”是指经过分词处理后无更细化的切分片段,“类目存在歧义”是指搜索词本身存在多种可能的类目。例如用户输入“香格里拉”,无更细化的切分片段,且对应类目数据中存在“城市”、“酒店品牌”等多个类目。

如果搜索词本身是多个词的组合,则可以通过搜索词自身上下文明确类目,优先会以搜索词本身作为识别目标。如果单从搜索词本身不能明确所属类目,我们会优先追加该用户不相同的最近历史搜索词,以及最近商品类目点击记录,若无上述信息则追加定位站,作为补充语料。原始搜索词经过处理获得待识别的Query R。

最近几年,预训练语言模型在很多自然语言处理任务中大放光彩。在类目识别中,我们利用预训练模型的训练网络参数,获取含上下文语义的字特征Outputbert;使用字词转换模块,字特征结合位置编码:

图片

获取到分词对应的字符片段,如:

图片

代表第i个分词对应的长度为li的字特征。基于字符片段Wi,字词转换模块聚合出每个词的特征Hwi。聚合手段可以是最大值池化max-pooling、最小值池化min-pooling、均值池化mean-pooling等方式,实验得到最大池化效果最佳。模块输出为搜索词R的词特征OutputR;通过并行分类器对搜索词的词特征OutputR中各个片段给出类目数据库中涵盖的匹配类目,并给出对应类目的匹配概率。

图片

图2 类目识别整体结构示意图

类目识别模型是基于BERT-base 12层模型,由于模型过大,不满足线上运行的响应速度要求,我们对模型进行了知识蒸馏(Knowledge Distillation),将网络从大网络转化成一个小网络,保留接近于大网络的性能的同时满足线上运行的延迟要求。

原先训练好的类目识别模型作为teacher网络,将teacher网络的输出结果 作为student网络的目标,训练student网络,使得student网络的结果p接近q ,因此,我们可以将损失函数写成:

图片

这里CE是交叉熵(Cross Entropy),symmetricalKL是对称KL散度(Kullback–Leibler divergence),y是真实标签的one-hot编码,q是teacher网络的输出结果,p是student网络的输出结果。

图片

图3 知识蒸馏示意图

经过知识蒸馏,类目识别最终仍然可以达到较高的准确率和召回率,同时可以做到整体响应时间的95线为5ms左右。

经过类目识别之后,还需要经过实体链接等步骤,完成最终的意图识别过程。具体内容可以参见​​《携程实体链接技术的探索及实践》​​一文,本文不再阐述。

四、 Term Weighting

对于用户输入的搜索词,不同的term对于用户的核心语义诉求有着不同的重要性。在搜索的二次召回排序中需要重点关注重要性高的term,同时在丢词的时候可以忽略重要性低的term。通过计算用户输入搜索词的各个term weight,来二次召回出最接近用户意图的产品,提升用户体验。

首先,我们需要寻找线上用户真实的反馈数据作为标注数据。用户在搜索框的输入和联想词点击情况一定程度上反映了用户对于搜索短语中词语的重视程度,因此我们选用联想词输入和点击数据,加以人工筛选和二次标注,作为Term Weighting模型的标注数据。

在数据预处理方面,我们所能获得的标注数据为短语及其对应的关键词,这里为了使权重的分配不过于极端,给定非关键词一定量小的权重,并将剩余权重分配给关键词的每个字上,如果某一短语在数据中出现了复数次,且对应的关键词不同,则会根据关键词的频率对这些关键词的权重进行分配,并进一步分配每个字的权重。

模型部分主要尝试BERT作为特征提取的方法,并进一步对每个term的权重进行拟合。对于给定的输入,将其转化为BERT所能接收的形式,将通过BERT后的张量再通过全连接层进行压缩,得到一维的向量后进行Softmax处理,并用该向量对结果的权重向量进行拟合,具体模型框架如下图所示:

图片

图4 Term Weighting模型框架

由于中文BERT基于字符,因此需要将每个term中的所有字的权重进行求和,从而最终得到term的权重。

在整个模型框架中,除去一些训练的超参数,能调整的部分主要包含两个部分:一是通过BERT产生Embedding时,可以选择BERT最后一层,或者综合BERT的第一层和最后一层的方式产生Embedding;二是在损失函数的选择上,除去使用MSE损失衡量预测权重与实际权重之间差距之外,也尝试使用非重要词的预测权重的和作为损失进行计算,但这种损失更适合只有单个关键词的情况使用。

模型最终是以小数的形式输出每个term weight,例如[“上海”、“的”、“迪士尼”]的term weight结果为[0.3433,0.1218,0.5349]。

该模型是为搜索服务的,有严格的响应速度要求。由于BERT模型整体比较大,在推理部分很难达到响应速度要求,因此类似于类目识别模型,我们对训练好的BERT模型进行进一步的蒸馏处理,以达到符合线上的要求。在此项目中,通过少数几层transformer去拟合BERT-base 12层transformer的效果,最后以损失可以接受的一部分性能的情况下,使得模型整体的推理速度快了10倍左右。最终,Term Weighting线上服务整体的95线可以达到2ms左右。

五、 未来与展望

采用深度学习后,旅游搜索对于较为罕见的长尾搜索词,词义解析能力有了较大的提升。在目前的线上真实搜索场景,深度学习方法一般选择与传统的搜索词义解析方法相结合,这样既可以保证头部常见搜索词的性能稳定,又可以加强泛化能力。

未来,搜索词义解析致力于给用户带来更好的搜索体验,随着硬件技术和AI技术的更新换代,高性能计算和智能计算越来越成熟,搜索词义解析的意图识别和Term Weighting未来会往更高性能的目标发展。此外,更大规模的预训练模型和旅游领域的预训练模型有助于进一步提升模型的准确率和召回率,更多用户信息和知识的引入有助于提升意图识别的效果,线上用户的反馈和模型迭代有助于提升Term Weighting的效果。这些都是我们后续会尝试的方向。

除了意图识别和Term Weighting之外,搜索的其他功能,比如词性标注、纠错等,在满足响应速度要求的前提下未来也可以采用深度学习技术,来实现更强大的功能和更优秀的效果。

理论要掌握,实操不能落!以上关于《深度学习在携程搜索词义解析中的应用》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

版本声明
本文转载于:51CTO.COM 如有侵犯,请联系study_golang@163.com删除
大脑分层预测让大模型更卷!大脑分层预测让大模型更卷!
上一篇
大脑分层预测让大模型更卷!
多模态再次统一!Meta发布自监督算法data2vec 2.0:训练效率最高提升16倍!
下一篇
多模态再次统一!Meta发布自监督算法data2vec 2.0:训练效率最高提升16倍!
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 可图AI图片生成:快手可灵AI2.0引领图像创作新时代
    可图AI图片生成
    探索快手旗下可灵AI2.0发布的可图AI2.0图像生成大模型,体验从文本生成图像、图像编辑到风格转绘的全链路创作。了解其技术突破、功能创新及在广告、影视、非遗等领域的应用,领先于Midjourney、DALL-E等竞品。
    10次使用
  • MeowTalk喵说:AI猫咪语言翻译,增进人猫情感交流
    MeowTalk喵说
    MeowTalk喵说是一款由Akvelon公司开发的AI应用,通过分析猫咪的叫声,帮助主人理解猫咪的需求和情感。支持iOS和Android平台,提供个性化翻译、情感互动、趣味对话等功能,增进人猫之间的情感联系。
    11次使用
  • SEO标题Traini:全球首创宠物AI技术,提升宠物健康与行为解读
    Traini
    SEO摘要Traini是一家专注于宠物健康教育的创新科技公司,利用先进的人工智能技术,提供宠物行为解读、个性化训练计划、在线课程、医疗辅助和个性化服务推荐等多功能服务。通过PEBI系统,Traini能够精准识别宠物狗的12种情绪状态,推动宠物与人类的智能互动,提升宠物生活质量。
    10次使用
  • 可图AI 2.0:快手旗下新一代图像生成大模型,专业创作者与普通用户的多模态创作引擎
    可图AI 2.0图片生成
    可图AI 2.0 是快手旗下的新一代图像生成大模型,支持文本生成图像、图像编辑、风格转绘等全链路创作需求。凭借DiT架构和MVL交互体系,提升了复杂语义理解和多模态交互能力,适用于广告、影视、非遗等领域,助力创作者高效创作。
    15次使用
  • 毕业宝AIGC检测:AI生成内容检测工具,助力学术诚信
    毕业宝AIGC检测
    毕业宝AIGC检测是“毕业宝”平台的AI生成内容检测工具,专为学术场景设计,帮助用户初步判断文本的原创性和AI参与度。通过与知网、维普数据库联动,提供全面检测结果,适用于学生、研究者、教育工作者及内容创作者。
    27次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码