本文由@ray 出品,转载请注明出处。
文章链接: http://www.cnblogs.com/wolfray/p/7887652.html
上周导师安排了一个任务——读一下这篇文章
出处:A Survey on Dialogue Systems: Recent Advances and New Frontiers
文章地址: https://arxiv.org/abs/1711.01731v1
作者: Hongshen Chen, Xiaorui Liu, Dawei Yin, Jiliang Tang
笔者之前都是搞图像处理啊、单片机啊、软件开发啊这些的,没有接触过自然语言处理,对话系统这些。
通过阅读这篇文章,笔者对对话系统有了初步的了解,并产生了一些想法。
首先放出读了这篇文章后的思维导图:
一、概述
这篇文章主要概述了对话系统,尤其是对话系统在深度学习方面的进展;还讨论了可能的研究方向
二、分类
对话系统根据其应用可以分为面向任务型和非面向任务型。
2.1 面向任务型
2.1.1 目的
面向任务型对话系统的目的是帮助用户完成某些任务,比如说查找产品、预定住宿等。
2.1.2 方法
面向任务型的方法可以分为三种:
①流水线
流水线方法中包含4个模块:
-
自然语言理解(NLU):又可分为语义槽、意图检测和槽填充三个部分。
-
对话状态跟随器(Dialogue State Tracking):确保对话系统健壮性的核心组成部分。它会在每一次对话中估计用户的目标。传统方法是用手工定制规则,新方法引入了信念追踪的深度学习。
-
对话策略学习(Policy learning):以从状态跟随器获得的状态表示作为条件,策略学习将产生下个可用的系统动作。
-
自然语言生成(NLG):将抽象的对话动作转化为浅层的自然语言表达
流水线方法的缺点有两个:
- 分数分配问题,最终用户的反馈很难回传到上游模块
- 处理相互依赖(模块间)
②深度学习
③端到端(end-end):一个模块,可以与结构化的外部数据进行交互
2.1.3 特点
面向任务型的特点是通常需要在外部知识库上进行查询。
2.2 非面向任务型
2.2.1 目的
非面向任务型的目的是在与人类交互过程中,提供合理的反应和娱乐;其主要专注于在开放域与人交谈。
2.2.2 方法
非面向任务型的方法主要有两个:
①生成方法:神经生成模型,可在对话过程中产生适当的回复。
序列到序列(seq2seq)模型是神经生成模型的基础。
目前神经生成模型的热门研究课题大概有如下几个:
- 对话上下文
- 回复多样性
- 主题和个性
- 外部知识库
- 交互式对话学习
- 评价
②检索方法:从数据库中选择当前对话的回复。这有可以分为单轮回复匹配、多轮回复匹配和混合方法。
三、结论
目前对话系统的发展特点有如下两个:
-
深度学习变成了对话系统的基础技术,应用于传统面向任务的对话系统的不同模块
-
充分利用大数据,结合端到端的训练和强化学习。
四、一些思考
-
语义槽(Semantic Slots)是什么?
答:
语义槽类似于元数据,描述数据的数据。
语义槽允许用户去详细描述说法的变量值部分。
在下面的说法案例中{到达城市}和{旅行日期}就是语义槽:
我想去{到达城市}
预定一次{出发日期}的行程;
计划一个到{到达城市}的假期; -
引言中提到大多对话系统,仍然使用人工特征或人工编写的规则来处理状态和动作空间表示、意图检测和槽填充。这里的人工特征和人工编写的规则是指的什么?
-
微软小娜和苹果siri是什么型的系统?
-
真的存在一个评价标准来评价回复的质量吗?