任务驱动型人机对话|学习笔记

简介: 快速学习任务驱动型人机对话

开发者学堂课程【达摩院智能语音交互 - 人机对话技术浅析任务驱动型人机对话】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/42/detail/959


任务驱动型人机对话

 

内容介绍:

一、任务驱动型人机对话

二、自然语言理解(NLU )

三、NLU 常用神经网络方法

四、BERT 联合建模意图分类和槽填充

 

一、任务驱动型人机对话

 image.png

一般沿用如上的流程框图。用户给出一条智能语言的指令,例如例子中的找一部电影,通过语言给出,人机系统在入口前会接入一个ASR的语音识别系统来将语音转为文字。

文字会通过自然语言理解模块即NLU模块,功能识别输入块的语义和意图,获得任务相关的语义信息。例如上图中NLU模块识别出电影领域,意图为寻找电影,其中的演员为bill murry。(NLU模块在日后会详细介绍。)接着信息流会进入到对话管理模块,其中包括对话状态追踪和对话决策模块。

对话管理DM控制着人机对话的过程。DM会根据对话的历史信息来决定对用户的反应。其中对话状态追踪主要为回复和更新对话的状态例如NLU模块的一些输出,用户的特征等。对话决策模块基于当前的对话状态选择接下来的合适的动作。

对话管理常会涉及到与领域相关的知识库的交互,例如在该地址中,机器会在知识库中查找bill murray电影,并发现bill murray出现过很多部电影。因此对话管理模块会做出一个请求电影发行年份的动作。对话管理模块主流的方法一般是基于启发式的方式,当前正在探索,技术并不够成熟。

接着请求电影的动作通过自然语言NLG模块生成自然语言的语句:是什么时候发行的,NLG方法有基于神经网络的方法,但报告中不会具体描述。

NLG后一般也会接TTS的语音合成系统,TTS会将文字转为语音和人类进行交互。最后从NLU到DM再到NLG形成了一个完整的任务型驱动型的人机对话流程。

 

二、自然语言理解(NLU )

领域分类 Domain Classification(就是将用户输入进的自然语言语句划分到某个特定的领域,例如电影领域、餐馆领域、航班领域等。一般不同的领域后会对接不同的知识库。例如电影领域后会接一个与电影相关的知识库)

电影,餐馆,航班,..

意图分类 Intent Classification(例如在航班领域,常用的意图有航班时间、机票费用、地面服务等。意图分类模块就是将用户的语句分类到某个意图上)

航班时间,机票费用,地面服务...

槽填充 Slot Filling(就是将某些槽填上对应的槽值。一般用key value形式来表示。例如在航班领域,出发城市为一个槽,当前语句对应的一个槽值为杭州,出发月份为另一个槽,对应的槽值为四月。)

出发城市=“杭州”,出发月份=“四月”,...

例子:

杭州机场有什么地面交通?(用户的自然语言输入)

领域:航班(NLU模块划分到一个航班领域)

意图分类和槽填充:地面服务(城市名=“杭州”)

 

三、NLU 常用神经网络方法

领域分类

CNN,LSTM,Transformer

意图分类

CNN,LSTM,Transformer

槽填充(一般会当成一个序列标注的问题来解,给输入的领域打上标签,例如哪些属于城市名)

Sequence labeling approaches

BiLSTM+CRF,Transformer(常用的方法)

流水线pipeline:领域分类->意图分类->槽填充

为什么不联合意图分类和槽填充?(近年来业界关注到了该问题,2016年 Sequence-based 与 Parallel 方法都尝试将意图分类和槽填充联合起来。而不是使用一个 pipeline 流水线的模式。)

Sequence-based (Hakkani-Tur et al, 2016),Parallel (Liu and Lane, 2016)

 

四、BERT 联合建模意图分类和槽填充

BERT for Joint Intent Classification andSlot Filling (Chen et al., 2019)(具体细节可参考公开论文)

优点:

预训练 BERT 缓解对话标注数据稀少造成的泛化能力较弱问题

巧妙地利用 BERT 结构联合建模意图分类和槽填充

在两个 benchmark 获得 SOTA

方法原理图如下:

image.png

BERT 模型和一个特殊的 talker CLS 会被用来做 Intent 分类。其它的会被用来做 Slot Filling。

相关文章
|
机器学习/深度学习 数据采集 数据处理
掌握时间序列特征工程:常用特征总结与 Feature-engine 的应用
本文介绍了时间序列特征工程,包括滚动统计量、滞后特征、差分和变换等技术,用于提升机器学习模型性能。文章还推荐了Python库`feature-engine`,用于简化特征提取,如处理缺失值、编码分类变量和进行时间序列转换。示例代码展示了如何使用`feature-engine`提取时间戳信息、创建滞后特征和窗口特征。通过创建管道,可以高效地完成整个特征工程流程,优化数据预处理并提高模型效果。
1764 15
|
机器学习/深度学习 编解码 文件存储
YOLOv8改进 | 融合改进篇 | BiFPN+ RepViT(教你如何融合改进机制)
YOLOv8改进 | 融合改进篇 | BiFPN+ RepViT(教你如何融合改进机制)
1596 1
|
3月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
594 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
9月前
|
运维 虚拟化 Windows
Hyper-V Win8虚拟机启动错误修复教程
针对Hyper-V Win8虚拟机启动错误,本教程提供详细修复步骤。首先进行硬件兼容性检查,确保CPU支持虚拟化并启用,同时检查内存和存储空间是否充足。接着以管理员身份登录,使用事件查看器排查错误。管理Hyper-V服务,确保相关服务正常运行。检查虚拟机状态,优化资源分配,并修复虚拟硬盘文件。更新系统和重装Hyper-V组件也是有效手段。最后,排查硬件故障、备份数据及处理第三方软件冲突。通过这些步骤,多数启动问题可得到解决。
|
10月前
|
图形学
Unity 射线移动物体Ray
在Unity中,通过射线检测实现3D物体的拖拽和移动。射线由起点和方向组成,使用`Physics.Raycast`检测与物体的交点。点击物体时,记录位置偏移量,拖动过程中更新物体位置。代码包括基本拖拽和上下拖动功能,适用于正交摄像机场景。测试时为物体设置特定标签(如"JQR")以便区分和操作。 示例代码展示了如何通过鼠标事件控制物体移动,并结合层级掩码优化射线检测。具体实现包括:点击选中物体、拖动更新位置、释放鼠标取消选择。此外,提供了上下拖动的额外功能,通过按键切换模式。
|
供应链 监控 数据可视化
智能库存方案:直击日常管理痛点,释放效益潜能
Leangoo 通过智能化仓储管理和智慧管理理念,解决了库存管理中常见的盘点繁琐、出入库混乱、补货滞后等问题。它提供精准的任务规划、可视化流程管理及智能预警系统,有效提升了库存管理的效率和准确性,促进了跨部门协作与沟通,开启了库存管理的新篇章。
1131 5
|
机器学习/深度学习 数据采集 算法
机器学习入门:scikit-learn库详解与实战
本文是面向初学者的scikit-learn机器学习指南,介绍了机器学习基础知识,包括监督和无监督学习,并详细讲解了如何使用scikit-learn进行数据预处理、线性回归、逻辑回归、K-means聚类等实战操作。文章还涵盖了模型评估与选择,强调实践对于掌握机器学习的重要性。通过本文,读者将学会使用scikit-learn进行基本的机器学习任务。【6月更文挑战第10天】
1412 3
|
Linux Docker 容器
docker 容器大小查看及清理docker磁盘空间
docker 容器大小查看及清理docker磁盘空间
2068 0
|
Java 测试技术
SpringBoot 项目启动内存占用过高优化以及内存查看
SpringBoot 项目启动内存占用过高优化以及内存查看
1725 0
|
机器学习/深度学习 自然语言处理 PyTorch
NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、GPT-1…你都掌握了吗?一文总结语音识别必备经典模型(1)
NNLM、RNNLM、LSTM-RNNLM、Bi-lstm、GPT-1…你都掌握了吗?一文总结语音识别必备经典模型(一)
522 0