博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【对话】对话系统经典:检索式对话
阅读量:3729 次
发布时间:2019-05-22

本文共 2380 字,大约阅读时间需要 7 分钟。

 来自:CS的陋室

对话系统可以说是NLP领域目前已知最扎实的落地场景了,整个流程都脱离不了NLP的核心作用,而且整个流程涉及NLP的大量任务,因此大量的研究都围绕着对话系统来开展,也因此产生了很多很有意义的新方法。而检索式对话作为对话系统最原始的实现方式,又蕴涵着什么有意思的东西,我们来看看。

什么是对话系统

对话从来就不是一个简单的任务,这是一个涉及理解、生成、交互等多个方向技术的综合实体。

  • 理解:需要理解对方输出的内容,只有这样才能给与正确的回应。

  • 生成:基于理解的内容,给出合适的结果。

  • 交互:在多轮对话上,需要记录跟踪整个对话过程中涉及的内容。

要同时完成这么多任务,相必是非常复杂的,同时场景上的复杂性,客服、语音助手、闲聊等,也造就了对话系统的复杂性,最终成为了NLP里面一个重要的研究抓手和目标。

检索式对话

检索式对话按照个人理解应该是最为经典的解决方案,把一个对话问题抽象为一个搜索问题,大量早期的对话系统都是用这种解决方案来实现的,甚至在现在,一些简单的对话任务,都可以用它来简单实现,可以说是工业界最喜欢的一种实现方式了。简单地说,整个检索式对话的流程可以用这个流程来表示:

query理解->检索召回->相似度排序

没错,看着就是搜索的流程,对句子进行理解,理解后到数据库里面进行召回,召回以后再进行相似度排序找到最佳答案。既然流程被拆解,那我们来看看每一步里面都会做什么东西。

query理解

简单的说,其实就是去理解用户输入的内容说的是啥,一般的自然语言理解主要关心的是这么几个技术细节:

  • 意图和话题。即用户谈论的是哪个领域的事情,从而剖析用户期待对话系统返回的是什么。这个问题常被当成分类问题来处理,用分类规则或者是方法来进行意图识别。一旦抽象成分类问题大家就应该大概理解了,就是fastext、textcnn之类的玩意了。

  • 槽位和实体。我们需要知道用户需要什么,需要抽取用户的具体实体,这个经常被抽象为序列标注问题,此时CRF、BILSTM-CRF之类的方法就是基操了。

当然,也有一些工程上会把它抽象化,只是转化为向量或者矩阵,下游用矩阵进行搜索。

总之,query理解这块,主要是为了解析用户说的内容,去理解他的语义,这样我们才能为用户找到合适的答案。

检索召回

召回这块,按照搜索的操作,就是拿着我们提取的槽位和实体,甚至是我们解析的向量和矩阵,根据意图和话题放到搜索引擎里面去检索,搜索引擎中有倒排索引,直接拿着关键词就能找到对应的内容。

然而,问题其实不在怎么检索召回,而是在于召回的内容怎么来。相比搜索引擎,对话系统的内容可能更加不结构化,同时可得性由于特定需求其实并不好得,例如淘宝的客服,每家店的商品性质各不相同,很难需要召回的结果,有正确答案的就更难了,所以,常用的方式有这几种:

  • 对高频问题进行编辑,然后统一维护管理。数白了就是人编。

  • 基于一些模板进行组装生成。

  • 利用文本生成的方式进行处理。

相似度排序

一般地,根据用户最简单的query,往往能召回很多可能比较好的答案,此时我们要选择最优的给用户。衡量最优的标准之一就是相似度,语义相似度就是最为经典或者说基本的相似度衡量方式,当然搜索领域的ctr(不是点击率)、cqr、BM25等,这些非常基本的元素。

对经典的语义相似度,就要说2013年的DSSM了,这个模型可谓是开了语义相似度双塔结构的先河。

优缺点和应用场景

说完了具体的流程,然后再说说检索式对话的优点和应用场景。

先谈谈优点吧。

  • 应该是这么多种对话实现方式中对样本依赖最低的。

  • 实现成本低,初版本实现速度快,后续拓展

  • 三段处理,可控性强。

因为这些优点,检索式对话在工程上被广泛应用。

  • 客服机器人。尤其是淘宝的场景,这里有非常专业的内容,例如用户会问浴缸的长宽高,会问电脑的配置等等,这些用检索式非常方便。

  • 问答类对话。例如小猿搜题之类的,还有一些百科类的问答,虽然不知道具体公司的操作,但是用检索式的确会非常方便。

  • 对话系统初版本。即使是很多开放域,第一版本的构造都会尝试检索式对话的架构。

当然了,检索式对话这套实现方案还是有很大的局限性,因此才会有很多项目尝试做一些别的做法,先聊聊缺点:

  • 答案相对固定,灵活性不足,在一些闲聊场景,会非常困难。如,用户问一句,你好,后面有很多答案都是合理的。

  • 任务型的对话,在各种语音助手,小度、siri之类的很常见,一些引导用户完成任务的工作,对话机器人是需要做一个主动带节奏的角色,检索式基本办不到。

  • 多轮对话。在检索式对话基础上,单轮对话升级为多轮对话其实是存在明显的天花板,成本也比较高,虽然已经有一些相关的操作,如Multi-view、SMN之类的,但是实现的难度还是会有些高。

小结

小结一下,检索式对话作为对话系统一个经典的技术,非常有必要学习和探究,今天大概讲了一些流程和概述,也希望大家有所收获。

下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!后台回复【五件套】下载二:南大模式识别PPT后台回复【南大模式识别】

说个正事哈

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

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

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

感谢支持,比心

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

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

记得备注呦

推荐两个专辑给大家:

专辑 | 

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

转载地址:http://xbgnn.baihongyu.com/

你可能感兴趣的文章
Tomcat的安装和第一个javaweb项目的搭建
查看>>
当eclipse上面新建不了web项目
查看>>
Javaweb程序:eclipse新建一个servlet文件报错
查看>>
python基础(六)函数
查看>>
python基础(七)函数 二
查看>>
下载、安装pygame和pycharm
查看>>
使用pycharm绘制出一个小窗口或者最小开发框架
查看>>
下载安装requests库与爬取百度首页
查看>>
使用pygame绘制文字
查看>>
使用python爬取(搜索引擎关键字提交)
查看>>
爬虫的效率,
查看>>
爬虫的效率和使用python爬取网页照片或视频
查看>>
python 文件操作
查看>>
MY SQL 管理数据库和表
查看>>
pygame绘制简单游戏——壁球(图像型,节奏型)
查看>>
pygame绘制简单游戏——壁球(操控型,键盘事件)
查看>>
BeautifulSoup库的安装
查看>>
基于bs4库中的html内容的遍历方法,html格式化和编码
查看>>
Servlet会话API(Session)
查看>>
Servlet会话管理技术(隐藏表单字段)
查看>>