想了解任务型对话机器人,我们先从自然语言理解聊起
摘要:本文中主要介绍对话系统中的自然语言理解模块(NLU),NLU是对话系统中非常重要的一个模块,主要包括意图识别和槽位填充。
一、引言
随着移动互联网和智能终端的快速发展,任务型对话机器人的应用越来越广泛。任何一款成熟的对话机器人产品都离不开任务型对话系统。目前,对于任务型对话系统工业界主流的做法都是采用一套较为固定的pipline方式实现。具体的流程图如下:
整个pipline由三大模块组成:自然语言理解(NLU);对话管理(DM);自然语言生成(NLG)。现在越来越多的产品还融入了知识库,主要是在对话管理模块引入。在这里自然语言理解、对话管理、自然语言生成都属于自然语言处理技术。在语音会话时,会在输入和输出端加上语音识别(ASR)和语音合成(TTS)。自然语言理解(NLU):主要作用是对用户输入的句子或者语音识别的结果进行处理,提取用户的对话意图以及用户所传递的信息。
对话管理(DM):对话管理分为两个子模块,对话状态追踪(DST)和对话策略学习(DPL),其主要作用是根据NLU的结果来更新系统的状态,并生成相应的系统动作。
自然语言生成(NLG):将DM输出的系统动作文本化,用文本的形式将系统的动作表达出来。
以上每个模块在学术界都对应着一个研究领域,本文中主要介绍对话系统中的自然语言理解模块(NLU),NLU是对话系统中非常重要的一个模块,主要包括意图识别和槽位填充。下面将介绍意图识别和槽位填充的概念以及近几年用于意图识别和槽位填充的主流方法。
二、意图识别和槽位填充概念
(1)意图识别
意图识别,顾名思义就是判断用户要做什么,比如一个用户向机器人问了一个问题,于是机器人就需要判断这个用户他问的是天气、是旅游还是问某部电影的信息呢?说到底意图识别就是一个文本分类的问题。既然对应文本分类,那么首先就需要将明确有哪几类意图,也就是说我们需要预先定义好意图的类别然后才能考虑意图识别的问题。那么如何定义意图类别呢,它不像情感分类任务那样,不管什么场景,都能划分成积极、消极和中立情感三分类;我们讲意图分类是需要将其置于特定的场景中来考虑的,不同应用场景就有不同的意图分类。比如在美团APP上,它把用户的搜索意图分为订外卖、订酒店、订旅游门票、订电影票、订机票等类别。
(2)槽位填充
理解一段文字的一种方法是标记出对句子有意义的词或记号。在自然语言处理领域,这个问题被称为语义槽填充问题。
在对话系统中,槽填充过程一般指从用户一句话中抽取出关键信息,将用户隐式的意图转化为显式的指令从而让计算机理解。语义槽一般用来表示用户的需求,如出发地、到达地、出发时间等信息,作为意图识别的关键字,是进行下一步对话的提示信息。
在对话系统中,填槽的意义有两个,一个是作为条件分支进行多轮对话,还有一个是作为信息补全更明确的表达出用户的意图。换言之,填槽不仅是补全用户意图的方式,而且前序槽位的填写还会起到指导后续信息补全走向的作用。
三、意图识别和槽位填充方法
关于意图识别和槽值填充既可以作为两个单独的任务处理,也可以联合处理。由于两个任务之间的存在较大的相关性(意图和槽值之间有相关性),因此联合建模的效果一般会更好。接下来我们将介绍一些相关的论文方法。
论文1:A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding
(1)概述
该文章为针对SLU(Spoken Language Understanding)的意图-槽填充联合模型,文章的出色之处在于提供了一个同时在文本分类和文本标记两个nlp基本任务中都取得卓越成绩的基于RNNs的联合模型。循环神经网络(RNNs),在文本分类任务中被证明可取得较好的结果。由于意图识别和槽填充有相当的联系,所以论文作者提出一个适合于两种任务的联合模型。
在文中,作者采用了RNNs的改进版门控循环神经网络(GRU),GRU具有随着时序学习每个词(token)的表征的特性,通过这个特性可以预测每个插槽,同时,一个max-pooling层可以捕捉句子的全局特征从而实现意图识别。GRU捕捉到的每个token的特征和max-pooling层捕捉的句子全局特征是被两个任务所共享的,譬如,假如一句话的意图是找到一个航班,那么他更有可能有出发以及目的城市,反之亦然。实验证明了联合模型比分开的每个模型效果都要更好一些。文章选用了United loss function作为策略,实验结果证明了该篇论文在两个任务中都取得了state-of-the-art的结果。
(2)模型结构
(3)定义损失
(4)模型结果
实验结果展示如下,第二列是每个方法使用的特征,其中,W,N和S分别代表单词、命名实体和语义特征,在CQUD数据集中,W代表每一个中文字特征表示。可以看到CRF的结果比SVM好,表明CRF更加适合序列标注任务。另外,RNN打败了CRF,因为RNN可以捕捉长依赖关系。而R-CRF模型结合了RNN和CRF模型的优点,可以模拟标签转移和得到整个序列的全局的优点。对于填槽任务来说,sentence simplification是最好的办法,它使用了依存分析来提取句中关键词。RecNN使用dl提取的语义信息,但是他的效果比sentence simplification更差,作者认为可能的原因是语料的规模不够大。总的来说,论文在ID和SF领域分别提升了1.59%和1.24%的准确率。
联合模型和分开的模型的对比:
论文2:Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
(1)概述
这篇文章主要介绍了使用Attention-Based RNN模型识别意图和槽填充(slot filling)。意图识别通常使用分类的方法将句子分为相应的意图种类。槽填充则可以看做是序列标注问题,即对于给定的句子中的每个词分别打上相应的标签。例如句子“first/class/fares/from/boston/to/denver.”,每个词对应的标签为”B-class_type/I-class_type/O/O/B-fromloc/B-toloc”。槽填充既可以用RNN模型也可以用encoder-dedoder 模型解决。即源输入是句子序列,目标输出则是标注序列,同时意图识别也可以用encoder-dedoder 模型解决。即源输入是句子序列,目标输出则是意图种类。但是对与槽填充来说,句子与相应的标签是一 一对应的,也就是说有“explicit alignment”。作者提出了两种模型,一种是将“alignment information”加入到encoder-dedoder 模型中,另一种就是将“alignment information”和”attention“加入到RNN模型中来解决槽填充和意图识别问题。
(2)联合模型
联合意图识别和槽位填充的基于注意力的RNN模型如下图所示:
在用于序列标记的双向RNN中,每个时间步的隐藏状态都携带整个序列的信息,但是信息可能会随着向前和向后传播而逐渐丢失。因此,在进行时槽位预测时,我们不仅希望在每个步骤中仅使用对齐的隐藏状态,还希望查看是否使用上下文向量为我们提供了任何其他支持信息,尤其是那些需要长期依赖的信息未被隐藏状态完全捕获。
在模型中,双向RNN(BiRNN)沿正向和反向读取源序列。文章中RNN采用了长短时记忆网络(LSTM)。插槽标签依赖关系在前向RNN中建模。类似于上述编码器-解码器体系结构中的编码器模块,每个步骤的隐藏状态是前向状态和后向状态的串联。每个隐藏状态都包含整个输入单词序列的信息,并重点关注单词周围的部分。然后将此隐藏状态与上下文向量组合以产生标签分布,其中上下文向量计算为RNN隐藏状态的加权平均值。
对于意图识别和槽填充的联合建模,文中采用双向RNN的隐藏状态来生成意图类分布。不加入注意力机制时,先对隐藏状态向量最大池化,然后输入到逻辑回归中来进行意图分类。加入注意力机制时,则取得隐藏状态向量加权平均值。
值得注意的是,与利用显式对齐输入的基于注意力的编码器/解码器模型相比,基于注意力的RNN模型具有更高的计算效率。在模型训练期间,编码器-解码器插槽填充模型两次读取输入序列,而基于注意力的RNN模型只读取一次输入序列。
(3)实验结果
表1显示了提出模型的槽填充F1分数。表2将槽填充模型性能与先前报告的结果进行了比较。
表3显示了文章提出的意图模型和先前方法之间的意图分类错误率。
表4显示了与先前报告的结果相比,在意图检测和槽填充方面的联合训练模型性能。
进一步验证联合训练模型的性能,文章将提出的模型应用于其他ATIS数据集,并通过10倍交叉验证对它们进行评估。编码器-解码器和基于注意力的RNN方法均取得了可喜的结果。
【参考】
[1] Zhang X, Wang H. A joint model of intent determination and slot filling for spoken language understanding[C]//IJCAI. 2016, 16: 2993-2999.
[2] Liu, B., & Lane, I. (2016). Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling. Interspeech.
[3] https://www.jianshu.com/p/cec045c55175?utm_campaign=haruki
[4] https://zhuanlan.zhihu.com/p/92909762
本文分享自华为云社区《任务型对话机器人之自然语言理解(一)》,原文作者:小蜜蜂~ 。
点击关注,第一时间了解华为云新鲜技术~
想了解任务型对话机器人,我们先从自然语言理解聊起相关推荐
- 任务型对话机器人简介
1 什么是任务型机器人 任务型机器人指特定条件下提供信息或服务的机器人.通常情况下是为了满足带有明确目的的用户,例如查流量,查话费,订餐,订票,咨询等任务型场景.由于用户的需求较为复杂,通常情况下需分 ...
- 揭秘任务型对话机器人(下篇)
本文来自专栏语言.知识与人工智能,作者腾讯知文实验室 近年来比较热门的任务型对话的研究主要集中在端到端的框架的研究,基本跟传统任务型算法框架--语言理解模块(Spoken Language Under ...
- 揭秘任务型对话机器人(上篇)
https://juejin.im/post/5b21d548e51d4506d93701e7 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文来自专栏语言.知识与人工智能,作者腾讯知 ...
- 图灵测试70载,回顾对话机器人的经典实践和最新进展
本文内容整理自 PaperWeekly 和 biendata 在 B 站组织的直播回顾,点击文末阅读原文即可跳转至 B 站收看本次分享完整视频录像,如需嘉宾课件,请在 PaperWeekly 公众号回 ...
- 对话机器人70年:科幻与现实的交融
摘要:本文将围绕对话机器人相关技术及其在行业中应用实践展开,同时介绍华为云对话机器人在多模态.小样本.预训练方向上的最新进展. 从 1950 年图灵测试的提出到现在,对话系统已经走过了将近 70 年的 ...
- 对话机器人---智能客服
https://blog.csdn.net/qq_40027052/article/details/78723576 详细的介绍了对话机器人涉及到的所有知识和技术. 整个对话机器人涉及到的知识点,本人 ...
- 评估智能对话机器人的7大数据指标
编辑导语:当今人们已经进入到一个大数据时代,人们每天都在生产者各种各样的数据,这些数据又在不断被循环利用推动着行业和社会的进步.不同行业都有着不同的数据指标体系,本文作者对评估智能对话机器人的数据指标 ...
- 快商通推出智能人机对话平台KICP,0代码小样本打造对话机器人
2016年,"百度少帅"顾嘉唯在硅谷的一次讲座中宣称:人工智能的核心场景只有两个,除了自动驾驶就是人机对话.在人工智能领域中,人机对话从图灵提出"图灵测试"开始 ...
- 基于Transformer的NLP智能对话机器人实战课程(第十六章、第十七章、第十八章)
"万物皆流,一静一动现天机.入门了 Transformer 的心智应该是拥有基于贝叶斯模型来体悟流动的 Matrix 之美的能力." 第16章:Kaggle BERT比赛Commo ...
最新文章
- php ajax session失效,PHP中解决ajax请求session过期退出登录问题
- 并发编程-03线程安全性之原子性(Atomic包)及原理分析
- 外国人居留证申请程序
- Android 短视频拍摄、拍照滤镜 第三方库SDK
- cocos2d-x游戏实例(25)-简易动作游戏(3)
- TeamCity+Rancher+Docker实现.Net Core项目DevOps
- leetcode刷题:三数之和
- i.MX应用处理器-iMX8系列产品介绍
- 全面剖析雅虎助手以及网络实名的流氓行径(1)
- 苹果手机各型号的屏幕尺寸
- 拍牌人数陡增6万人,中标率降至7.8%,我们错过了拍沪牌的黄金期
- 软件测试实验1——语句覆盖、判定覆盖、条件覆盖、路径覆盖的用例设计及Junit测试
- 重庆大学计算机学院小学期安排,2019年重庆大学寒假放假时间安排是什么 重庆大学2019年学校校历如何安排...
- ftp服务器文件访问路径,ftp服务器访问路径格式
- 理财投资还要看贵金属
- linux qdel强制删除任务,SGE:qsub/qstat/qdel/qhost 任务投递和监控
- 第十七天(续第十六天BPDU相关知识以及STP的配置)
- python12306爬虫_爬虫12306返回数据怎么解析
- SAP财务凭证常见的冲销步骤详细操作手册(FB08、AB08、VF11、FBRA等)
- 数据库(Mysql)的四种隔离级别
热门文章
- css布局模型详细介绍
- Bootstrap创建按钮下拉菜单
- 修复IE下列表 li 的阶梯Bug
- es6 for...of 循环
- 贪心算法,递归算法,动态规划算法比较与总结
- asp 文本转时间_三分钟学会在ASP.NET Core MVC 中使用Cookie
- 保温杯哪种材质最好_哪种保温杯质量好?
- 2018.12-2019.1 TO-DO LIST
- Python小技巧:使用*解包和itertools.product()求笛卡尔积(转)
- 【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单