好的数据集能让生成的对话配的上你的才华-------知识驱动的中文多轮对话数据集KdConv...-程序员宅基地

技术标签: 机器学习  编程语言  人工智能  知识图谱  大数据  

AI TIME欢迎每一位AI爱好者的加入!

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

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

郑楚杰,清华大学计算机系2020级博士生,交互式人工智能组(CoAI)成员,师从黄民烈副教授。主要研究方向为开放域对话系统。已在ACL上发表数篇论文。

本次分享论文地址:https://arxiv.org/abs/2004.04100

所构建的数据库已经开源:https://github.com/thu-coai/KdConv

一、介绍

a)

研究背景

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

  • 对于任务导向对话系统,背景知识一般被定义为槽值对,为问答和推荐提供了必要的信息;

  • 对于开放域对话系统,它有助于生成更具有信息量和吸引力的回复;

  • 从形态上来说,背景知识可以划分成结构化知识图谱或非结构化文本。

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

  • 利用现有的对话数据集,根据上下文标注相关的外部知识:

    常用的标注方法有:命名实体识别(NER),字符串匹配,人工评分和规则过滤等;

    但是也有缺点,不匹配的知识会为数据集带来噪音,不利于模型的训练;

  • 基于给定的背景知识,由人类标注者从头开始构造对话数据集: 

    有些语料可能缺少轮次级别的标注;

    对话内容局限于1-2个给定的话题,或缺少话题之间的关系:限制了对多样化的话题转移和知识规划的建模。

b)

研究动机

  • 当前带有知识标注的涵盖多个话题的对话数据集有所欠缺;

  • 对于进一步的知识交互的建模方面(例如话题转移和知识规划),现有的基于知识的对话数据集存在局限性

二、调研部分

a)

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

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

b)

KdConv样例数据

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

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

三、数据构造

a)

领域相关的知识图谱

构建知识图谱的过程:

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

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

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

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

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

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

b)

构建对话数集

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

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

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

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

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

c)

统计指标

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

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

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

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

四、实验部分

a)

实验所用基准模型

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

基于生成的模型:

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

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

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

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

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

工具:CoTK

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

Paper: https://arxiv.org/abs/2002.00583

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

b)

评价

(1)自动评价

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

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

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

(2)人工评估:

指标(0-2分制):

  •  流利度:回复是否流畅自然;

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

评价方式:

  • 每个领域500个样本,3个标注者对样本打分,打分结果如上图所示;

  • 从标注一致性的角度来看,Fleiss卡帕值:在0.37到0.74之间

  • 3个标注者打分相同的比例:在68.14%至81.33%之间

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

c)

案例分析

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

五、结论

  • 本工作提出一个知识驱动的中文多领域对话数据集:KdConv。该语料库包含4.5K个对话和86K条语句,平均对话轮数为19.0;

  • 实验表明,通过引入背景知识,基准模型的性能可以获得一定的提升,但对话中的知识交互建模在未来的工作中仍然有很大的研究空间。

竞赛:

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

六、提问与回答

请问有没有尝试过基于BERT/GPT做生成的基准模型的对比结果呢,这种情况下是否会削弱knowledge的辅助提升的效果?

没有在KdConv上做过,但我在后续的工作中做了类似的尝试。如果用BERT作为编码器,不影响知识的作用。如果用GPT作为解码器,可能会和拷贝机制效果冲突(个人猜想GPT的优势在于多样性与human-like,但拷贝机制优势在于可控性,两者是冲突的)

这个训练和评价过程,是所有domain混在一起的,还是分domain分别训练评测?

分domain测评。

分开训练测评,是出于什么考量吗?还是说皆可呢?

主要是想观察不同domain知识的gap会为模型性能带来怎样的gap。

整理:闫昊

审稿:郑楚杰

AI Time欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你,请将简历等信息发至[email protected]

微信联系:AITIME_HY

 

AI Time是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

更多资讯请扫码关注

(点击“阅读原文”下载本次报告ppt)

(直播回放:https://b23.tv/bE9nHZ)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AITIME_HY/article/details/107805203

智能推荐

http 500内部服务器错误-程序员宅基地

文章浏览阅读2.7k次。http 500内部服务器错误--------------------------------------------------------------------------------一.错误表现 iis5的http 500内部服务器错误是我们经常碰到的错误之一,它的主要错误表现就是asp程序不能浏览但htm静态网页不受影响。另外当错误发生时,系统事件日志和安全事件日志都会有..._http500

Oracle Temp临时表空间及其故障处理-程序员宅基地

文章浏览阅读575次。Oracle Temp临时表空间及其故障处理 Oracle 11g中Temp临时表空间、文件的新特性 临时表空间是Oracle体系结构中比较特殊的结构。通常情境下,数据库..._ora临时表空间报错,无法打开文件

BurpSuite抓取App包,详细教程_burp抓取手机app数据包-程序员宅基地

文章浏览阅读5.4k次,点赞5次,收藏27次。进入burpsuite工具,配置代理,端口与夜神模拟器保持一致,地址选择指定地址,输入本机IPV4地址;打开burp suite工具进入Proxy,如图,点击open browser。代理选择手动,代理服务器主机名输入本机的IPV4地址(使用。查询),代理服务器端口随便输入,只要不冲突即可;输入证书名,确定,安装成功!_burp抓取手机app数据包

JAVA学习:JAVA中一些常用的方法和使用技巧_java的妙用方法-程序员宅基地

文章浏览阅读401次。目录一、修改数据结构中的Compare二、向二维数组中快速填充同一个元素:三、StringBuilder的常用方法:四、Math的常用方法:参考链接菜鸟教程五、字符串六、容器类一、修改数据结构中的CompareComparable和Comparator的区别:[https://blog.csdn.net/qq_37768971/article/detai..._java的妙用方法

【特征工程】(一)数据集中缺失值的处理_特征工程 空值处理-程序员宅基地

文章浏览阅读9k次,点赞7次,收藏53次。目录引言一、可选处理方法二、Python中Pandas库处理缺失值1.查看数据缺失值得分布情况2.删除包含缺失值的数据 2.1. 删除包含缺失值的行或列 2.2. 根据条件删除包含缺失值的数据三、Python中其他库处理缺失值四、缺失值处理案例(一)----疝气病数据集预处理1.处理缺失值,以便使用分类算法引言 数据中的缺失值是..._特征工程 空值处理

Log4j.properties配置详解-程序员宅基地

文章浏览阅读2.8w次,点赞16次,收藏92次。1 入门示例1.1 新建一个Java工程,导入包log4j-1.2.17.jar,整个工程最终目录如下1.2 src同级创建并设置log4j.properties### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.Conso..._log4j.properties

随便推点

python能制作游戏吗_python制作galgame引擎(一)-程序员宅基地

文章浏览阅读654次。写这个项目的直接原因是最近推galgame推得有点过头,gal推过头的直接结果就是YY能力上涨,抱着“我也想写好玩的剧本”的轻率念头,也就开始了这个项目。不过从直接感觉来说,galgame毕竟也是开发成本(个人)以及技术要求最低的游戏类别之一,这当然也算是原因。于是到了现在,一个半成品式的框架就搭好了。实话实说,gal引擎开发,技术难度不算大。但是,需要考虑的方面却相当多,许多看起来很简单的东西开..._galgame的代码很难写吗

高效开发iOS系列 -- 为Xcode添加删除行、复制行快捷键_ios 修改复制粘贴快捷键-程序员宅基地

文章浏览阅读1.4w次,点赞9次,收藏11次。在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键。而恰巧Xcode不支持这两个快捷键,再一次的恰巧让笔者发现了一个小窍门来增加这两个快捷键,以下是步骤: 修改权限 修改Xcode里快捷键的配置文件(plist)权限,打开终端输入如下两条命令:sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.fram_ios 修改复制粘贴快捷键

GCC各种调试工具使用简介-程序员宅基地

文章浏览阅读1.7k次。http://blog.sina.com.cn/s/blog_6b94d5680101p7fm.htmlGCC:GNU开发的程序编译器 GNU:“GNU‘s Not Unix”,最初是为了实现一个类似unix的自由操作系统,感觉现在已经通常泛指遵循GPL自由软件精神的组织。GPL:GNU通用公共许可证(GNU General Public License),简单的说就是遵循GPL的

python+selenium简单操作高德地图路线规划_selenium地图-程序员宅基地

文章浏览阅读716次,点赞2次,收藏2次。1、导入selenium库,第三方库要下载pip install selenium_selenium地图

Android 非常简单的实现 Fragment状态栏一体化布局,状态栏字体的颜色改变,_android immersionbar设置黑色字体-程序员宅基地

文章浏览阅读3.4k次。做一个点上的项目的时候遇到一个问题,就是商城首页的布局要覆盖状态栏,可以这么理解,上图:就像京东的首页一样的效果我的项目是 MainActivity + 四个Fragment,第一步:需要把状态栏的背景色变为透明色,这个网上很多博客都写过,我就不写了第二部:我先说一下这个属性fitSystemWindows,因为不管是做状态栏变色和一体化布局,都相关这个属性_android immersionbar设置黑色字体

oracle 传递table,ORACLE 自定义TABLE类型,C#怎么传递值-程序员宅基地

文章浏览阅读137次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼CREATE OR REPLACE TYPE IM_CHECKLIST_PARAM IS OBJECT(ID RAW(16),SCORE INTEGER,DESCRIPTION NVARCHAR2(300),FOLLOWPLAN NVARCHAR2(300));CREATE OR REPLACE TYPE IM_CHECKLIST_T..._oracle自定义数据类型的数据怎么传到procedure c#

推荐文章

热门文章

相关标签