前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NLP 语义匹配:业务场景、数据集及比赛

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

作者头像
NewBeeNLP
发布2021-11-04 10:54:26
9360
发布2021-11-04 10:54:26
举报
文章被收录于专栏:NewBeeNLPNewBeeNLP

作者 | 周俊贤 整理 | 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 (中文):语义匹配中难度很高的数据集。数据集里包含了释义对和非释义对,即识别一对句子是否具有相同的释义(含义),特点是具有高度重叠词汇,对于进一步提升模型对于强负例的判断很有帮助。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作者 | 周俊贤 整理 | NewBeeNLP
  • 场景
    • 场景1:语义匹配最广泛的应用,检索式聊天机器人
      • Q1:知识库的标准问怎么整理?
      • Q2:怎么处理冷启动?
      • Q3:怎么制作训练集?
      • Q4:语义匹配要做多细?
      • Q5:怎么做检索?
      • Q6:用户的问题在知识库中没有相似问题?
    • 场景2:广义的语义匹配,相似工单检索
      • 天池:“公益AI之星”挑战赛-新冠疫情相似句对判定大赛
      • 天池:「小布助手对话短文本语义匹配」
      • 搜狐:2021搜狐校园文本匹配算法大赛
      • 2019法研杯:
      • CCF:“技术需求”与“技术成果”项目之间关联度计算模型
      • 百度千言数据集:
  • 相关竞赛/公开数据集
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档