点击上方DLNLP,选择星标,每天给你送干货!


来自:CS的陋室

近期在做一些有关FAQ的工作,即问答型对话,比较常见的就是客服场景,用户问一个问题,机器人能库里面找到最接近的答案并且返回给用户,即Q-A的模式,或者是找到库里面最接近的问题再把其答案返回给用户,即Q-Q-A的模式,由于直接算相似度会比较简单,因此后者经常被当做首选。

本期谈到的文章来源:keyword-attentive deep semantic matching。

背景

先来聊聊我专门谈这篇文章的背景,我们来看问答类场景的case:

  • 浴缸的尺寸是什么样的

  • 你好,春节还送快递吗

  • 核桃有什么口味

  • 我新买的switch,怎么屏幕最近突然变蓝色了

可以看到其实很多问题都有一个特点,那就是关键词:

  • 浴缸的尺寸是什么样的-浴缸、尺寸

  • 你好,春节还送快递吗-春节、快递

  • 你们的核桃有什么口味-核桃、口味

  • 我新买的switch,怎么屏幕最近突然变蓝色了-switch、屏幕、蓝色

另外,还想谈的是,做语义匹配表面上是为了完成一个分类任务,实际上其实是一个表征任务,我们需要构建的语义空间不仅仅是为了用超平面去切割语义分块,还有一个深层次的任务,我这里想解释为“排除异己”,我希望把和自己通语义的全部划分到一个尽可能接近的簇,而与我不同的则是离我尽可能远,这是一个比分类还要难很多的问题,我这里用今天要讲的论文作show case:

  • 哪些因素会影响中国的GDP。

  • 哪些因素会影响美国的GDP。

  • 中国房价的影响因素。

  • 说说中国GDP的影响因素。

可以看到,我们是希望1和4离得近可能进,还有一个任务是要把2和3拉的和1和4远,这个所谓的“表征”任务,或者说度量学习其实才是语义匹配的一个更高级的任务。

而我们发现,我们找到这些关键词,其实就可以很容易找到匹配的问题,与其他的词汇关系不大,因此,一方面我们要识别好关键词,另一方面我们用好这些关键词,相信效果会有非常明显的提升。

今天想谈的文章来自于腾讯的论文:keyword-attentive deep semantic matching。该论文主要讲述的是如何识别和应用关键词,来提升匹配的效果。

思路

前面提到,要用关键词来做语义匹配计算,那需要在原来的语义匹配方案基础上再多做两件事情——识别关键词和应用关键词。

识别关键词

识别关键词的方法,有点奇妙,虽然问题从传统搜索时代就已经有的讨论,其实没有像其他领域蹦出什么可以被称为统治级别的方案,当然也有attention能一定程度充当这个功能的原因吧,在这篇文章中提到的,关键词抽取同样不是什么高端的玩法。

文章提出的是一种基于领域(domain)的关键词抽取方法,文章是用了超过1kw的数据,来划分领域对各个领域的词频进行统计来完成关键词抽取。整个思路是这样的:

在此之前,然后使用PMI(point wise mutual information)来进行新词发现,PMI主要用于衡量两个字/词的紧密度,当紧密度达到一定的程度,就可以认为这两个词足够接近。

然后开始做关键词抽取,这个关键词某种程度上说还是有不小的启发的,由于关键词和领域有很大关系,但是我们又不得不面对开放域的问题,因此可以通过领域维度把关键词抽取给做起来,这个指标作者成为











这里的
















表示的是不属于这个领域的词的重要性,另外作者这里用df而非tf的原因是词汇的文档频率比词汇本身的频率要更重要,这点和我之前做的经验一致,说白了就是出现该词汇的文章越多这个词越不重要,例如中文的“的”就很高频,所以他不重要。而idf的相减实质上要体现的是这个领域内这个词的重要性,即这个词更有领域的特殊性。

应用关键词

如果说识别关键词的方法不够塞牙缝,那大可作为前菜,主菜当属应用关键词这块了,作者把前面提到的关键词信息诸如到模型里面。

整体模型架构是这样的:

常见的两层transformer,然后开始分两块,左边正常走不过只去CLS的向量,右边则是走了一个完整地keyword attention layer,即这一块只关注关键词,这些关键词表示为,这些词才过transformer,然后输出的矩阵通过平均池化归结为向量
























,这个两个变量都是一定程度借两者的关系丑的关键词来做分析的结果,而为了更加深入的对比两者关系,作者又造出了新的向量:

说实话这个




的含义我不太确定,文章说的是一个连接符,直接concat吗,但是左右两个其实就是一对相反数,两个拼接个人感觉用处没想象中大额,欢迎大佬解读。

最后的匹配层吸取了直接transformer、keyword attention layer的两个输出以及












给concat起来,然后就是全连接降维预测了。

构造负样本

这里小标题是负采样,但我更想叫构造负样本,文章说的方法其实我们很多时候都已经用到了,就是用搜索的方式先找一批文本层面相似的,然后用阈值卡得到一批负样本,文章别出心裁的使用关键字重叠率来作为判断的指标:

另外还有一个方法就是通过一些槽位的替换来达到特定的效果。

实验

有关实验,不太想聊实验结果,而是这个数据的准备的确给了我不小的启发。

  • 训练的正负样本的构建,负样本使用的是本文的方法,而正样本则来源于ES查询TOP5的人为复核样本。

  • 测试集则是人工复核产生的。

小结

我读的语义相似度文章不多,这篇来自一位前辈的推荐,这篇文章的确很击中我目前在思考的QA匹配的一个点——关键词问题,尤其是问答型的文本语义匹配,诚然我已经能明确认识到关键词的相似为整个句子的相似带来关键作用,一般关键词准了整个句子含义也就差不多了,这篇文章给出了一种简单的方式来实现了这个想法,思路非常值得借鉴,文章没有源码,我只能自己探索,找到最适合我面临的问题的方式。

另外,语义相似度对文本质量要求很高,hard case对一个好模型的产生起到了至关重要的作用,文章中提到的样本生成和筛选都是很有借鉴意义的,这里也可以mark一下。

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!

腾讯专注关键词的深度语义匹配模型相关推荐

  1. 「NLP-语义匹配」详解深度语义匹配模型DSSM

    2019-12-29 11:05:55 所谓语义匹配,就是在语义上衡量文本的相似度,在产业界有很多的应用需求.例如,在FAQ场景中需要计算用户输入与标问之间的相似度来寻找合适的答案.本文介绍一种经典的 ...

  2. 【NLP-语义匹配】详解深度语义匹配模型DSSM

    所谓语义匹配,就是在语义上衡量文本的相似度,在产业界有很多的应用需求.例如,在FAQ场景中需要计算用户输入与标问之间的相似度来寻找合适的答案.本文介绍一种经典的语义匹配技术,DSSM,主要用于语料的召 ...

  3. 详解深度语义匹配模型DSSM和他的兄弟姐妹

    一只小狐狸带你解锁NLP/ML/DL秘籍 正文作者:郭耀华 正文来源: https://www.cnblogs.com/guoyaohua/p/9229190.html 前言 在NLP领域,语义相似度 ...

  4. DSSM深度语义匹配模型

    DSSM DSSM的结构 DSSM 最大的卖点在检索场景下 使用点击数据来训练语义层次的匹配,简单的来说,传统检索场景下的匹配主要有: 字面匹配: TFIDF . BM25 等 使用 LSA 类模型进 ...

  5. 智能问答系统:问句预处理、检索和深度语义匹配技术

    更多干货内容敬请关注「平安寿险PAI」(公众号ID:PAL-AI),文末有本期分享内容资料获取方式. 智能问答系统是人机交互的核心技术之一,常见的应用场景主要是智慧客服.通过构建该系统,机器人可以快速 ...

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

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

  7. 60检索式问答系统的语义匹配模型(神经网络篇)

    slvher 助理来也后端/算法工程师 目前研发方向为多轮对话系统 问答系统可以基于规则实现,可以基于检索实现,还可以通过对 query 进行解析或语义编码来生成候选回复(如通过解析 query并查询 ...

  8. 视频与图片检索中的多模态语义匹配模型 ——原理、启示、应用与展望

    前言 三多前笔者在<万字长文漫谈视频理解>[1]一文中,曾经将自己对视频理解的认识进行过简单总结,幸而获得了朋友们的认可,能让读者认可是笔者最为骄傲的成就.现在看来文中观点有不少纰漏狭隘之 ...

  9. 深度树匹配模型(TDM)

    深度树匹配模型(TDM) 算法介绍 Tree-based Deep Match(TDM)是由阿里妈妈精准定向广告算法团队自主研发,基于深度学习上的大规模(千万级+)推荐系统算法框架.在大规模推荐系统的 ...

  10. 知识图谱-KGE-模型(二):语义匹配模型【RESCAL、DistMult、HoLE、ComplEx、ANALOGY、SNE、NTN、MLP、NAM】

    语义匹配模型:包括RESCAL.DistMult.HoLE.ComplEx.ANALOGY.SNE.NTN.MLP.NAM模型等: 知识图谱怎样入门? - 知乎

最新文章

  1. Linux运维笔记-文档总结-NFS文件共享(网络文件系统)
  2. openstack-mitaka之Telemetry服务(controller安装部署)
  3. app让个别界面横屏,其他的为竖屏,解决如下
  4. 详细的mongo工具手册,包含常见CURD+条件操作+聚合+案例
  5. java logger使用_这才是JAVA中打印日志的正确姿势
  6. 退化射线和净化装置获得法
  7. verilog之编程应该注意的事项
  8. ERROR 1290 (HY000): The MySQL server is running withnbs
  9. 电源大师课笔记 2.7
  10. 超详细的OpenCV入门教程,12小时带你吃透OpenCV。
  11. pg数据库的一些问题
  12. web前端入门到实战:HTML图像标签img和源属性src及Alt属性、宽高、对齐
  13. java 矩阵求逆_详解用java描述矩阵求逆的算法
  14. Android moudle库使用aar的方法
  15. Web前端工程师学习路径图,你掌握了多少?
  16. HTML绘制齿轮,HTML5模拟齿轮动画代码实例
  17. 错误:error LNK2005 解决方法
  18. Android中的自定义View(一)
  19. C#:Krypton控件使用方法详解(第九讲) ——kryptonRadioButton
  20. vue-recaptcha 谷歌机器人验证

热门文章

  1. spark sql cache
  2. 【C# RDLC】 RDLC报表的部署问题
  3. 水晶报表从VS2008升级到VS2010 注意事项
  4. C# GUID format参数说明
  5. win10下正确使用Sublime Text搭建python调试环境
  6. TensorFlow相关的一些技巧
  7. 读书笔记第四周 《代码大全》
  8. 面向对象-反射和__getattr__系列
  9. 谈谈对margin的理解
  10. 嵌入式基础面八股文——进程与线程的基本概念(1)