多轮对话(一):概述(意图识别+槽填充)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、对话系统

对话系统

基于流水线的面向任务的对话系统包含了四个关键部分

  • 语言理解。它被称为自然语言理解NLU它把用户话语解析为预定义的语义槽。
  • 对话状态跟踪器。它管理每一轮的输入与对话历史输出当前对话状态。
  • 对话策略学习。它根据当前对话状态学习下一步动作。
  • 自然语言生成NLG。它将选择的动作映射到其表层生成回复。

因为我现在做的是意图识别所以我这里只介绍NLU相关内容其余部分可以参考第四篇参考文献和第五篇参考文献里面还有案例非常容易理解。

NLU示例

NLU把自然语言转换成机器可以处理的领域domain/意图intention和槽植对slot-value pairs。它的输入Xn是用户的Utterance输出Un=(In, Zn), In是intentionZn是槽植对。In=f(Xn) , 就是意图分类一般分类方法都行。Zn=f(Xn)Zn = { 1, 2, 3…}是序列标注问题槽填充传统的CRF、HMM都行RNN、LSTM、GRU等也可以。

对话系统按功能来划分的话分为闲聊型、任务型、知识问答型和推荐型。在不同类型的聊天系统中NLU也不尽相同。

  • 闲聊型对话中的NLU就是根据上下文进行意图识别、情感分析等 并作为对话管理DM的输入。
  • 任务型对话中的NLU就是领域分类和意图识别、槽填充。他的输入是用户的输入Utterance输出是Un=In, Zn), In是intentionZn是槽植对。
  • 知识问答型对话中的NLU主要是根据用户的问题进行问句类型识别与问题分类以便于更精准的进行信息检索或文本匹配而生成用户需要的知识知识、实体、片段等。
  • 推荐型对话系统中的NLU就是根据用户各种行为数据和爱好进行兴趣匹配以便于找到更精准的推荐候选集。

二、多轮对话的定义

多轮对话的目的是将初步用户意图转化为明确用户指令。

多轮对话是一种在人机对话中初步明确用户意图之后获取必要信息以最终得到明确用户指令的方式。多轮对话与一件事情的处理相对应。

将“识别用户意图之后为了获取必要信息与用户进行的有目的的多轮对话”称为封闭域多轮对话区别于识别用户意图之前为了利用上文信息所采用的『上下文替换』、『主体补全』等技术也即开放域多轮对话

封闭域对话有很明显的两个特征:

  • 输入和输出是可枚举的
    即对于用户的某特定意图必须填充指定数量的槽位后才能完成回答。
  • 对话有明确的目的且有流程
    当有槽位缺失时需要使用澄清话术。即当用户的需求中缺乏一些「必要信息」时需要对话系统主动发问引导用户将「必要信息」填充完整。

三、槽的定义

  • 理解一段文字的一种方法是标记那些对句子有意义的单词或记号。在自然语言处理领域这个问题被称为语义槽填充。
  • 从大规模的语料库中抽取给定实体query的被明确定义的属性slot types的值slot fillers。槽可以理解为实体已明确定义的属性。
  • 填槽指的是为了让用户意图转化为用户明确的指令而补全信息的过程。

槽是多轮对话过程中将初步用户意图转化为明确用户指令所需要补全的信息。一个槽与一件事情的处理中所需要获取的一种信息相对应。

将“利用用户话中关键词填写的槽”叫做词槽“利用用户画像以及其他场景信息填写的槽”叫做接口槽

我将可能包含多种填槽方式的称为槽组对应着一种信息槽组下面可能存在任意多个槽位也即任意多种填槽方式而每个槽位又都对应着『词槽』与『接口槽』两种槽位类型之一。

槽组也即与一种信息平级的概念还有一个叫做澄清话术。澄清话术是对话机器人希望获取某种信息时所使用的问句。比如『目的地』对应的澄清话术就是『您想从哪出发呢』。

上文将多轮对话定义为一件事情的处理槽组/槽定义为一种信息的获取槽位定义为信息的一种获取方式。这里我倾向于将多轮对话树结构中的一个节点定义为处理事情的一个步骤

一件事情的处理包含多个步骤每个步骤中需要补全一种或多种信息每种信息存在一种或多种获取方式。

槽

完整的多轮对话过程通常会以树的形式存在树中包含多个节点代表处理这件事情的一个步骤。而每个节点都应当有其特别的准入条件。树的根节点往往需要限制 NLU 模块的输出也即明确什么样的用户意图将会由该棵多轮对话树来处理树的中间及叶子节点往往需要根据前序槽组的填槽结果以及其他背景信息进行条件限制。

从一个开放域转入到封闭域或者从一个封闭域转入到另一个封闭域中间的跳转是需要逻辑判断的而这个逻辑判断就是准入条件

填槽的意义结合上文我们需要了解到填槽的意义有两个作条件分支多轮对话作信息补全用户意图。换言之填槽不仅是补全用户意图的方式而且前序槽位的填写还会起到指导后续信息补全走向的作用。

四、论文介绍

纯意图识别的论文不是很多而且大多是比较早期的主要是RNN、LSTM等模型详情可以参考总结|对话系统中的口语理解技术(SLU)一

纯槽填充的论文也不是很多大多也很古老主要是CRF、RNN等模型。

随后越来越多的研究开始将意图识别和槽填充结合起来逐渐成为主流详情可以参考总结|对话系统中的口语理解技术(SLU)二

Awesome-SLU-Survey资源库

参考文献
填槽与多轮对话 | AI产品经理需要了解的AI技术概念
AI说 | 你接触的各种机器人他们是怎么和你聊上天的
槽填充Slot Filling的定义、用途、意义及其他
任务型对话系统公式建模&&实例说明
对话系统综述新进展新前沿
近期任务型对话系统综述以及百度UNIT理论和实践我全都要
新分类全总结最新Awesome-SLU-Survey资源库开源

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6