Dialog System and Chatbots —— DA学习笔记5
2018-01-04 18:09
274 查看
根据微软的一个研究报告,自己做的一个简要总结
人机对话问题可以分为以下4个子问题:自然语言聊天、任务驱动的多轮对话、问答、推荐
一、自然语言聊天
要求:不限domain,在用户的query没有明确的服务获取需求时系统可以做出不尴尬的回应,顺滑对话过程。这种可以拉进距离,建立情感关联,提高用户粘性
需要将自然语言的query进行结构化语义表示,即dialog act。一个dialog act由一个communicative function和slot-value pair组成,其中communicative function表示query的类型(如陈述需求、询问属性等),slot-value pair则表达的是一个限制条件,可以理解为用户需求的一个条件组成。其中常见的communicative function可参考剑桥的对话系统中使用的集合。
二、任务驱动的多轮对话(并不是简单的NLP + IR的过程)
用户有明确的服务获取需求,如订餐、找电影等。对于比较复杂的用户需求,需要分多轮进行陈述来获取用户完整需求,并给用户不断修改或完善需求的权利。当用户陈述不够明确时,可通过询问、确认、clarify等方法获取特定信息。
这个其实是一个决策过程,需要机器在对话过程中不断根据当前的状态决策下一步应采取的最优动作,动作类型包括提供结果、询问细节、澄清需求等,以此帮助用户完成服务的获取。
在SLU组件中,要考虑非严谨语法和语音识别错误鲁棒的问题。(ASR和SLU都是分类问题,会存在一定的分类误差。这些都是要为后续的决策提供服务的,需要刻画这个不确定性的问题,刻画的方式可以是输出一个置信度打分,最好再给出多个候选结果,即n-best list以更好的保证召回)
在DST组件中,主要任务是根据多轮的对话来确定用户当前的目标到底是什么,用户目标的表现形式是一系列的slot-value pairs。
在DP组件中,需要解决在存在ASR和SLU误差的情况,即在一个不确定的环境下进行决策。在上述的置信度和n-best list的基础上,需要同时维护一个对话状态和所有可能的对话状态的置信度,即用户完整目的的概率分布,以此找到最优的对话策略。对话策略的输出是一个系统动作,该系统工作也是由一个communicative function和slot-value pair组成,表明系统要执行的动作的类型和操作参数。策略的决定原则是是未来收益的预期最大化。
在NLG组件中,将DP组件输出的语义表示转化成自然语言的句子,反馈给用户
三、问答
这类主要目标是直接根据用户的问题给出精准答案,更接近于是IR过程。其中会涉及到上下文处理,通常是指代消解、query补全过程。和上边任务驱动的多轮对话的根本区别是,系统是否需要维护一个用户目标状态的表示以及是否需要决策过程来完成任务。这类问题可以是指定领域的,也可以是开放领域的,后者较难。
其中涉及到一个问题理解的问题,需要电脑理解问题的类型,如事实类、定义类、选择类还是观点类等。事实类如“谁是奥巴马的夫人”,定义类如“什么是操作系统?”,选择类(即yes-no类)如“萨达姆还活着吗?”,观点类如“多数美国人对枪支管制的看法是什么?”等。需要进行语义解析,把用户问句转换为一个有结构的语义表达式,然后到知识库中寻找答案,有多个候选答案时,还需要使用排序算法进行择优。知识库适合回答事实类的问题。在搜索结果里抽取答案适用于回答时效性强的问题或者是新闻类问题。社会关系网络适合回答主观类问题,这种在社区里有很多讨论。
四、推荐
根据用户当前query和历史用户画像主动给用户推荐他可能感兴趣的服务。
五、中控决策模块(意图识别)
用于将上述4个功能整合到一个应用中,该模块需负责需求和问题的分类,以及任务之间的澄清、确认和跨领域的引导。
系统需要对用户的输入进行理解以判断用户的意图。在对用户意图的理解基础上,进行必要的对话来对信息进行确认,以此来决定接下来的动作,如搜索、推荐、聊天或者问答。这些是目前自然语言理解最核心的问题,需要一点一点推进研究。
人机对话问题可以分为以下4个子问题:自然语言聊天、任务驱动的多轮对话、问答、推荐
一、自然语言聊天
要求:不限domain,在用户的query没有明确的服务获取需求时系统可以做出不尴尬的回应,顺滑对话过程。这种可以拉进距离,建立情感关联,提高用户粘性
需要将自然语言的query进行结构化语义表示,即dialog act。一个dialog act由一个communicative function和slot-value pair组成,其中communicative function表示query的类型(如陈述需求、询问属性等),slot-value pair则表达的是一个限制条件,可以理解为用户需求的一个条件组成。其中常见的communicative function可参考剑桥的对话系统中使用的集合。
二、任务驱动的多轮对话(并不是简单的NLP + IR的过程)
用户有明确的服务获取需求,如订餐、找电影等。对于比较复杂的用户需求,需要分多轮进行陈述来获取用户完整需求,并给用户不断修改或完善需求的权利。当用户陈述不够明确时,可通过询问、确认、clarify等方法获取特定信息。
这个其实是一个决策过程,需要机器在对话过程中不断根据当前的状态决策下一步应采取的最优动作,动作类型包括提供结果、询问细节、澄清需求等,以此帮助用户完成服务的获取。
在SLU组件中,要考虑非严谨语法和语音识别错误鲁棒的问题。(ASR和SLU都是分类问题,会存在一定的分类误差。这些都是要为后续的决策提供服务的,需要刻画这个不确定性的问题,刻画的方式可以是输出一个置信度打分,最好再给出多个候选结果,即n-best list以更好的保证召回)
在DST组件中,主要任务是根据多轮的对话来确定用户当前的目标到底是什么,用户目标的表现形式是一系列的slot-value pairs。
在DP组件中,需要解决在存在ASR和SLU误差的情况,即在一个不确定的环境下进行决策。在上述的置信度和n-best list的基础上,需要同时维护一个对话状态和所有可能的对话状态的置信度,即用户完整目的的概率分布,以此找到最优的对话策略。对话策略的输出是一个系统动作,该系统工作也是由一个communicative function和slot-value pair组成,表明系统要执行的动作的类型和操作参数。策略的决定原则是是未来收益的预期最大化。
在NLG组件中,将DP组件输出的语义表示转化成自然语言的句子,反馈给用户
三、问答
这类主要目标是直接根据用户的问题给出精准答案,更接近于是IR过程。其中会涉及到上下文处理,通常是指代消解、query补全过程。和上边任务驱动的多轮对话的根本区别是,系统是否需要维护一个用户目标状态的表示以及是否需要决策过程来完成任务。这类问题可以是指定领域的,也可以是开放领域的,后者较难。
其中涉及到一个问题理解的问题,需要电脑理解问题的类型,如事实类、定义类、选择类还是观点类等。事实类如“谁是奥巴马的夫人”,定义类如“什么是操作系统?”,选择类(即yes-no类)如“萨达姆还活着吗?”,观点类如“多数美国人对枪支管制的看法是什么?”等。需要进行语义解析,把用户问句转换为一个有结构的语义表达式,然后到知识库中寻找答案,有多个候选答案时,还需要使用排序算法进行择优。知识库适合回答事实类的问题。在搜索结果里抽取答案适用于回答时效性强的问题或者是新闻类问题。社会关系网络适合回答主观类问题,这种在社区里有很多讨论。
四、推荐
根据用户当前query和历史用户画像主动给用户推荐他可能感兴趣的服务。
五、中控决策模块(意图识别)
用于将上述4个功能整合到一个应用中,该模块需负责需求和问题的分类,以及任务之间的澄清、确认和跨领域的引导。
系统需要对用户的输入进行理解以判断用户的意图。在对用户意图的理解基础上,进行必要的对话来对信息进行确认,以此来决定接下来的动作,如搜索、推荐、聊天或者问答。这些是目前自然语言理解最核心的问题,需要一点一点推进研究。
相关文章推荐
- Dialog System and Chatbots —— DA学习笔记4
- Dialog System and Chatbots —— DA学习笔记2
- Dialog Systems and Chatbots —— DA学习笔记1
- MIT 6.828 JOS学习笔记18. Lab 3.2 Part B: Page Faults, Breakpoints Exceptions, and System Calls
- APUE 学习笔记 - Chapter 6. System Data File and Infomation
- WMI009-WMI学习笔记(九)——System.Management and System.Management.Instrumentation Namespaces(命名空间)
- 《APUE》chapter 6 System Data files and information 学习笔记(加上自己的代码)
- [dialog-system]阅读笔记 - 2017__迁移学习在Q-A系统中的应用
- 【DirectX 11 SDK 学习笔记】Shaders and Effect System
- VxWorks 学习笔记-IO and File System
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
- Log和system.out日志之学习笔记
- thinkCSpy学习笔记: Chapter 14 Classes and functions 类和函数
- Neural Networks and Deep Learning 学习笔记(四)
- MSDN Kernel-Mode Driver Architecture学习笔记(3)——Device Objects and Device Stacks (1)
- Python学习笔记(6)List and Keyboard Control
- thinking in java 学习笔记之Initialization and Cleanup
- Multi Agent System学习笔记
- WPF and Silverlight 学习笔记(二十一):数据绑定值的自定义转换
- 流体力学学习笔记1(Two-way of coupling of fluids to rigid and deformable solids and shells)