作者 | 周俊贤

整理 | NewBeeNLP

大家好,这篇文章想跟大家讨论一下语义匹配的应用场景。实际上无论是NLP的哪个技术,我认为接触场景,思考这个技术跟具体场景是怎么结合的?这技术有哪些场景能应用?是非常重要的。一个资深的算法工程师应该能结合场景和技术,给出最佳的解决方案。

回归正题,语义匹配作为一项基础的NLP任务应用广泛,曾经我天真以为语义匹配相比文本分类更简单,但实际接触到业务时,却发现不是一回事。

首先,这里所说的语义匹配其实是【广义】语义匹配。

  • 大家最常遇到的句子相似度任务,输入两个句子,如“韭菜多吃什么好处”和“多吃韭菜有什么好处”,输出两个句子是否相似,做成分类或回归都可以;

  • 但这里,我更想讨论的是广义语义匹配,例如长文本的相似度(如两个法律裁判书之间的相似程度),长文本和短文本的匹配度(如新闻标题和新闻内容的匹配程度)。

下面说一下过去一年,我在实际业务中遇到过的用语义匹配来处理实际业务的场景。

场景

场景1:语义匹配最广泛的应用,检索式聊天机器人

聊天机器人是语义匹配中最广泛应用的场景。目前的聊天机器人主要分成五种:

  • 基于问答对。输入用户的问题,在由(问题:答案)组成的知识库中检索相似问题,最后将用户相似问题的答案作为结果返回;

  • 基于机器阅读理解:输入用户问题,从知识库中检索相关文档,然后通过机器阅读理解的形式返回答案,这种也涉及检索,不过最关键一步是通过指针网络的形式从文档中抽取出Span作为回答,容易不稳定;

  • 基于知识图谱:输入用户问题,通过语义解析转化成对应的Cypher语法,从建立好的知识图谱中检索问题,困难主要在于知识图谱的建立需要耗费大量人力;

  • 基于任务型对话:针对有限的实际业务场景,例如携程的聊天机器人,输入用户问题,通过意图识别、提取词槽,转换为对应的“订机票”、“查酒店”等服务;

  • 闲聊:类似微软小冰这种,实际应用场景较少。

其中,基于问答对是最为简单的方案,能让我们快速建立一个可用的聊天机器人,其中里面最关键的技术就是语义匹配。我们要首先根据业务场景定义一批【标准问】以及它们对应的答案,当有新的问题来时,计算新问题与标准问的相似度则可。

下面是一些我对一些常见问题的思考:

Q1:知识库的标准问怎么整理?

A:虽然说基于问答对是较为简单的聊天机器人解决方案,但实际应用中,我们要首先考虑这个场景究竟有多泛,是解决一个医药问答、还是一个金融问答、还是一个百科式的问答。一定要先梳理你的场景,假如场景过大,还需要分级管理,如赶着上线,则应该先做高频问答,俗话说二八定律,20%的问题涵盖了80%的常见问题。

Q2:怎么处理冷启动?

A:有时候是一个新的需求,之前没有任何的数据积累,这时候可以通过搜索引擎,如百度知道等搜索一些网民提出的一些相关问题作为知识库,起码这些问题是真实的,假如面对的场景十分窄,搜索不出来,只能让客户提供一些常见问题再进行发散。

Q3:怎么制作训练集?

A:同样容易遇到冷启动,假如现在已经梳理完知识库,怎么生成我们的训练集?

可以通过,如同一个含义的标准问作为一对正样本,不同含义的标准问为一对负样本,但这样容易训练集不够丰富。这里推荐一种做法,把标注问拿去百度知道搜索,通常第1页搜出来的都是语义相同的问题可以作为正样本,10多页的都是些相似度高但语义不同的问题则可以作为负样本,当然还需要人工过审,这做法的好处是极大地丰富了训练集。

Q4:语义匹配要做多细?

A:首先思考,什么叫语义相同的句子?如“怎么成为网络红人”、“怎么样可以成为网络红人”,毫无疑问是属于同一语义的句子对,

但假如是"怎么成为网络红人"、“女的怎么容易成为网络红人”。大家觉得这两个句子属于语义相同吗?

实质上是不严格相同的,但假如在你的业务场景中,这两个问题都对应的是同一个答案,是否能把这两个句子作为相似度为1的正样本让模型去训练?答案在于,你想做得有多粗多细,假如很细粒度,那这两个句子就不是语义相同的句子,或者说它们的相似度不是1,是0.6或0.8,但假如做得很细的话,你需要定义很多标准问。假如做得很广,如把同一个回答的问题都定义为相似度为1的句子,这时候,你必须把这些你认为相似的样本拿去给模型训练,让模型学得,因为这其实不是严格意义上的语义相同,做广的好处是不用定义太多问题,但十分容易不稳定。

Q5:怎么做检索?

A:常见做法是先检索出一批相似问题再精排。其中检索可以用bm25、SBERT等模型,精排可以用Cross-Encoders等结构。

Q6:用户的问题在知识库中没有相似问题?

A:可以设定,

  • 假如有标准问与用户问题相似度0.8以上的,则直接返回相似度最高的标准问对应的答案;

  • 假如相似度最高在0.4~0.8之间,我们可以返回用户“你是否想问...”;

  • 假如相似度在0.4以下,我们可以返回与用户问题相似度最高的三个问题,输出“你是否想问这些问题。。。”;

这其实就是涉及到一个用户体验的体验,不是说一定要返回一个答案,也不是说找不到相似的就让客户重新问,其实即使没有很相似,大部分场景下我们也可以返回“接近相似”作为引导让客户重新提问。如果给用户一个最舒服的体验,这需要我们有产品的思维。

场景2:广义的语义匹配,相似工单检索

场景是这样的:有一些工单信息,主要是群众咨询、投诉等,当出现疑难工单的时候,希望能从已办理的工单库中,检索出最相似的工单用户,返回给处理工单的工单人员做参考。

这里的输入就不是一个句子对,而是两个工单信息,更准确的说,这就是一个广义语义匹配的问题,用语义匹配的方法来做检索。

相关竞赛/公开数据集

除了分享以上两个我遇到过的实际业务场景,我们也可以通过一些竞赛的比赛背景,去了解语义匹配的应用。

天池:“公益AI之星”挑战赛-新冠疫情相似句对判定大赛

这个比赛就是上面说的场景1,而且是一个十分细分的聊天场景,主打疫情相关的呼吸领域问题。越是细分的领域,相对来说更好做,准确率更高。

天池:「小布助手对话短文本语义匹配」

用语义匹配的来做意图识别,而非直接检索问题。这给我们开扩了思路,上面说到的聊天机器人中的任务型机器人,第一步是意图识别,传统做法是当成一个分类任务来做,但用分类方法做的缺点是难以拓展(如一开始限定好10个意图类比,以后像扩展的话,要重新训练模型),但用语义匹配做则不用,增加意图只需要在对应的库里增加相关问题。

搜狐:2021搜狐校园文本匹配算法大赛

每对文本在两个颗粒度上判断文本对中的两段文字是否匹配。其中,一个颗粒度较为宽泛,两段文字属于一个话题即可视为匹配;另一个颗粒度较为严格,两段文字必须是同一事件才视为匹配。如下面的问题,它们都是说英超足球,属于同一个话题,但是两个不是同一个事件。

2019法研杯:

针对多篇法律文书进行相似度的计算和判断。具体来说,对于每份文书我们提供文书的标题和事实描述,选手需要从两篇候选集文书中找到与询问文书更为相似的一篇文书。类似上面我提到的场景2,用语义匹配的方式做检索,检索出的案件或工单用于给工作人员参考。

CCF:“技术需求”与“技术成果”项目之间关联度计算模型

应用场景是有一个平台,定期收集技术需求和技术成果,定期更新技术需求库和技术成果库,数据来源有两种:(1)会员单位发布;(2)非会员单位官方网站采集。每月新增数据量约3000个项目。

根据项目信息的文本含义,为供需双方提供关联度较高的对应信息(需求——成果智能匹配服务),是平台的一项功能需求。技术需求与技术成果之间的关联度分为四个层级:强相关、较强相关、弱相关、无相关。

百度千言数据集:

  • LCQMC(A Large-scale Chinese Question Matching Corpus), 百度知道领域的中文问题匹配数据集;

  • BQ Corpus(Bank Question Corpus), 银行金融领域的问题匹配数据;

  • PAWS-X (中文):语义匹配中难度很高的数据集。数据集里包含了释义对和非释义对,即识别一对句子是否具有相同的释义(含义),特点是具有高度重叠词汇,对于进一步提升模型对于强负例的判断很有帮助。

一起交流

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

END -

NLP机器阅读理解:四大任务及相应数据集、比赛

2021-09-24

【NLP保姆级教程】手把手带你CNN文本分类(附代码)

2021-09-23

头条+腾讯 NLP 面经

2021-09-21

算法黑话大赏,我直呼好家伙!

2021-09-19

NLP 语义匹配:业务场景、数据集及比赛相关推荐

  1. 【NLP】NLP 语义匹配:经典前沿方案整理

    作者 | 周俊贤 整理 | NewBeeNLP 上一篇文章,讨论了语义匹配的语义场景,NLP 语义匹配:业务场景.数据集及比赛 这篇跟大家讨论相关的技术,主要包括BERT-avg.BERT-White ...

  2. 论文浅尝 | 一种可解释的语义匹配复值网络

    笔记整理:耿玉霞,浙江大学直博生.研究方向:知识图谱,零样本学习,自然语言处理等. 论文链接:https://arxiv.org/pdf/1904.05298.pdf 本文是发表在 NAACL 201 ...

  3. NLP最新趋势,7个主流业务场景!

    1 深度之眼NLP项目实战安排 ⭐BAT级工程部署 项目意义:工程化部署是程序在开发完成之后,到线上正式运行整个过程中涉及到的多个环节的统称,主要包括:测试.GPU的分配和使用.微服务的封装.Dock ...

  4. 从DSSM语义匹配到Google的双塔深度模型召回和广告场景中的双塔模型思考

    ▼ 相关推荐 ▼ 1.基于DNN的推荐算法介绍 2.传统机器学习和前沿深度学习推荐模型演化关系 3.论文|AGREE-基于注意力机制的群组推荐(附代码) 4.论文|被"玩烂"了的协 ...

  5. NLP机器阅读理解:四大任务及相应数据集、比赛

    作者 | 周俊贤 整理 | NewBeeNLP 关于机器阅历理解应用,首先介绍大家一个真实的业务场景,从网购平台的退单工单中抽取实际退款金额,数据大概是这样: 你好,我3月份在网上买的洗衣服务,当时买 ...

  6. 语义匹配(一)【NLP论文复现】Sentence-BERT 句子语义匹配模型的tensorflow实现以及训练Trick

    Sentence-BERT 句子语义匹配模型的tensorflow实现以及训练trick 论文模型回顾 建模与训练 模型代码部分 数据处理 训练 模型训练Trick trick1 warm up 代码 ...

  7. 【每周NLP论文推荐】 介绍语义匹配中的经典文章

    欢迎来到<每周NLP论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 语义匹配也是NLP中比较基础的任务,它的主 ...

  8. 资源丨2200万室内场景数据集,包含语义、全景、灯光等十余种效果

    郭一璞 发自 凹非寺  量子位 报道 | 公众号 QbitAI 最近,帝国理工和酷家乐放出了一个名为InteriorNet的室内场景数据集,包含2200万室内场景,涵盖这些场景的3D.全景.灯光.语义 ...

  9. 【自然语言处理(NLP)】基于ERNIE语言模型的文本语义匹配

    [自然语言处理(NLP)]基于ERNIE语言模型的文本语义匹配 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资 ...

最新文章

  1. CentOS 7 安装Boost 1.67及boost_python
  2. 机器学习特征工程之连续变量离散化:连续变量二值化(Binarizer)
  3. 精通python设计模式-浅谈Python设计模式 - 原型模式
  4. linux7双网卡设置,Centos 7 静态IP和双网卡配置
  5. 如何在钉钉上开发自己的应用_神操作!老妈让我告诉老板,双十一买钉钉。
  6. 分析约瑟夫问题(循环单链表)
  7. 为Qt Designer创建自定义Widgets小部件
  8. 通过反射获取无参构造方法并使用
  9. Chrome上出现的问题
  10. Python import以及os模块
  11. 4-5:TCP协议之确认应答(ACK)机制和超时重传机制
  12. 服务的心跳机制与断线重连,Netty底层是怎么实现的?
  13. xp系统怎么添加ntp服务器,1 Windows xp NTP服务器的配置
  14. vue 登录页面背景 - 动态粒子特效包括vue3使用 (Vue-Particles)
  15. jQuery基础之正则表达式及表单验证
  16. “辩”与“辨”的区别
  17. 售前工作过程展示6“差点去了津巴布韦“
  18. 每月一书(202102):《人类简史》
  19. IE6、IE7、IE8之IE多版本共存的几种方法(转)
  20. EXCEL如何设置固定表头

热门文章

  1. CSDN官方总结的写文章技巧
  2. Android Studio 使用问题---导入aidl
  3. JavaScript — 数据类型之 Number数字类型
  4. Android手把手教你实现滑动隐藏(GeastureDetector使用)
  5. 搬家公司哪家最便宜?跨省跨市搬家
  6. 浅谈当下网页设计趋势
  7. Java接口调用的安全性_java编程接口调用安全性都有哪些要求
  8. DAO决策下的Plato Farm,IEO收益用于生态发展
  9. 全国及重点城市适婚人口占比数据(2009-2019年)
  10. 戴尔易安信中国元年开启