大规模跨领域中文任务导向多轮对话数据集及模型CrossWOZ

2020 年 4 月 16 日 AINLP


本文包含以下内容

  • 2020年刚出的大规模中文多轮对话数据集的介绍

  • 多轮对话的一些常见任务

  • 多轮对话的一些常见模型





基本概念


什么是对话?


我:你好!

机器人:你也好!


多轮对话呢?


我:你好!

机器人:你也好!

我:吃饭了伐?

机器人:当然没有 

(来回好几回合)


任务导向多轮对话呢?


我:帮我订一张机票!

机器人:哪里呢?

我:北京的。

机器人:订好了。

(不是闲聊,有目的性的对话)


跨领域任务导向多轮对话呢?


我:帮我订一张机票!

机器人:哪里呢?

我:北京的。

机器人:订好了。

我:再在附近订个五星酒店。

机器人:北京饭店你看可以吗?
(用户有两个以上目
(订机票和酒店)要通过对话实现)


中文?突出中文是因为之前的大规模开源多轮对话数据集MultiWOZ是英文的。MultiWOZ在推动英文多轮对话诞生了很多研究。因此这次清华大学计算机系制作了中文的数据集以填补中文任务导向对话数据的空白



论文地址:https://arxiv.org/pdf/2002.11893.pdf



数据集介绍



数据集参数

CrossWOZ包含 6K 个对话,102K 个句子,涉及 5 个领域(景点、酒店、餐馆、地铁、出租)。平均每个对话涉及 3.2 个领域,远超之前的多领域对话数据集,增添了对话管理的难度。 

特点

  1. 用户在某个领域的选择可能会影响到与之相关的领域的选择,在跨领域上下文理解更有挑战。

  2. 第一个大规模中文跨领域任务导向数据集。

  3. 在用户端和系统端都有详细的对话状态记录,标注信息全面。

与其他数据集的对比

跨领域对话的数据样例

数据标注方法

  1. 基础数据库的构建。通过爬虫从网络上获取了北京市的酒店/旅游景点/饭店以及地铁和出租车信息。

    比如说Attract景点有465个,景点有9个槽。Hotel和8+37个槽。比如是否要叫醒服务等。       

  2. 目标构建。论文通过算法自动生成标注人员的对话目标。

上面的id1,2,3就是自动生成的目标。标注人员要以完成这三个目标(寻找免费旅游景点和订附近酒店以及出租车)作为目和系统进行对话。

        3. 数据标注。论文雇佣大量工人分别充当用户和系统。用户向系统订酒店景点,然后系统回复用户预约的相关信息。所有的对话数据都是用户生成的。同时用户在对话过程中还需要对用户状态和系统状态进行标注。具体的过程如下图。

数据和模型下载地址:https://github.com/thu-coai/CrossWOZ



常见任务



有了多轮对话数据集,而且标注这么详细,我们就有研究多轮对话的条件了。

多轮对话有以下五个研究方向:

  • 多轮对话下的自然语言理解(Natural Language Understanding)

  • 对话状态追踪(Dialogue State Tracking)

  • 对话策略学习(Dialogue Policy Learning)

  • 自然语言生成(Natural Language Generation)

  • 用户模拟器(User Simulator)


多轮对话下的自然语言理解(NLU)

多轮对话下的NLU通常是对用户的输入语句让模型填满这样一个四元组


(intent=Inform, domain=Attraction, slot=fee, value=free)


通过意图识别和ner我们就可以完成nlu。本文提出了一种BERTNLU-context的模型来做多轮对话下的nlu。BERTNLU不必多说,就是把bert作为encoder对输入文本进行编码。然后为了利用上下文信息,BERTNLU-context会把对话历史的之前三句话用sep分割作为文本输入另一个BERT模型,取出那个模型的cls位置变量作为上下文表征。然后把该上下文表征和用户输入的语句的特征向量一一concat再进行ner和文本分类,效果很好。


对话状态追踪(DST)

DST的目地是根据用户和系统的对话历史,动态识别出用户的目地,并转为预先定义好的格式。

本文介绍了两种方法做DST

  1. RuleDST。设计一些规则动态识别用户状态,比如识别到用户说任意一个槽就给它填上。

  2. TRADE。TRADE模型需要专门的篇幅来介绍它。

TRADE模型
首先它要解决的问题是如何在一个涉及多个领域的对话中利用跨领域(domain)的信息来完成一个综合的任务。举个例子:吴先生要去一家餐厅约会,使用智能助手订好了餐厅,其中收集了 餐厅名 时间 这些信息(slot),而之后吴先生还需要预约一辆出租车回家,那么此时他会期望智能助手明白上车点就是餐厅。那么问题来了,在传统的基于一个个独立领域的对话系统中,两个不同领域之间相互独立,不共享信息,你订你的餐厅,订完了说一句“我要订餐馆回家的出租车”,好嘞进入到订车的领域,从头开始问”您从哪出发呀“。显然不够聪明。TRADE就是试图所有的domain使用同一个模型,并利用起前面几句对话历史,来预测出当前吴先生说的这句话的状态(state):(domain,slot,slot value)。就能判断这是【订出租车】的domain,slot是出发点,还能从之前吴先生确认的餐馆名知道出发点就是XX大酒店。

那么,这么聪明的性能要如何做到呢?
TRADE由三部分组成:

Utterance Encoder, Slot Gate, State Genrator。
Utterance Encoder(双向GRU) :把包括当前句子的对话历史所有单词embedding拼接(l轮)编码,得到H_t=[H_1,H_2,...,H_XL]。
State Generator:首先将所有可能的domain和slot配对得到J个(domain,slot)对,将它们用用GRU解码,解码过程中得到一个隐藏层 h_dec^jk 将他映射到词汇空间P_vocab^jk,同时还用这个隐藏层来计算对话历史的attention P_history^jk,加权而后得到context vector cj0. P_vocab和P_history加权相加(权值是另一个可训练sigmoid元得出)后就是最终某个(domain,slot)对基于当前对话历史的在所有单词上的概率分布。这一过程要做J次。考虑P_history和P_vocab的目的是能让模型同时可以从对话历史中找出信息,又有机会得到未在历史中出现过的单词。
Slot Gate G_j: 每个(domain,slot)对都有一个Gate,将它们每个都对上面由对话历史得到的context vector cj0做一个计算Gj = Softmax(Wg ·(cj0)>) ∈R3,得到don't care, none,ptr三个选项的概率。如果是前两者,那么无需填入特定槽值,若为ptr则将State Generator得到的槽值填入对应槽。也即Slot Gate的工作是找出要填的哪个domain的哪个槽。而State Generator是找出这个槽的值。
至此,TRADE便利用对话历史得到了状态(domain,slot,value), 对每一段对话历史的计算都不依赖于某一个domain。


对话策略学习(DPL)

DPL就是根据之前的对话状态和用户输入,生成一个系统action。在我们做传统的基于状态机的多轮对话中,对话策略通常是基于规则的。本论文介绍了ConvLab-2对话平台下使用SL polciy完成了监督学习下的对话策略学习模型。


自然语言生成(NLG)

我们有了用户和系统的状态和对话动作,同时又有用户生成的自然语言。那么便可以制作生成模型来生成灵活的系统回复语言。本文用两种方式做这个,一个是基于模板的TemplateNLG,一个是SC-LSTM。两个效果如下:

SC-LSTM模型参考地址:https://github.com/andy194673/nlg-sclstm-multiwoz


用户模拟器

用户模拟器是用来模拟用户说话的。最简单的模拟器就是规则型的比如约定第一句话说订酒店,第二句话说要五星的。

用户模拟器对多轮对话系统的自动化评估和对话策略学习都是很有帮助的。本文也构建了一种rule-based 用户模拟器。比如当用户的目标中有未填充的槽时,用户模拟器就会不断追问该槽值,直到所有目标的槽全部填充为止。


论文结果

1 BERTNLU部分准确率都很高。

2 DST/SL policy准确率在80以下,具有很大提高空间。

3 越是跨领域,对话状态越难追踪。


推荐阅读

AINLP年度阅读收藏清单

当当的羊毛,快薅,这一次要拼手速!

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

From Word Embeddings To Document Distances 阅读笔记

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

可解释性论文阅读笔记1-Tree Regularization

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


登录查看更多
10

相关内容

专知会员服务
153+阅读 · 2020年4月21日
【EMNLP2019教程】端到端学习对话人工智能,附237页PPT下载
专知会员服务
67+阅读 · 2019年11月25日
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
78+阅读 · 2019年10月12日
【清华ACL2020长文】KdConv:多领域知识驱动的中文多轮对话数据集
深度学习自然语言处理
11+阅读 · 2020年4月12日
微软亚洲研究院发布业界最全面的语义分析数据集MSParS
微软研究院AI头条
7+阅读 · 2019年5月13日
中文公开聊天语料库
专知
11+阅读 · 2019年3月9日
SMP2018中文人机对话技术评测
哈工大SCIR
12+阅读 · 2019年3月6日
干货下载 | 中文自然语言处理 语料/数据集
七月在线实验室
30+阅读 · 2018年12月27日
用Rasa NLU构建自己的中文NLU系统
待字闺中
17+阅读 · 2017年9月18日
Arxiv
3+阅读 · 2019年3月1日
Arxiv
14+阅读 · 2018年5月15日
VIP会员
相关资讯
【清华ACL2020长文】KdConv:多领域知识驱动的中文多轮对话数据集
深度学习自然语言处理
11+阅读 · 2020年4月12日
微软亚洲研究院发布业界最全面的语义分析数据集MSParS
微软研究院AI头条
7+阅读 · 2019年5月13日
中文公开聊天语料库
专知
11+阅读 · 2019年3月9日
SMP2018中文人机对话技术评测
哈工大SCIR
12+阅读 · 2019年3月6日
干货下载 | 中文自然语言处理 语料/数据集
七月在线实验室
30+阅读 · 2018年12月27日
用Rasa NLU构建自己的中文NLU系统
待字闺中
17+阅读 · 2017年9月18日
Top
微信扫码咨询专知VIP会员