当前位置: 首页 > 科技观察

DSSM文本匹配模型在苏宁商品语义召回中的应用

时间:2023-03-19 10:15:40 科技观察

【.com原稿】1.后台文本匹配是自然语言处理中的一个核心问题,它不同于MT、MRC、QA等端到端类型的任务,一般以文本相似度计算的形式,在应用系统中起到核心支撑作用。可应用于各种类型的自然语言处理任务,如信息检索、搜索引擎、问答系统、信息流推荐、释义题、知识检索、机器翻译等。之所以文本匹配的应用范围范围如此之广,以至于很多NLP任务本质上都可以抽象为一个文本匹配问题。例如,释义问题可以简化为两个同义句的匹配,信息检索是搜索词和文档资源。问答系统的核心问题是将用户输入的问题与最佳候选答案进行匹配,而对话系统则可以归结为对话的前一句与回复的下一句的匹配。本文主要介绍DSSM文本匹配模型在苏宁商品语义召回中的应用。当苏宁易购的主搜索系统对某些未知词或用户搜索词语义不明确甚至拼写错误返回结果不佳时,建议使用文本匹配模型进行语义召回。如下图,用户在蒸笼中漏掉了挂词,后来输入了具有一定干扰作用的特定模型词,导致没有返回结果。Scolib品牌的耳机在苏宁没有销售,所以scolib这个英文单词是生词。图1:未知、错别字、少字符等搜索结果展示从以上两种情况可以看出召回效果较差,虽然基于文本相似度的召回策略在大多数情况下可以保证较高的准确率,但是上面提到的特殊情况无法解决。因此,非常有必要使用语义模型来获取与用户查询在语义上相似的产品。深度文本匹配可以概括为四种类型:1.单一语义模型2.多语义模型3.匹配矩阵模型4.深度句子模型。其中,单一语义模型使用全连接、CNN、RNN或其他特征提取器获取两个句子的深层语义向量,然后计算两者之间的匹配度;多语义模型从多粒度的角度解释句子,同时考虑句子的内部语义。局部结构;匹配矩阵模型直接捕获匹配信号,将词与词之间的匹配信号作为灰度图,再利用深度网络提取特征,更精细地处理句子中的连接;深度句间模型使用更精细的结构来挖掘句子中不同单词之间以及句子之间的联系以获得更好的结果5。近年来,与文本匹配相关的论文层出不穷,句子结构的处理也越来越精细,模型的复杂度也迅速上升6。虽然论文中的实验SOTA效果不断刷新,但是完整的训练步骤,甚至单个预测所需的时间都非常长。在线生产环境中,用户体验是重中之重,需要快速、可靠、准确的文本匹配策略7。同时,苏宁拥有大量每日更新的query-docpair文本语料库。query是用户的搜索词,doc是系统返回的商品标题。如果想在硬件资源有限的情况下,在可容忍的训练调试时间范围内训练出主站所有商品类别的亿级语料,需要一个不大的可调参数规模,以及千万级别的语义向量待召回的商品集合的数量可以离线提前计算,模型效果可以随着语料库规模的增大而提升。综上所述,我们选择LSTM-DSSM模型作为商品语义召回系统的核心。2.LSTM-DSSM模型2.1模型输入在产品语义召回业务中,要匹配的DOC是产品标题,标题中难免会包含GTX2060等模型词。如果输入是按词处理的,模型会被强制学习2、0、6、0这四个数字,是一个固定的组合。适合短文本,但有些电子产品的示范词可以长达十位数字加字母。而真正的核心中文词可能只有几个短字,干扰效果非常严重。而且,对于包含几十个单词的长标题,需要同样长度的LSTM来进行特征提取,导致参数过多,增加了模型学习的成本。综上所述,这个模型放弃了单词token作为输入,而是使用了单词token。我们参考迁移学习的思想,不是简单的随机初始化词token的embedding向量,而是使用亿级苏宁商品Title作为语料,首先使用HanLPtokenizer进行分词。对分词得到的单词token进行编码,以生成后续模型需要的词典。并在spark平台上,使用其提供的word2vec模型接口,训练wordtoken语料库。这样就可以得到每个单词token的语义向量,作为模型的输入。考虑到每个词的词典和语义向量的生成是一劳永逸的工作,通常不需要改变,所以使用了非常大规模的语料库。spark环境搭建了300台机器,训练时间接近8小时。最后的效果还是很满意的。2.2模型架构产品语义召回系统中使用的DSSM在下图所示的基本模型的基础上,增加了两个针对业务效果的改进。图2:DSSM基本模型示意图首先,产品的品牌和品类是匹配产品召回具体业务场景的非常重要的特征。如果能够搭配正确的品类和品牌,最终的效果肯定不会差。因此,为了直接利用这些特征,采用了一种非常直接的方法,如下图所示:图3:频率偏移和类别特征的使用示意图从上图可以看出,品牌和category通过Embedding表示学习层和二层MLP直接映射成与LSTM提取的语义向量同维的向量,然后将两者相加得到最终的语义向量表示。二是引入attention机制,目的是解决洗衣机退回洗衣机配件较多的情况,增加核心词洗衣机的权重,可以大大提高召回效果。具体使用方法如下图8所示:图4:attention机制的使用示意图从上面两张图可以看出,有两种方法参考了经典的multiplicativeattentionmechanism。第一种是使用query的最后一个LSTM单元输出的隐层向量作为上下文,与doc中的每一个不同的是计算时间步长的隐层向量的点积,并将计算结果作为权重。每个时间步长的向量乘以权重并相加就是最终的语义向量。二是获取查询每个时间步的权重,然后获取查询的最终语义向量,并联或者添加到doc的最终单元的输出中,作为最终语义向量产品。2.3模型输出模型的输出作为语义召回系统的输入,主要包括两个方面。第一个是实时生成搜索词查询的语义向量的模块。具体做法要考虑到实际业务场景中一次只输入一个查询,修改模型输入接口和具体处理方式,读取训练好的模型参数,保存为需要的pb格式模型tf-serving服务框架。其次,离线生成待召回产品的语义向量集。由于注意力机制的使用,查询也需要参与产品语义向量的生成。召回集接近百万级规模,方便复用训练模型,一次生成batch_size个语义向量,将所有范数转化为平方和为1的向量,存入内存.等到下一个batch_size产生的时候,直接拼接起来就可以了。所有产品的语义向量都存储在内存中,以numpy向量的形式存储,最后以npy文件的形式存储在硬盘中,大小约为500M,空间成本可以接受。3、语义召回系统简介3.1数据准备利用苏宁完整的数据仓库环境,每天固定时间执行HIVE脚本,获取用户搜索词、对应的商品Title、代码、品牌类别、质量评级等字段信息。语料库根据搜索词条数和商品质量进行排序,选取优质的作为语料库,并从友商平台抓取商品信息作为补充。同时在spark平台上对初始语料进行处理,包括分词、去除无意义词、中英文分开处理等??预处理步骤。最后,将处理后的语料转化为一个positiveDOC和四个negativeDOC,可以直接应用于模型训练的形式。此外,还需要对召回语料库进行去重,避免同一产品被召回。最后,为召回系统提供待召回的产品名称集以及准确对应的产品ID和产品质量多样性。3.2在线匹配从上面可以看出,模型将准备好的待召回产品标题集处理成一个npy文件,存储在磁盘中。另外输出tf-serving服务框架需要的pb格式模型,可以将用户搜索词实时转化为语义向量。接下来要做的就是计算查询向量与所有商品语义向量的成对余弦距离,返回TopN,找到对应的商品ID,提供给前台展示。需要注意的是,这里寻找TopN的过程需要做到“快、准、狠”。我们使用Facebook的开源Faiss框架。为了保证准确性,我们不使用任何内置的高级索引功能,只使用最简单的暴力计算。他们之间的距离一定会找到正确的结果。通过测试,在百万级数据规模上,维度为256,使用暴力检索耗时不到1ms,完全可以接受。另外,考虑到业务目标,增加优质item的权重,简单来说就是用质量分数乘以余弦距离,人为增加优质item与搜索词的余弦距离。3.3系统环境整个语义召回系统的系统环境组成比较清晰,包括Spark平台上的大规模数据处理,jupyter深度学习平台上的模型训练和语义向量生成,Linux主机上的Faiss匹配到找到TopN流程,tf-serving在线服务器的布局,以及方便结果调试的前端匹配结果展示,如下图所示:图5:召回系统前端展示可以方便的传入各种参数,比如返回商品的数量、使用模型、版本、使用的索引类型等,非常方便调试。4.小结本文介绍了DSSM文本匹配模型在苏宁产品语义召回中的应用,主要包括算法原理和工程实践两个方面。苏宁搜索团队在搜索匹配、个性化推荐、知识图谱、智能对话等自然语言处理领域有很多尝试和实践。限于篇幅,本文不作介绍。欢迎读者关注后续最新文章分享。参考文献HuangPS,HeX,GaoJ,etal.使用点击数据学习网络搜索的深度结构化语义模型[C]//ACM信息与知识管理国际会议。美国计算机学会,2013:2333-2338。沉,叶龙,等。“用于信息检索的具有卷积池结构的潜在语义模型。”第23届ACM国际会议信息和知识管理会议论文集。ACM,2014年。Palangi、Hamid等。“用于信息检索的具有长短期记忆的语义建模。”arXiv预印本arXiv:1412.6629(2014)。http://ju.outofmemory.cn/entry/316660http://blog.csdn.net/u013074302/article/details/76422551博客园DSSM算法-计算文档相似度Gers,FelixA.,Schmidhuber,Jrgen,and康明斯,弗雷德。学会遗忘:使用lstm进行持续预测。神经计算,12:2451–2471,1999.Gers,FelixA.,Schraudolph,NicolN.,andSchmidhuber,J¨urgen.使用lstm递归网络学习精确计时。J.马赫。学习。Res.,3:115–143,March2003.作者简介从事自然语言处理、个性化推荐、搜索匹配等领域的研发工作,具有丰富的传统机器学习和深度学习实践经验设计与核心技术策划等方面的工作,在搜索领域有多年实战经验,从0到1搭建苏宁易购搜索平台,在搜索领域工作7年多,精通搜索架构设计和性能优化在学习、大数据等领域有丰富的搜索场景应用经验。孙鹏飞,苏宁科技集团消费者平台研发中心搜索算法组组长,专注于自然语言处理、搜索排名、智能问答等领域的研究。带领团队从零开始构建搜索排名系统、个性化系统、智能搜索系统、防作弊系统。具有丰富的产品算法优化和工程应用实践经验。【原创稿件,合作网站转载请注明原作者和出处为.com】