作者|谢朋峻 阿里巴巴达摩院

整理|DataFunTalk

大家好,这里是NewBeeNLP。本文将分享行业搜索的相关技术和应用,主要包括三大部分:

  • 行业搜索的背景

  • 相关技术研究

  • 行业搜索应用


01

行业搜索的背景

1. 达摩院自然语言智能大图

上图是达摩院自然语言处理智能的技术框图,从下到上包含:

  • NLP 数据、NLP 基础的词法、句法语义,分析的技术,以及上层 NLP 技术

  • 行业应用:达摩院除了做基础研究之外,还赋能阿里集团,以及结合阿里云去赋能行业产业。赋能的很多行业场景都是搜索。

2. 行业搜索本质

面向产业和消费互联网的搜索本质都是一样的:用户有信息获取需求,同时有信息资源库,通过搜索引擎把两者桥接起来。

以电商场景来举例说明。比如用户在电商里面搜索 aj1 北卡蓝新款球鞋。为了更好地理解这样一个用户的 query,需要进行一系列任务:

  • 查询理解的分析:NLP 纠错、分词类目预测、实体识别词权重、 query 改写等技术

  • (离线)文档分析:NLP分析,质量效率的分析

  • 检索排序:通过对 query 的分析以及文档的分析,来结合搜索引擎本身一些检索排序的机制,就能实现把两者桥接的目标。

3. 行业搜索链路

如果按搜索的范式来分,一般分为 sparse retrieval 及 dense retrieval。

  • sparse retrieval:传统的基于字或基于词去建立倒排索引,同时基于此去构建很多查询理解的一系列的能力,包括一些文本相关性排序等;

  • dense retrieval:随着预训练语言模型的兴起,基于预训练底座来实现单塔、双塔模型,再结合向量引擎建立搜索机制。

一般将搜索做这样一个链路性的划分:召回、排序(粗排、精排、重排)。

召回阶段:

  • 传统 sparse retrieval 的关键词召回

  • dense retrieval 向量召回,个性化召回

  • 粗排阶段:使用文本相关性(静态)分数来做过滤

  • 精排阶段:相对复杂,会有相关性的模型,可能结合业务的效率模型(LTR)

从左到右,模型复杂度、效果精度变高。从右到左,处理 Doc 数变多。以淘宝电商为例,比如召回(几十亿),初排(几十万),到精排(几百、上千),到重排(几十)量级。

搜索生产链路是检索效果跟工程效率 trade-off 的系统。随着算力的增长,复杂模型开始往前置换。比如说精排的模型,现在慢慢会下沉到粗排、甚至召回这个阶段。

搜索效果评估:

  • 召回:recall 或无结果率

  • 排序:相关性、转化效率(贴近业务)

  • 相关性:NDCG、MRR

  • 转化效率:点击率、转化率

4. 消费互联网和产业互联网的搜索

搜索在不同行业场景里区别是很大的,在此把它分为消费互联网搜索与产业互联网搜索

  • 用户群体和 UV:消费互联网搜索 UV 非常大,产业互联网面向政企内部的员工;

  • 搜索追求指标:消费互联网,除了追求搜得到、搜得准之外,还追求转化率高。在产业互联网,它更多是信息匹配的需求,所以关注召回跟相关性;

  • 工程系统要求:消费互联网 QPS 的要求会很高,沉淀大量的用户行为,需要有实时日志分析、实时模型训练。产业互联网的要求会低一些;

  • 算法方向:消费互联网会从 offline、nearline、online 的海量用户行为分析建模获得更大收益。产业互联网的用户行为稀疏,所以会更注重内容理解,比如 NLP 或者视觉的理解,研究方向包括 low resource、transfer learning。

02

相关技术研究

搜索是跟系统框架紧密耦合的:包括离线数据,搜索服务框架(绿色部分),搜索技术算法体系(蓝色部分),其底座是 Alicemind 预训练语言模型体系,同样会汇聚做文档分析、query 理解、相关性等。

1. AliceMind 体系

AliceMind 是达摩院构建的层次化预训练语言模型体系。包含了通用预训练模型,多语言、多模态、对话等,是 NLP 所有任务的底座。

2. 分词

搜索的分词(原子能力),决定了检索索引粒度,同时也与后续相关性、BM25 粒度有关。针对 task specific 任务,如果去定制一些预训练,能比通用的预训练效果更好。比如最近研究希望在原生 BERT 预训练任务上增加无监督的统计信息的任务,比如统计字词、Gram 粒度、或者边界熵,然后以 mse-loss 增加到预训练。在 CWS/POS、NER上(右图),的诸多任务都达到 SOTA。

另一个研究是跨领域。每次需要标数据、构建监督任务的成本很高,所以需构建跨领域无监督分词的机制。右下角的表格为例,电商分词相比开源的分词质量有明显改善,这套方法也发布到 ACL2020。

3. 命名实体识别

搜索命名实体识别主要是对 query 、Doc 进行结构化的理解,识别出关键短语及类型。同时搜索知识图谱的构建也依赖 NER 功能。

搜索 NER 也面临一些挑战。主要是比如 query 常常是比较短的,上下文不足。比如说电商里面 query 实体的歧义性很高,知识性很强。所以这几年在 NER 核心的优化思路,就是通过上下文或者引入知识的方式来增强 NER 的表征。

在 2020年、2021年做了隐式增强的工作 combo embedding。把已有 word extractor 或者 GLUE 的表征动态融合,能搭载在很多业务任务上面达到 SOTA。

2021年,研发基于显式的检索增强,对一条文本会通过搜索引擎得到增强的上下文,融合到 transformer结构。这个工作发表在 ACL 2021 上了。

基于这个工作,我们参加了 SemEval 2022 多语言 NER评测拿了 10 项冠军,以及 best system paper 。

检索增强:输入句子本身之外,检索得到额外 context 并 concat 到输入,结合 KL 的 loss 来帮助学习。在很多开源数据集拿到 SOTA。

4. 自适应多任务训练

BERT 本身效果是很好的,但实际生产很少有 GPU 集群,每个任务都要去做 inference性能代价很大。我们思考能否只做一次 inference,在 encoder 之后每个任务自己再做适配,就能得到比较好的效果。

一个直观的方法就是通过 meta-task 的框架纳入 NLP query 分析任务。但传统的 meta-task 是均匀采样的分布。我们提出了 MOMETAS,一个自适应基于元学习的方法,来自适应不同任务的采样。在多个任务去学习的过程中,我们会阶段性用 validation data 做测试看不同任务学习的效果。reward 反过来指导前面训练的采样。(下方表格)在很多任务上结合这个机制,相比 UB(均匀分布)有不少提升。

把上述机制应用在搜索很多行业的场景里去,带来的收益是仅通过一次 BERT 的编码并存储,在很多的下游任务直接复用,能大幅提升性能。

5. 搜索召回预训练语言模型

深度检索,无外乎是双塔或单塔,通用的训练范式是有监督信号以及预训练模型,进行 finetune 获得 embedding,对 query 和 doc 进行表征。近期的优化路线主要是数据增强或难样本挖掘,另外是优化预训练语言模型。原生 BERT 不是特别适合搜索的文本表示,所以有针对搜索文本表示的预训练语言模型。其他优化是在于做 multi-view 文本表示,以及特别的 loss 设计。

相比原生 BERT 的随机采样,我们结合搜索词权重提升词权重比较高的词来提升采样概率,学习到的表征更适合搜索召回。除此之外,增加 sentence level 对比学习。结合这两个机制,提出了 ROM 的预训练语言模型。

在 MS MARCO 做实验,对比先前做法能够达到最好的效果。在实际的场景搜索任务中,也能带来较大的提升。同时该模型也参与了 MS 刷榜。

6. HLATR 重排模型

除了 ROM 这个召回阶段之外,在精排、重排阶段,提出了一套 list aware 的 Transformer reranking,即将精排很多分类器的结果通过 Transformer 有机的融合在一起,有比较大的提升。

结合 ROM 和 HLATR 两个方案,3 月份至今(7 月份)仍旧是 SOTA 结果。

03

行业搜索应用

1. 地址分析产品

达摩院研发的地址分析产品,背景是各行各业有很多通讯地址。中文的通讯地址有很多特点,比如口语化表达有很多缺省。同时地址本身是人事实物,是客观世界很多实体桥接的一个重要实体单位。所以基于此建立了一套地址知识图谱,提供解析、补齐、搜索、地址分析。

这是产品的技术框图。从下到上包含了地址知识图谱的构建,以及地址预训练语言模型,包括基于搜索引擎的框架串接整个链路。上述提到的基准能力,以 API 的方式提供出来包装成行业方案。

这套技术里面比较重要的一个点是地理语义的预训练语言模型。一个地址在文本表示会是字符串,其实在空间里面它往往是表征成经纬度,在地图中还有对应的图片。所以这三种模态的信息是把它有机融合成一个多模态的地理语义的语言模型,以此来支持在定址里的任务。

上述提到需要做地址相关的很多基础能力,比如分词、纠错、结构化等分析。

最核心的链路是将地理预训练语言模型、地址基础任务、引发搜索引擎的方式将它们桥接起来。比如说搜索浙一医院,可能会对它去做结构化、同义词纠错、term weighting 做向量化、Geohash 的预测。基于分析结果做召回。这个链路是标准的搜索链路,进行文本召回、拼音召回、向量召回,还增加地理召回。召回之后是多阶段的排序,包括多粒度的 feature 融合。

地址搜索体系直观的应用,就是填地址后 suggestion 场景,或者高德地图里面去做搜索,需要把它映射到空间一个点位上。

接下来介绍两个比较行业化的应用方案。第一个是新零售 Family ID,核心诉求是维护一套客户的管理系统,然而各个系统用户信息没有打通,无法实现有效的整合。

比如品牌厂商卖了一个空调,家人由于购买、安装、维修而登记了各种地址、手机号,但对应的实际上是同一个地址。建立的地址搜索归一技术,把不同表示的地址进行归一,生成指纹,将不同用户 ID 聚合到 Family 概念中。

通过家庭聚合的概念,可以做到更好的渗透分析、广告投放触达等新零售下的营销活动。

另外一种应用场景,是 119、129、应急等智能接警应用。因为涉及到老百姓的人身财产安全,所以分秒必争。希望结合语音识别、文本语义理解技术把这个效率提升。

(左边例子)场景有很多特点,比如 ASR 转写的错别字、不流畅、口语化等问题。目标是希望基于自动语音转写分析推断报警地点。

我们提出了一整套系统方案,包括对话理解的口语顺滑纠错、意图识别,以及结合一套搜索从召回粗排精排的机制来最终实现地址推荐。链路已经比较成熟,在中国上百个城市的消防系统落地;消防从报警对话识别出具体的地点,结合推荐、匹配、地址围栏判断具体地点,对应出警。

2. 教育拍照搜题

接下来介绍教育行业的拍照收集业务,在 To C、面向老师端也有不少需求。

拍照搜题有几个特点,本身有增量更新的题库,用户群体较大。另外,不同学科、年龄段对应的领域知识性很强。同时是一个多模态的算法,从 OCR 到后续语义理解、搜索等一套链路。

近几年针对拍照收集构建了一整套从算法到系统的链路。

比如,在手机拍照以及 OCR 识别后,会进行拼写纠错、学科预测、分词、词权重等一系列工作,帮助做到检索。

由于 OCR 对英文识别没有空格,训练了一套 K12 英文的预训练算法模型,进行英文的切分。

同时,学科、题目类型都是未知的,需要做一个提前预测。使用多模态,结合图片和文本进行意图理解。

拍照搜题跟普通的用户搜索不太一样,用户搜索往往 query 是比较短,拍照搜题往往是一道完整的题目。题目里面很多词是不重要的,需要做词权重分析,丢弃不重要的词或者排序予以降权。

在拍照搜题场景中优化效果最明显的是向量召回。性能上的要求不太能用 OR 的召回机制,需要用 AND 逻辑,对应特点是召回比较少。去提升 recall 的话,需要做 term weighting、纠错等较冗余的模块。(右图)通过文本加向量的多路召回效果,超过纯 or 逻辑,在 latency 降低 10 倍。

拍照搜索的链路包括了图像向量召回、公式召回、个性化召回。

提供两个例子。第一个是纯文本的 OCR 结果,(左列)旧结果是基于 ES,简单的 OR 召回,加上 BM25 的结果,(右列)经过多路召回以及相关性召回的链路有较大提升。

第二个是拍照含有图形,多路中是必须结合图片召回。

3. 电力知识库统一搜索

在企业搜索中有很多半结构化和非结构化数据,提供统一搜索,帮助企业整合数据资源。不仅在电力,其他行业也有类似需求。这里的搜索不再是狭义的搜索,还包含了对文档的预处理文档的AI和知识图谱的构建,还包括后续桥接问答的能力。以上是在电力知识库里,去做一套制度标准文本,从结构化到检索,到应用端的示意图。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

阿里达摩院 | 基于预训练语言模型的行业搜索相关推荐

  1. 【论文写作分析】之三《基于预训练语言模型的案件要素识别方法》

    [1] 参考论文信息   论文名称:<基于预训练语言模型的案件要素识别方法>   发布期刊:<中文信息学报>   期刊信息:CSCD   论文写作分析摘要:本文非常典型.首先网 ...

  2. 基于预训练语言模型的检索- 匹配式知识图谱问答系统

    基于预训练语言模型的检索- 匹配式知识图谱问答系统 张鸿志 , 李如寐,王思睿,黄江华 美团, 北京市朝阳区 100020 {zhanghongzhi03,lirumei,wangsirui,huan ...

  3. 【文本分类】基于预训练语言模型的BERT-CNN多层级专利分类研究

    ·阅读摘要:   本文利用BERT的预训练数据,结合CNN,应用于专利分类.由于专利的特性,本文还提出使用多层级方法来增强模型.(文章发表在<中文信息学报>,核心期刊) ·参考文献:    ...

  4. 达摩院开源预训练数据微调框架UOT NeurIPS论文深入解读

    一.论文 论文链接: Improved Fine-Tuning by Better Leveraging Pre-Training Data 代码链接:https://github.com/ziqua ...

  5. 《预训练周刊》第22期:Fastformer:加法注意力就是你所需要的、用于蛋白建模的大规模预训练语言模型...

    No.22 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第22期&l ...

  6. AAAI 2022 | 北大 阿里达摩院:基于对比学习的预训练语言模型剪枝压缩

    近年来,预训练语言模型迅速发展,模型参数量也不断增加.为了提高模型效率,各种各样的模型压缩方法被提出,其中就包括模型剪枝. 然而,现有的模型剪枝方法大多只聚焦于保留任务相关知识,而忽略了任务无关的通用 ...

  7. 《预训练周刊》第7期:傅立叶图像变换器解析、阿里达摩院发布最大中文预训练语言模型PLUG

    No.07 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 ‍‍‍超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第7期 ...

  8. 业界分享 | 阿里达摩院:超大规模预训练语言模型落地实践

    2021年3月,阿里达摩院机器智能实验室AliceMind家族发布了最新训练的270亿参数规模的中文语言理解和生成统一模型--PLUG,但随着预训练模型规模越来越大,如何将大规模的预训练模型在下游任务 ...

  9. NLP之PLUG:阿里达摩院发布最大中文预训练语言模型PLUG的简介、架构组成、模型训练、使用方法之详细攻略

    NLP之PLUG:阿里达摩院发布最大中文预训练语言模型PLUG的简介.架构组成.模型训练.使用方法之详细攻略 目录 PLUG的简介 PLUG的得分 PLUG的特点 PLUG的架构组成 PLUG的模型训 ...

最新文章

  1. java 两个值对换_java将两个整型变量值进行互换的几种实现方法
  2. [算法]最小生成树-普利姆算法
  3. 富士通台式电脑_英特尔X86架构霸权终将崩塌,ARM架构才是未来PC电脑市场的王者?...
  4. tip use view.isineditmode() in your custom views to skip code when shown in eclipse
  5. 在 Azure Functions 上使用不同的路由前缀
  6. 可视化数据包分析工具-CapAnalysis
  7. js图片前端压缩多图上传(旋转其实已经好了只是手机端有问题要先压缩再旋转)...
  8. 嵌入式linux sd卡读写,嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)...
  9. 解决“chrome正受到自动测试软件的控制”信息栏显示问题(转)
  10. 自制jQuery 复选框全选与反选插件
  11. [转][C#] .net动态编译C# 和 VB
  12. 普通类创建获取session 方式_博物馆类建筑的空调与通风工程设计(附图纸参考,要图的看文本获取方式)...
  13. nodejs实现微博第三方登录
  14. Foxmail:修改签名和模板(邮箱、邮件)
  15. 微信小程序源码喝酒游戏集合只有前台上传就可以使用
  16. decorview、window、dialog关系详解
  17. 【图文并茂】一文讲透Dubbo负载均衡之最小活跃数算法
  18. 监听电源键的单击或长按事件
  19. vue结合elementUI,MinUi
  20. centos7.1 修改selinux相关机制后出现开机失败,报错faild to load selinux policy  freezing

热门文章

  1. VMIX 23 下Srt协议编码器推流设置教程
  2. OpenCV入门(12):颜色反转
  3. 计算机毕业设计 SSM网上宠物商店平台 网上宠物美容管理系统 网上宠物订购系统Java
  4. 北斗导航 | 北斗导航定位授时群(PNT研究院)
  5. python geopy 北斗导航_python – Geopy:计算GPS航向/方位
  6. uniapp禁止页面上下滚动
  7. MES系统看板管理,助力企业实现车间可视化!
  8. python是编写机器人的语言么_工业机器人用什么语言编程的?
  9. python使用cv2库、下载opencv库
  10. Python大数据培训实例:三维空间的星星