在开放领域对话系统中,由于缺少包含知识标注、涵盖多个话题的多轮对话语料的支撑,知识驱动对话中的知识交互的研究受到了一定的限制。如可以在多轮对话中有效的对知识的交互进行建模,则可以极大地提升对话系统的逻辑性,信息量,可解释性等智能化程度,从而带来更好的用户体验。

在本次分享中,讲者将介绍一个最新构造的知识驱动的中文多轮对话数据集KdConv,并分析知识建模在对话系统中的应用。


一、介绍

a)研究背景




cladue2多轮对话 python 多轮对话数据集_cladue2多轮对话 python


背景知识对对话系统至关重要,有两大类主要应用:1) 搜索和问答类型的场景;2) 自然语言理解类的场景。

  • 对于任务导向对话系统,背景知识一般被定义为槽值对,为问答和推荐提供了必要的信息;
  • 对于开放域对话系统,它有助于生成更具有信息量和吸引力的回复;
  • 从形态上来说,背景知识可以划分成结构化知识图谱或非结构化文本。


cladue2多轮对话 python 多轮对话数据集_cladue2多轮对话 python_02


现有的带有外部知识的开放域对话语料中,根据收集方式的不同,大致可以分为两个类别:

  • 利用现有的对话数据集,根据上下文标注相关的外部知识:
    ▪常用的标注方法有:命名实体识别(NER),字符串匹配,人工评分和规则过滤等;
    ▪但是也有缺点,不匹配的知识会为数据集带来噪音,不利于模型的训练;
  • 基于给定的背景知识,由人类标注者从头开始构造对话数据集:
    ▪有些语料可能缺少轮次级别的标注;
    ▪对话内容局限于1-2个给定的话题,或缺少话题之间的关系:限制了对多样化的话题转移和知识规划的建模。

b)研究动机


cladue2多轮对话 python 多轮对话数据集_结构化_03


  • 当前带有知识标注的涵盖多个话题的对话数据集有所欠缺;
  • 对于进一步的知识交互的建模方面(例如话题转移和知识规划),现有的基于知识的对话数据集存在局限性

二、调研部分

a)与现有的基于知识的对话数据集进行对比


cladue2多轮对话 python 多轮对话数据集_数据集_04


可以看到,KdConv中的知识形式包含了非结构化的文本和结构化的图谱,并提供了轮次级别的知识标注。语料涵盖三个领域(电影,音乐和旅游),可以用于领域迁移的研究。KdConv中的对话的平均轮次为19.0,每段对话平均涉及话题数量2.3个。

b)KdConv样例数据


cladue2多轮对话 python 多轮对话数据集_ocr中文数据集_05


一个音乐领域的数据样例。左侧为对话内容,斜体内容为话题,下划线内容则为背景知识。右侧展示了精细的知识标注,既包含了结构化的知识(如飞得更高-发行日期-2005年3月19日等),也包含了非结构化的知识(如information一行)。


cladue2多轮对话 python 多轮对话数据集_结构化_06


在上述对话所使用的知识三元组构成的知识图谱中,斜体文本和圆圈表示话题(指知识三元组中不同的头实体),该图谱还体现了话题转移的过程。

三、数据构造

a)领域相关的知识图谱

构建知识图谱的过程:

1.从几个相关的网站(豆瓣、去哪儿等)中爬取热门实体,如电影和电影明星、音乐和歌手以及景点,将其作为起始实体,以减少特定领域知识的范围;

2.在XLORE(一个大型英汉双语知识图谱)中过滤知识三元组很少的起始实体;

3.以起始实体作为起点,在XLORE的三跳范围中检索其邻居实体,以支持对话能够进行合理的话题转移;

  • 对于旅游领域,由于XLORE中有关起始实体的知识三元组较少,该领域的知识图谱仅从网站上爬取。这也导致了旅游领域的知识图谱的统计特征与其他领域有所差别。

4.将这些实体和关系整合为领域相关的知识图谱。

从下面的统计信息来看,电影领域无论是实体数量,关系数还是三元组数量都是最多的。旅游领域则由于仅基于网站爬取,关系数和三元组都较少。


cladue2多轮对话 python 多轮对话数据集_ocr中文数据集_07


b)构建对话数集

1.在众包平台上,招募标注者,在无特定目标和约束的情况下生成多轮对话;

2.在对话过程中,两个发言者都可以访问知识图谱;

3.要求标注人员记录构造发言所用的相关的知识三元组,以提供轮次级别的知识标注;

4.指示标注人员从起始实体开始对话,并鼓励他们将对话的话题转移到其他实体;

5.过滤掉低质量的对话,例如包含语法错误、对话内容与知识事实不一致等,以保证对话数据的质量。

c)统计指标


cladue2多轮对话 python 多轮对话数据集_ocr中文数据集_08


三个领域各自收集了1500个对话,数据集按照8:1:1切分为训练集、开发集和测试集。从对话的轮次数与对话所涉及的话题数来看,电影领域的对话与音乐、旅游领域存在明显不同。从对话数据中包含的实体数、三元组数目来看,三个领域也存在较大差别。


cladue2多轮对话 python 多轮对话数据集_cladue2多轮对话 python_09


上图表示在前n个回合中讨论了至少k (k = 2, 3, 4) 个主题的对话数量统计。随着对话轮次的增长,包含3个或4个主题的对话比例会变大。

这验证了深入讨论多个话题通常需要足够多的对话轮次,因为简短的对话通常不足以涵盖多个话题,更难以产生话题之间的自然过渡。


cladue2多轮对话 python 多轮对话数据集_结构化_10


上面的表格显示了电影领域的1跳、2跳、3跳范围内,各自频次最高的三种话题转移模式,其中Tn表示对话的第n个主题,Tn →X→Tn + 1表示Tn经由关系X跳转到Tn + 1。可以看到KdConv中话题转移的模式多样而复杂。“−Information→”则表示Tn + 1出现在了有关Tn的非结构化知识文本中,而经由知识文本跳转话题的模式出现得相对更少,表明比起非结构化文本,人们更倾向于基于结构化关系转移话题。

四、实验部分

a)实验所用基准模型


cladue2多轮对话 python 多轮对话数据集_ocr中文数据集_11


包含了三个基于生成的模型,一个基于检索的模型,以及通过键值存储模块进行知识增强的模型。

基于生成的模型:

1.Language Model:建模对话内容的语言模型;

2.Seq2Seq:带注意力机制的序列到序列模型;

3.HRED:带有层次化结构的Seq2Seq模型。

基于检索的模型:BERT,训练任务是在给定上下文的情况下预测候选回复是否是真实回复。

通过键值存储模块进行知识增强:将头实体和关系作为键、尾实体作为值,在上述模型中引入对话相关的知识图谱以利用知识信息。

工具:CoTK

一种开源工具包,用于语言生成模型的快速开发和公平测评,包含了当前主流的语言生成任务的评价方法。

GitHub: https://github.com/thu-coai/cotk

b)评价

(1)自动评价


cladue2多轮对话 python 多轮对话数据集_ocr中文数据集_12


生成模型和检索模型的最佳结果分别用粗体和下划线标出。“+know”表示知识增强的模型。

实验结果表明,模型可以通过引入背景知识来增强性能,但多轮对话中的知识建模仍有很大的研究空间。

结果还显示,各个模型的性能以及知识增强的效果在不同领域之间差别较大,说明迁移学习和领域转换方面同样值得进一步研究。

(2)人工评估:


cladue2多轮对话 python 多轮对话数据集_三元组_13


指标(0-2分制):

  • 流利度:回复是否流畅自然;
  • 连贯性:回复是否与上下文及背景知识相关、一致;

评价方式:

  • 每个领域500个样本,3个标注者对样本打分,打分结果如上图所示;
  • 从标注一致性的角度来看,Fleiss卡帕值:在0.37到0.74之间
  • 3个标注者打分相同的比例:在68.14%至81.33%之间

从结果来看,融入知识图谱的信息后,HRED模型获得了一定的性能提升。

c)案例分析


cladue2多轮对话 python 多轮对话数据集_数据集_14


上图包含了旅游领域和电影领域的两个案例,融入知识图谱信息后,模型生成的对话能够更有效地利用知识,但仍然不能有效处理需要利用非结构化文本构建回复的场景。

五、结论

  • 本工作提出一个知识驱动的中文多领域对话数据集:KdConv。该语料库包含4.5K个对话和86K条语句,平均对话轮数为19.0;
  • 实验表明,通过引入背景知识,基准模型的性能可以获得一定的提升,但对话中的知识交互建模在未来的工作中仍然有很大的研究空间。

竞赛:

SMP2020-ECDT(中文人机对话技术评测,任务2)


整理:闫昊
审稿:郑楚杰