作者:杨夕
项目地址:https://github.com/km1994/nlp_paper_study
个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。
- 【关于 对话系统 】那些你不知道的事
- 类别:
- 面向开放域的对话系统
- 支持类型:闲聊
- 类别:
- 基于 海量 FAQ 的检索方式
- 端到端方式
- 任务型对话系统
- 目标:通过对话系统能够找到用户完成一项特定任务
- 类别:
- 基于规则
- 基于数据
- 面向开放域的对话系统
- 区别:是否有明确的目标和任务
- 面向开放域的对话系统
- 特点:有户一般具有不确定的目的性
- 如何衡量质量:以用户的主观体验为主
- 任务型对话系统
- 特点:具有目前的目的性
- 如何衡量质量:以任务的完成情况来衡量对话质量
- 目标:完成用户所指定的一项特定任务(天气、订餐等)
- 机制:需要维护一个用户目标状态的表示,并且依赖于一个决策过程来完成指定任务,保证目标状态沿着能够完成任务的方向前进
- 工作:
- 目标状态
- 状态迁移
- 关键模块
- 自然语言理解:
- 介绍:将机器接收到的用户输入的自然语言转化为语义表示
- 子任务:
- 领域识别
- 意图识别
- 槽位填充
- 对话管理:
- 介绍:根据语义表示、对话上下文、用户个性化信息等寻找合适的执行动作;
- 自然语言生成:
- 介绍:根据具体动作,生成一句自然语言,作为用户输入的回复
- 自然语言理解:
- 动机:对于一项特定任务,需要多个不同的必要信息(eg:订餐任务:用户地址,用户电话等),单论请求无法提供用户满足条件的充足信息
- 方式:采用主动询问缺失信息的策略,以填充必要槽位(如下例子)
Q:今天天气怎么样? A:请告诉我查询的地点? Q:上海 A:上海今天多云
解释:由于对 地点槽位 不明确,所以 A 需要 采用 主动询问缺失信息的策略获取槽位信息
- Hx:用户的对话历史语句(Hx=[X1,X2,X3,...,Xn-1])
- Hy:系统的对话历史语句(Hy=[Y1,Y2,Y3,...,Yn-1])
- Xn:第n轮的用户对话语句
- Yn:第n轮的系统对话语句
- un:第n轮的用户动作
- sn:第n轮的对话状态
- an:第n轮的系统动作
- 类别:
- 模块化的对话系统
- 介绍:分模块串行处理对话任务,每一个模块负责特定任务,并将结果传递给下一个模块
- 实现方式:针对任一模块采用基于规则的人工设计方式,或基于数据驱动的模型方式
- 端到端的对话系统
- 介绍:由输入直接到输出,忽略中间过程,采用数据驱动模型实现
- 模块化的对话系统
- 组成成分:
- NLU:
- 介绍:将用户输入的自然语言语句映射为机器可读的结构化语义表述;
- 结构化语义:
- 意图识别:
- 槽值:
- 结构化语义:
- 介绍:将用户输入的自然语言语句映射为机器可读的结构化语义表述;
- DST(对话状态跟踪)
- 目标:跟踪用户需求并判断当前的对话状态
- 工作原理:以多轮对话历史、当前用户动作为输入,通过总结和推理理解在上下文环境下用户当前输入自然语言的具体含义
- DPL(对话策略学习)
- 工作原理:根据当前的对话状态,对话策略决定下一步执行什么系统动作
- NLG(自然语言生成)
- 工作原理:负责将对话策略模块选择的系统动作转化到自然语言,最终反馈给用户
- NLU:
- 主要任务:将用户输入的自然语言映射为用户的意图和对应的槽位值
- 输入:用户对话语句 Xn
- 输出:解析 Xn 后得到的用户动作 un;
- 主要技术:
- 意图识别->意图
- 槽位填充->槽位
- 介绍:将用户输入的自然语言会谈划分为不同用户意图;
- 举例:
- query: 今天天气怎么样?
- 意图 : 询问天气
- 介绍:意图所带的参数,一个意图可以携带若干个相应槽位
- 举例:
- 咨询公交路线
- 槽位:出发地,目的地,时间等
- 槽位填充的目的:在已知特定领域或意图的语义框架下,从输入语句中抽取处该语义框架中余弦定义好的语义槽的值
- 标注法:IOB
- query:今天上海天气怎么样?
- 用户意图:询问天气
- 槽位定义:
- 槽位1:时间
- 槽位2:地点
- 合并方式:串行执行
- 缺点:
- 误差传递
- 限定领域后,不同领域需要不同的方法和模型进行处理,各个领域不共享;虽然很多时候槽位一致(eg:火车和飞机)
- 评价指标
- 意图识别准确率
- 槽位填充 F1
- 目标:跟踪用户需求并判断当前的对话状态
- 工作原理:
- 输入:以多轮对话历史(Hx、Hy)、当前用户动作 un ;
- 输出: DST 模块判定得到的当前对话状态 sn;
- 对话状态的表现(DST-State Representation)组成:
- 对话状态的表现(DST-State Representation)组成
- 本轮对话过程中的用户动作;
- 对话历史;
- 存在问题:由于 语音识别不准确 或 自然语言 本身存在 歧义问题,导致 NLU 的识别结果 往往 和真实结果间存在误差,所以 NLU 的 输出 是带概率的,及每一种可能的结果由一个相应的置信程度;
- DST 在判断当前对话存在两种选择:
- 第一种选择所对应的处理方法:1-Best
- 介绍:DSt 判断当前对话状态时只考虑置信程度最高的情况,维护对话状态的表示时,只需要等同于槽位数量的空间;
- 第二种选择所对应的处理方法:N-Best
- 介绍:DST 判断当前对话时会综合考虑所有槽位的置信程度,每一个槽位的N-best 结构都要考虑和维护,且最终还需要维护一个槽位组合在一起的整体置信程度,作为最终的对话状态判断依据
- 第一种选择所对应的处理方法:1-Best
- 实现方法:
- 基于CRF的系列跟踪模型
- 基于 RNN 或 LSTM 的序列跟踪模型
- 工作原理
- 输入:DST 模块输出的当前对话状态 sn;
- 输出:通过预设的对话策略,选择系统动作 an 作为输出;
- 实现方式:通过 人工设计有限状态自动机方法实现;
- 方案:
- 方案一:以点表示数据,以边表示操作;
- 方案二:以边表示数据,以点表示操作;
- 工作原理
- 输入:DPL 模块输出的当前系统动作 an;
- 输出:系统对用户输入 Xn 的回复 Yn;
- 【关于 Domain/Intent Classification 】那些你不知道的事
- 【关于 槽位填充 (Slot Filling)】那些你不知道的事
- 【关于 上下文LU】那些你不知道的事
- 【关于 自然语言生成NLG 】那些你不知道的事
- 【关于 DSTC 】那些你不知道的事
- 【关于 E2E 】那些你不知道的事
- 【关于 rasa 】那些你不知道的事