日常生活中,我们常常通过参与包含一系列问答的对话获取信息。想让机器帮助我们收集信息,就需要让它具备回答对话中出现的问题的能力。为了促进这种对话问答系统的建立,近日斯坦福大学发布了数据集 CoQA。该数据集可以评估机器参与问答式对话的能力。
CoQA 数据集
此前,斯坦福大学的自然语言处理小组已经先后发表了 SQuAD 和 SQuAD2.0 数据集,其中介绍 SQuAD 数据集的论文 Know What You Don't Know: UnanswerableQuestions for SQuAD 获得了 ACL 2018 best paper。该数据集包含一系列文本和基于文本的问题、答案。针对该数据集提出的任务要求系统阅读文本后判断该问题是否可以从文本中得出答案,如果可以回答则从文本中截取某一片段做出回答。
图 1: SQuAD 数据示例 阅读文本回答问题,问题的答案为文本中某一片段图片来自 SQuAD: 100,000+ Questions for Machine Comprehension ofText
CoQA 与 SQuAD 则完全不同。它是一个基于对话的问答数据集,包含来自 8k 组对话的 127k 个带有答案的问题。这些对话涉及 7 个不同领域,每组对话的平均长度为 15 轮,每一轮对话都由一个问题(Q)和一个回答(A)组成。同时,文本中对应的片段被提取出来(R)。
图 2:CoQA 中的对话示例。Q 表示问题,A 表示回答,R 表示文本中得出答案的片段
CoQA 数据集的建立追求三个目标:
1. 体现人类对话中问题的本质
图二展示了两个人之间关于一段文本内容展开的对话。其中一人扮演提问者,一人扮演回答者。在这组对话中,除了第一个问题外,接下来出现的每个问题的理解都需要参照之前的对话历史。例如 Q5(Who?)只有一个单词,不了解之前的对话语境根本不可能理解这个问题。这样简短的提问方式是人类对话中有效的策略。但现存大多数问答模型依赖于问题和文本的词汇相似度,难以处理这样简短的问题。目前也没有一个大规模的基于对话历史的阅读理解数据集,填补这一空缺正是研究者设计 CoQA 的主要目的。
2. 答案的自然性
许多现存数据集将答案限定为文本中的一个片段,称之为答案抽取。但通过这种方法得到的答案往往十分生硬,不够自然。有时这种方法也无法得到正确答案。比如图中的 Q4(How many?)。在CoQA 中,答案没有设定固定的格式,更为自然灵活。
3. 问答系统的鲁棒性
现存的数据集大多专注于某一个领域,难以测试问答系统的泛化能力。CoQA 的数据则来自于 7 个不同的领域:儿童故事、文学、初高中英语考试、维基百科、科普文章和 Reddit(新闻网站)。来自最后的两个领域的数据被用于跨领域测试。
图 3:CoQA 与现存数据集的比较。CoQA是基于对话的问答数据集,涉及的领域更广泛
针对每一组对话研究者雇佣两个标注者,一个作为提问者,一个作为回答者。这种做法与选择单一标注者相比具有显著的优势:两个人针对特定文本内容开展的对话更为自然;当提问者提出模糊的问题或是回答者给出了错误的答案时,另一人可以进行汇报,让研究者识别出那些工作效果较差的人员;两位标注者还可以在另外的聊天窗口探讨一些规则。这些措施避免了垃圾问题和回答的产生,保证了数据集的质量。
研究者希望提问者尽量避免使用原文本中出现的词语,而回答者尽量使用原文本中出现的词。因此他们为提问者和回答者设计了不同的接口页面。当提问者在文本框内输入原文本中已经出现的词语时,会收到转换表述方式的提醒。而对于回答者,文本中的相关内容被自动拷贝到答案框内,允许回答者编辑修改。结果显示,78% 的答案至少被修改一处。
有些文本仅仅包含一个实体,针对其产生的对话往往只关注这一个实体对象,较为简单。因此研究者只选用包含多个实体的文本片段用于建立数据集。
为了进行系统的跨领域泛化能力,研究者将七个领域分为 in-domain 和 out-of-domain 两组。In-domain 中,每个领域的数据分别选出 100 条用于验证集和测试集,其他的数据全部用于训练集。而 out-of-domain的数据则仅选出 100 条用于测试集,而不包含于训练集和验证集。
一些问题的答案可能有多种形式。为了处理问题的多样性,研究者对验证集和测试集中的每个问题额外收集三个答案。由于数据是对话的形式,因此每个问题会影响它的答案,并影响下一个问题。为了保证对话的连续性,研究者将额外问题的收集设计为一个猜测原答案的游戏。在游戏中,首先展示问题,参与者给出答案后,再展示原答案,要求参与者根据原答案修改自己的答案。