【多轮对话】任务型多轮对话数据集和采集方法
研究任务型对话系统,首先得从数据集采集说起,学术界需要公开的数据集来证明模型的效果,工业界更需要以数据集为基础来构建更鲁棒的对话系统,那么业界成熟的对话系统数据集有哪些呢,对于多轮,如何更科学的采集数据减少错误呢,本文调研了一些近来一些方案供参考。
WoZ&MultiWOZ
A Network-based End-to-End Trainable Task-oriented Dialogue System提出了woz framework
Neural Belief Tracker: Data-Driven Dialogue State Tracking 在woz基础上添加了两个域,命名为woz2.0
WoZ是比较早期的对话数据集,也提出了一种对话数据集采集方法:既然要训练人机对话的模型,让机器像人一样自然的交流,那么我就用人来回复,自然就能够生产拟人的对话交互。这是出发点,采集过程中会告诉标注人员用户目标,然后标注人员开始与系统对话,这里的系统也是一个人,然后两个人对话生成多轮对话流。一句话就是human2human。主要也就是界面展示的开发,user和wizard都是由众包来填写,例如:
user
user: 给出实体(infrom, request),查看历史对话和任务描述,给出适当的回应句子。 如下图
wizard
网页给出一个表格,众包工作人员需要浏览对话历史记录。
- 通过在本回合解释用户输入填写表单(顶部绿色),并根据历史记录和数据库结果键入适当的响应( 底部绿色)。 提交表单时更新数据库搜索结果。 表单可以分为infrom slot和可request slot,包含state tracker所需的所有标签。
- 还需要输出回应
其优势在于:
每个人按轮次来标注,需要查看历史对话记录。使得数据的采集可以并行,减少标注者等待时间。
主要缺点:
- 可能不会涵盖所有的交互。(人主导)
- 可能包含不适合用作培训数据的对话(例如,如果群众工作者使用过于简单化或过于复杂的语言)
- 对话注释中可能有错误,需要开发人员过滤和清洗。
Self-play
刚刚也说到人人交互由人主导,对话交互覆盖、准确性等会有一些问题,那么有些文章就提出通过用户模拟器和系统交互生产对话outline,由模板转化为自然语言对话flow,然后通过众包来复述对话。部分方法还会采用bootstrapping方法,通过这部分生成的数据,再训练模拟器,生成更好的会话,再来总包复述。数据集包含:
M2M:
Building a conversational agent overnight with dialogue self-play, 代码
Dialogue Learning with Human Teaching and Feedback in End-to-End Trainable Task-Oriented Dialogue Systems
通过自动化任务无关的步骤以减少建立对话数据集所需的代价,主要包含以下模块
- 对话开发者提供任务Schema(intents&Slots)和API客户端,
- 自动机器人(User Bot&System bot)生成对话轮廓Outlines,(一个agenda based用户模拟器和一个基于有限状态机器的system agent)
- 众包重写成自然语言表达并验证slot span。
- 在数据集上用监督学习训练对话模型。
生成大纲与段落的示例。
用户根据M2M生成的outline,来生成真正的对话数据集。
SGD
Towards Scalable Multi-Domain Conversational Agents: The Schema-Guided Dialogue Dataset
也是通过用户模拟和系统进行交互生成outline,通过模板生成简单会话,然后众包进行复述生成更像人的对话数据集,训练集包含16个域,而测试集包含18个域,这里测试集就要求模型具备跨域可迁移的能力。
对于数据集,其中的service、slots、intents除了名字、是否类别槽位,还有一段描述,其实是希望通过描述中更多的信息来获得其向量化表达,比如将描述用一个编码器进行embedding,提升其跨域能力。
例子如下:
Tree DST
Conversational Semantic Parsing for Dialog State Tracking
也是通过用户模拟和系统进行交互生成对话流,然后众包复述会话。区别在于将之前的dst通过句法解析的方式来建模。不过看最近貌似这种方式对于支持更多更复杂功能的语音助手流行,包括亚马逊的ASML,阿里的KAMR都有点将扁平的结构化表达转化为类树形的结构。
例子如图:
DSTC
https://zhuanlan.zhihu.com/p/200747822
来源:Amazon Mechanical Turk
dstc其实算是一个比较早的数据集,但是一直在更新,所以留到最后来讲,前期主要是通过human-machine的交互来收集对话数据集,来源是Amazon Mechanical Turk,不同点在于它还包含了automatic speech recognition (ASR)的候选集,更接近于真实情况,因为真实的语音助手就是要面对来自于asr的错误噪声等,需要在这种情况下尽量做出正确的用户反馈。数据集较多,特别是后面一次会有多个任务的数据集,也没有全了解。
DstC1: 5个slot(路线,出发点,重点,日期,时间),用户目标在对话过程中不会发生变化。
DSTC2/3: 餐馆预订,用户查询满足特定条件下的餐馆的某些信息(电话、地址等),用户目标会在对话过程中发生变化。样例: https://colips.org/workshop/dstc4/data_sample_pilot.html
DSTC4/5 :人人交互,旅游信息查询,dstc5在4的基础上增加了多语言。
DSTC6: 包含了三个任务:(原谅我不知道这些任务的中文,直接上英文原文)
- End-to-End Goal Oriented Dialog Learning
- End-to-End Conversation Modeling
- Dialogue Breakdown Detection
DSTC7: 也是三个任务:(1) Sentence Selection: using the Ubuntu corpus and Flex Data: Student – Advisor dialogues, (2) Sentence Generation and (3) Audio Visual Scene-aware dialog.
DSTC8:包含四个任务:(1) Multi-domain Task Completion, (2) NOESIS II: Predicting Responses, Identifying Success, and Managing Complexity in Task-Oriented Dialogue, (3) Audio Visual Scene-Aware Dialog Track, and (4) Scalable Schema-Guided Dialogue State Tracking.
DSTC9: 包含 (1) Beyond Domain APIs: Task-oriented Conversational Modeling with Unstructured Knowledge Access, (2) Multi-domain Task-oriented Dialog Challenge II, (3) Interactive Evaluation of Dialog, and (4) SIMMC: Situated Interactive Multi-Modal Conversational AI
DSTC10: 包含1) multi-domain dialogue state tracking and 2) task-oriented conversational modeling with unstructured knowledge access
值得注意的是DSTC2定义了dialog act一直被沿用至今,包括user act、sys act
User act
act | 包含的slot | 描述 |
---|---|---|
inform | 槽值[(s, v), …] | 用户告知系统的值,例如:饭店是xx,时间是xxx |
request | 槽位名s | 用户询问系统的槽位,例如:中国菜的药店有哪些? |
ack | None | 肯定(这里和确认很像,但是这里是会话的肯定,肯定的返回结果),例如:Okay, what’s the phone number of that place?” |
affirm | None | 认可/是的 |
negate | None | 否定/不是 |
reqalts | None | 其他、以上都不是 |
confirm | one slot (s, v) | s是可以告知的槽位,v是对应的值,例如:这个药品是同仁堂生产的吗? |
deny | one slot (s, v) | s是可以告知的槽位,v是对应的值,例如:不要国产的格列卫 |
null | None | 空、非当前域、未理解 |
reqmore | None | 还有哪些、还有更多的剂型吗 |
thankyou | 致谢 | |
help | None | 你有什么功能、你可以做什么、我可以问什么 |
repeat | None | 重复一下、你说什么 |
bye | None | |
Hello | None |
例子:
[{"act":"confirm", "slots":[["area", "centre"]]},{"act":"request", "slots":[["slot", "phone"]]},{"act":"deny", "slots":[["area","north"]]},{"act":"hello", "slots":[]},]
Sys act
act | 包含的slot | 描述 |
---|---|---|
welcomemsg | 欢迎语 | |
canthelp | list of slots | 根据用户的提供的槽位,在数据库中找不到结果。 |
canthelp.missing_slot_value | 没看懂 | |
confirm-domain | 询问用户是否询问当前域的问题。 | |
expl-conf | one pair (s, v) | 显式询问某个槽位值 |
impl-conf | one pair (s, v) | 隐式询问某个槽位值 |
inform | (s, v) | 告知某个槽位值 |
request | (“slot”, s) | 询问用户他们的目标s |
Offer | one pair (“name”, v) | 像用户推荐某个结果 |
affirm | Yes | |
negate | no | |
select | (s, v) | 给出某个槽位的多个值,让用户进行选择 |
repeat | 重复播报一遍 | |
reqmore | 询问用户是否需要更多信息。 | |
bye | Bye | |
canthear | 用户长时间未作答,提示用户 |
例子
[{"act":"request", "slots":[["slot","food"]]}]
inform(count=109), impl-conf(food=dontcare), request(pricerange)
canthelp(food=korean, pricerange=moderate)
中文
千言
2020 CCF BDCI 千言:多技能对话:收集了一系列公开的开放域对话数据,并对数据进行了统一的整理以及提供了统一的评测方式,期望从多个技能、多个领域的角度对模型效果进行综合评价
CrossWoz
https://arxiv.org/pdf/2002.11893.pdf
医患对话数据集
http://www.fudan-disc.com/sharedtask/imcs21/index.html
赛道3比较有意思,提供了一个病人模拟器,通过与病人模拟器交互,进行诊断的判断,但是比赛已近结束,联系主办方,询问数据集下载,几个老师同学都无答复。。。
清华 ACL 2020 长文 | KdConv:多领域知识驱动的中文多轮对话数据集
https://cloud.tencent.com/developer/article/1613832?from=article.detail.1904099
论文链接:https://arxiv.org/abs/2004.04100
数据和代码地址:https://github.com/thu-coai/KdConv
【多轮对话】任务型多轮对话数据集和采集方法相关推荐
- 对话中情绪识别,研究挑战、数据集和前沿方法
对话中情绪识别,研究挑战.数据集和前沿方法: https://zhuanlan.zhihu.com/p/86777515
- 对话式AI系列:任务型多轮对话的实践与探索
移动互联网带来了大数据的普及,摩尔定律预言了计算机硬件的发展,深度学习则借助这阵东风实现了技术上的突破,人工智能成功进入大众视野,并改变了人们的日常生活. "小X同学,请打开电视" ...
- 模块结构篇:7.1)动力型塑料齿轮轮系设计步骤详解
本章目的:详解塑料齿轮轮系设计步骤,设计出漏洞少的动力型塑料齿轮轮系. 本篇博文只是对机械手册上的内容进行详细的解读,更加详细的内容见机械设计手册第六版第三卷. 但作者见实例中有些尺寸公差明显高于普通 ...
- 小天鹅XQB30-7型波轮全自动洗衣机控制系统分析
一.小天鹅XQB30-7型波轮全自动洗衣机小天鹅XQB30-7型波轮全自动洗衣机的控制电路由CXD-Q-3型电动式程序控制器.电源开关.水位选择开关.指示灯.蜂鸣器等构成,如图4-24所示. 1.CX ...
- TokenInsight 对话首席——交易制胜,二级市场数据与趋势
邀行业首席,谈市场现状,见趋势未来!第15期<对话首席>线上直播,于7月27日(周六)下午3点举办. 本次<对话首席>特邀BCtrend.io.coinwalle.com 创始 ...
- c语言实现图片轮播,纯css实现轮播图
轮播图的实现原理其实是比较简单的 举个例子 main的宽度是100px div-main的宽度是500px 我们用js控制div-main往左或往右移动,这样就实现了轮播,简单把 好了,先介绍个 cs ...
- kafka时间轮linux时间轮,Kafka解惑之时间轮 (TimingWheel)
Kafka中存在大量的延迟操作,比如延迟生产.延迟拉取以及延迟删除等.Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定 ...
- 北京涛思数据获得 Pre A 轮融资,专注时序空间大数据领域
北京涛思数据科技有限公司(TAOS Data)宣布完成Pre A轮融资,参与此轮投资的是永辉瑞金和温青投资.此前,公司曾于2017年6月获得来自明势资本和蛮子基金的天使投资. 据悉,完成此轮融资后,涛 ...
- axure轮播图怎么设置循环轮播_Axure教程:轮播图制作步骤详解
不管是在PC端还是移动端,轮播图是常见的设计元素.下面详细讲解轮播图的制作步骤. 作为Axure初学者,把最近学到的记录下来,和大家一起学习. 如何实现轮播图: 循环展示轮播图片: 将圆点与轮播图一一 ...
- 关于element-ui中轮播图手动切换轮播图片
文章目录 前言 一.关于element-ui中轮播图手动切换轮播图片 二.解决方案 1.查看element-ui中Carousel 走马灯组件的方法 2.解决方法 结尾 前言 在开发过程中发现项目中轮 ...
最新文章
- Java8中Lambda表达式的10个例子
- C#语言与面向对象技术(4)
- ubuntu笔记(二) ubuntu上安装 mysql
- Mac-远程连接Mac
- 深入理解JVM内存区域与内存分配
- mysql 二次 聚合,MySql-聚合查询
- 【渝粤题库】广东开放大学 物业财税管理基础 形成性考核 (2)
- Observers:让 ZooKeeper更具可伸缩性 | 时光机
- java基础—网络编程———聊天窗口的建立
- 拓端tecdat|R语言用Garch模型和回归模型对股票价格分析
- 华硕固件Linux-arm,AC86UASUS固件交叉编译的问题
- 方波信号小波去噪matlab,Matlab小波去噪
- android 应用开启以后,动态检测并或者相机权限。
- 程序员做外包有前途吗?
- 《薛兆丰的经济学课》课程总结5--需要协调
- Android内存优化:Reckon(二)
- Python:求列表的最大数以及下标
- 我把海外抖音TikTok当副业,一周赚了7000块:想给有梦想的人提个醒!
- violate关键字的理解
- 使用PHPExcel类库编写一个快捷的导出函数