研究任务型对话系统,首先得从数据集采集说起,学术界需要公开的数据集来证明模型的效果,工业界更需要以数据集为基础来构建更鲁棒的对话系统,那么业界成熟的对话系统数据集有哪些呢,对于多轮,如何更科学的采集数据减少错误呢,本文调研了一些近来一些方案供参考。

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


网页给出一个表格,众包工作人员需要浏览对话历史记录。

  1. 通过在本回合解释用户输入填写表单(顶部绿色),并根据历史记录和数据库结果键入适当的响应( 底部绿色)。 提交表单时更新数据库搜索结果。 表单可以分为infrom slot和可request slot,包含state tracker所需的所有标签。
  2. 还需要输出回应

其优势在于:

每个人按轮次来标注,需要查看历史对话记录。使得数据的采集可以并行,减少标注者等待时间。

主要缺点

  • 可能不会涵盖所有的交互。(人主导)
  • 可能包含不适合用作培训数据的对话(例如,如果群众工作者使用过于简单化或过于复杂的语言)
  • 对话注释中可能有错误,需要开发人员过滤和清洗。

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

通过自动化任务无关的步骤以减少建立对话数据集所需的代价,主要包含以下模块

  1. 对话开发者提供任务Schema(intents&Slots)和API客户端,
  2. 自动机器人(User Bot&System bot)生成对话轮廓Outlines,(一个agenda based用户模拟器和一个基于有限状态机器的system agent)
  3. 众包重写成自然语言表达并验证slot span。
  4. 在数据集上用监督学习训练对话模型。

    生成大纲与段落的示例。

    用户根据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

【多轮对话】任务型多轮对话数据集和采集方法相关推荐

  1. 对话中情绪识别,研究挑战、数据集和前沿方法

    对话中情绪识别,研究挑战.数据集和前沿方法: https://zhuanlan.zhihu.com/p/86777515

  2. 对话式AI系列:任务型多轮对话的实践与探索

    移动互联网带来了大数据的普及,摩尔定律预言了计算机硬件的发展,深度学习则借助这阵东风实现了技术上的突破,人工智能成功进入大众视野,并改变了人们的日常生活. "小X同学,请打开电视" ...

  3. 模块结构篇:7.1)动力型塑料齿轮轮系设计步骤详解

    本章目的:详解塑料齿轮轮系设计步骤,设计出漏洞少的动力型塑料齿轮轮系. 本篇博文只是对机械手册上的内容进行详细的解读,更加详细的内容见机械设计手册第六版第三卷. 但作者见实例中有些尺寸公差明显高于普通 ...

  4. 小天鹅XQB30-7型波轮全自动洗衣机控制系统分析

    一.小天鹅XQB30-7型波轮全自动洗衣机小天鹅XQB30-7型波轮全自动洗衣机的控制电路由CXD-Q-3型电动式程序控制器.电源开关.水位选择开关.指示灯.蜂鸣器等构成,如图4-24所示. 1.CX ...

  5. TokenInsight 对话首席——交易制胜,二级市场数据与趋势

    邀行业首席,谈市场现状,见趋势未来!第15期<对话首席>线上直播,于7月27日(周六)下午3点举办. 本次<对话首席>特邀BCtrend.io.coinwalle.com 创始 ...

  6. c语言实现图片轮播,纯css实现轮播图

    轮播图的实现原理其实是比较简单的 举个例子 main的宽度是100px div-main的宽度是500px 我们用js控制div-main往左或往右移动,这样就实现了轮播,简单把 好了,先介绍个 cs ...

  7. kafka时间轮linux时间轮,Kafka解惑之时间轮 (TimingWheel)

    Kafka中存在大量的延迟操作,比如延迟生产.延迟拉取以及延迟删除等.Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定 ...

  8. 北京涛思数据获得 Pre A 轮融资,专注时序空间大数据领域

    北京涛思数据科技有限公司(TAOS Data)宣布完成Pre A轮融资,参与此轮投资的是永辉瑞金和温青投资.此前,公司曾于2017年6月获得来自明势资本和蛮子基金的天使投资. 据悉,完成此轮融资后,涛 ...

  9. axure轮播图怎么设置循环轮播_Axure教程:轮播图制作步骤详解

    不管是在PC端还是移动端,轮播图是常见的设计元素.下面详细讲解轮播图的制作步骤. 作为Axure初学者,把最近学到的记录下来,和大家一起学习. 如何实现轮播图: 循环展示轮播图片: 将圆点与轮播图一一 ...

  10. 关于element-ui中轮播图手动切换轮播图片

    文章目录 前言 一.关于element-ui中轮播图手动切换轮播图片 二.解决方案 1.查看element-ui中Carousel 走马灯组件的方法 2.解决方法 结尾 前言 在开发过程中发现项目中轮 ...

最新文章

  1. Java8中Lambda表达式的10个例子
  2. C#语言与面向对象技术(4)
  3. ubuntu笔记(二) ubuntu上安装 mysql
  4. Mac-远程连接Mac
  5. 深入理解JVM内存区域与内存分配
  6. mysql 二次 聚合,MySql-聚合查询
  7. 【渝粤题库】广东开放大学 物业财税管理基础 形成性考核 (2)
  8. Observers:让 ZooKeeper更具可伸缩性 | 时光机
  9. java基础—网络编程———聊天窗口的建立
  10. 拓端tecdat|R语言用Garch模型和回归模型对股票价格分析
  11. 华硕固件Linux-arm,AC86UASUS固件交叉编译的问题
  12. 方波信号小波去噪matlab,Matlab小波去噪
  13. android 应用开启以后,动态检测并或者相机权限。
  14. 程序员做外包有前途吗?
  15. 《薛兆丰的经济学课》课程总结5--需要协调
  16. Android内存优化:Reckon(二)
  17. Python:求列表的最大数以及下标
  18. 我把海外抖音TikTok当副业,一周赚了7000块:想给有梦想的人提个醒!
  19. violate关键字的理解
  20. 使用PHPExcel类库编写一个快捷的导出函数

热门文章

  1. 程序员那些必须掌握的排序算法(上)
  2. 万字深度报告丨数据中心投资价值全解析
  3. 圣诞节桌面特效圣诞树程序(含运行效果和百度网盘直接运行程序分享)
  4. 图像滤镜艺术---美颜相机之高级柔焦效果实现
  5. 如何优雅的(不花钱)获取一本技术图书
  6. keras学习笔记--交叉熵
  7. 学习光线跟踪一样的自3D表征Ego3RT
  8. HDU - How far away ?(DFS+vector)
  9. 时间序列复杂性的度量—近似熵和样本熵
  10. 数据库使用SHADOW系统实现高可用性