【对话系统】Knowledge-Grounded Dialogue Generation with a Unified Knowledge Representation
链接:http://arxiv.org/abs/2010.08824v1
简介
本文提出了一种基于知识的对话系统PLUG。
什么是基于知识的对话系统(Knowledge-grounded dialogue systems)呢?
传统的对话系统大多是一个端到端系统,将历史对话和人类的问题作为输入,从而输出应答。但是,这种方法的一个弊端是:只考虑了历史对话,而没有考虑到话题本身,即:话题的知识。
比方说,我们在谈论NBA比赛,那我们会在脑海里回忆有关NBA的各种信息。
为了将话题本身的知识加入到对话系统中,基于知识的对话系统被提出了。系统可以基于对话语境和外部知识来源,生成信息丰富且有意义的回答。
然而,目前的系统大多有两个问题:
- 数据太少。我们需要的数据是基于知识的对话,基本上只能人工生成,又耗钱又耗时,因此大部分数据集都很小(如表1)。
- 格式太杂。这也是上一条带来的后遗症了:每个数据集太小,那就只能多用几个数据集。但是呢,在不同的任务中,知识的格式也不同。例如,REDIAL的电影数据库利用了图结构,而Wikipedia的Wizard是以文档为基础的对话任务,两者没法一起应用。
对此,本文提出了一个可以统一不同知识格式的模型:PLUG。
首先,我们将不同的知识格式转换为非结构化文本,然后使用预先训练好的语言模型将其处理成统一的密集表示,从而将知识表示整合到对话生成中。
我们对PLUG进行了不同知识背景对话语料库的预训练,包括来自Reddit的大规模开放领域对话数据集。这使得PLUG能够从不同的任务中以不同的形式学习知识,并通过少量的学习技巧转移到任何基于知识的对话任务中。
经过基准测试,PLUG可以达到与最先进的方法相当的效果。在zero-shot和few-shot条件下,它在两个任务上都优于其他方法,这PLUG可以基于不同知识来源的世界知识,并推广到不同的下游任务。
Approach
基于知识的预训练
传统的知识对话包括三个主要步骤:信息抽取、知识预测和响应生成。PLUG选择T5作为主干网络。
T5是一种先进的序列到序列的预训练Transformer模型,可以用于迁移学习。T5的训练方法是将各种语言任务转换为文本到文本的任务。在对对话数据集进行微调后,T5可以生成流畅而连贯的响应。
然而,答案往往过于笼统,因为它们没有以具体的知识为基础。PLUG是在普通的T5模型上训练的,但在训练过程中是基于现实世界的知识,使它继承了T5产生类似人类反应的能力,但包含了更多的知识。
PLUG
我们将基于知识的对话表述为:
D={C,R,S}D = \{C, R, S\}D={C,R,S}
其中C={Ci}i=1nC = \{C_i\} ^n_{i=1}C={Ci}i=1n是对话上下文,R={Ri}i=1nR = \{R_i\} ^n_{i=1}R={Ri}i=1n是有n个回合的对话中的应答。SSS是任务ttt的外部知识来源。
对于每个对话回合,我们可以在单个域ddd上制定一个基于知识的对话生成任务,即p(Ri∣Ci,S)p(R_i|C_i, S)p(Ri∣Ci,S)。
如图1所示,每个任务都有自己的知识源(例如文档、数据库和知识图谱)。
因为我们的对话系统只接受文本输入,为了统一格式,我们用T5的办法,从知识源SSS中提取基本知识,并将其表示为三元组文本。然后连接上下文Ci={c1,c2.…,cm}C_i = \{c_1, c_2.…,c_m\}Ci={c1,c2.…,cm}和基本知识三元组Ki={k1,k2,…,kn}K_i = \{k_1, k_2,…,k_n\}Ki={k1,k2,…,kn}作为标记序列。我们训练模型来预测应答token序列R={r1,r2,….rk}R = \{r_1, r_2,….r_k\}R={r1,r2,….rk}。
回答的概率公式为:
那怎么提取知识并表示为三元组呢?请看下节。
训练过程
PLUG使用了两个数据集:Reddit Conversation和OpenDialKG。我们将以Reddit Conversation为例讲解数据清理的3步过程。
Reddit Conversation
Reddit Conversation Galley等人(2018)是一个大型开放域会话数据集。它从Reddit数据中提取基于文档的会话线程。
我们只是将对话建立在维基百科的段落基础上,以便进行预训练,以便更好地识别对话中使用的知识。由于Reddit Conversation中基于文档的普通对话在每个对话回合中都没有知识标签,所以我们采用分层信息抽取方法来获取每个回合的基本知识。我们的信息抽取方法包括三个步骤:知识检索、统计排序和语义排序。
知识检索
我们使用知识检索器在一个回合的应答中检索所有相关的知识。
我们首先在对话中提取维基百科的基础段落的标题。
然后,我们从DBpedia (Lehmann et al., 2015)的大规模知识图中检索相关的知识三元组。具体来说,我们通过一个公共SPARQL端口查询DBpedia数据集,然后收集主题或对象是对话中的Wikipedia段落的三元组。
例如,对于有关巴拉克·奥巴马的对话,我们保留了三元组 <奥巴马,他的母校,哥伦比亚大学> 和 <米歇尔·奥巴马,配偶,巴拉克·奥巴马> 。
为了携带足够的知识进行下一步的提炼,我们从知识图中为每一段检索500个三元组。
统计排序
在检索到足够的知识后,我们对相应的三元组进行排序以细化知识。
具体地说,我们得到所有检索到的三元组的TF-IDF(term frequency–inverse document frequency)值。为了找到与上下文相关的三元组,我们将对话历史和响应作为查询连接起来。然后我们计算查询和每个三元组之间的余弦相似度。因为每个三元组都以维基百科文章名称作为主题或对象,余弦相似度得分越高,意味着查询的文本与三元组中不同文本的相似度越高。
我们对查询文档相似度评分进行排序,在这一步中只保留前50个三元组。
语义排序
基于TF-IDF的余弦相似度评分只计算三元组和查询之间重叠的单词。它将引入重叠的单词在上下文和响应中没有意义的三元组。此外,Reddit会话数据集是从Reddit会话线程获得的。它包含了许多没有任何知识基础的反应。
为了找到与响应具有最佳语义相似度的三元组,并过滤掉没有根据的响应,在这一步中,我们使用Sentence-Bert 估计语义相似度得分。
我们根据第二步的分数对50个三元组重新排序。
此外,我们放弃了最佳语义相似度低于阈值的对话转折,因为响应不能找到合适的知识,而我们想用基于知识的转折对模型进行预训练。
OpenDialKG
为了将我们的模型推广到各种任务,我们还使用OpenDialKG来丰富我们的训练前数据集。
OpenDialKG包含两种类型的任务:建议和聊天;跨越四个域。
与需要在每个回合中找到知识基础的Reddit Conversation数据集不同,原始的OpenDialKG为每个对话都有一个知识图路径标签,并为每个对话回合提供一个三重标签。
在数据收集期间,响应基于标记的三元组。因此,我们在训练前的例子中使用数据集中的三元组作为基本知识。
实验
表3显示了使用Wikipedia测试seen和测试unseen的结果。
可以看到,PLUG比T5略胜一筹。
如图二所示,除了knowledge F1得分,PLUG获取知识的速度也快于T5。
为啥knowledge F1得分和其他指标不一致呢?因为knowledge F1只考虑应答包含的知识词汇,其他指标还要语言的本身特性(流畅度,语法)。
在小数据下,T5会胡言乱语,随便复制知识词汇,PLUG还是会根据章法行事。
表4中列出了REDIAL的结果。
可以看到PLUG与T5还是不相上下。
表5列出了人类评判的指标。
可以看出,在流畅度、连贯性、知识性上,PLUG更占优势。
【对话系统】Knowledge-Grounded Dialogue Generation with a Unified Knowledge Representation相关推荐
- Commonsense and Named Entity Aware Knowledge Grounded Dialogue Generation
摘要 motivation: 以外部知识为基础,在对话历史背景下解释语言模式,如省写.回指和共同引用,对对话的理解和生成至关重要. this paper: 在本文中,我们提出了一种新的开放域对话生成模 ...
- 论文总结之对话生成《Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering》
11.Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering 本篇论文是ACL最新的20 ...
- 【论文翻译】UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation
UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation UniT:任意样本量的目标检测和分割的统 ...
- AAAI2020 A pre-training based personalized dialogue generation model with persona-sparse data
文章目录 论文背景 论文想要解决的问题 论文贡献 模型 变量解释 框架 Encoding Attention 自动计算persona比重 language model 最终的目标函数 A pre-tr ...
- Think Before You Speak: Explicitly Generating Implicit Commonsense Knowledge for Response Generation
论文阅读:Think Before You Speak: Explicitly Generating Implicit Commonsense Knowledge for Response Gener ...
- 《论文阅读》Commonsense Knowledge Aware Conversation Generation with Graph Attention
<论文阅读>Commonsense Knowledge Aware Conversation Generation with Graph Attention 简介 论文试图解决什么问题? ...
- 【论文笔记】Commonsense Knowledge Aware Conversation Generation with Graph Attention
Commonsense Knowledge Aware Conversation Generation with Graph Attention 文章目录 Commonsense Knowledge ...
- 《论文阅读》PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
<论文阅读>PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable 简介 论文试图解决什么问题 ...
- 论文解读:Question Answering over Knowledge Base with Neural Attention Combining Global Knowledge Info...
论文解读:Question Answering over Knowledge Base with Neural Attention Combining Global Knowledge Informa ...
- 知识跟踪的深度知识跟踪和动态学生分类 Deep Knowledge Tracing and Dynamic Student Classification for Knowledge Tracing
Deep Knowledge Tracing and Dynamic Student Classification for Knowledge Tracing(译) 知识跟踪的深度知识跟踪和动态学生分 ...
最新文章
- CommonJS 的 AMD 规范
- 系统架构师学习笔记_第十二章_连载
- 科大讯飞和百度语音平台语音识别Java调用记录
- WIN7系统共享访问方式总结
- 两个维护 提升三服务器,王莉霞:以整改成效践行“两个维护”立足“事要解决”抓好“三访结合”...
- 第一次作业-四则运算
- CCF201903-1小中大(C语言)
- 吃饭 睡觉 打豆豆游戏
- linux cat 压缩文件,Linux cat和zcat命令可能比你意识到的更有用
- 超级电脑可下载人类思想 究竟是福是祸?(
- cloudflare_如何使用Cloudflare Flan进行连续漏洞扫描
- 厦门市各中巴线路途经站点
- vi/vim/gvim编辑器使用心得
- 《iPad开发从入门到精通》——6.4节收藏历史
- hfs支持php文件系统,HFS+文件系统的分配文件分析
- [GYCTF2020]Blacklist 使用handler函数进行sql堆注入
- java葵花宝典中的宝典!
- vivado Clocking_Wizard IP配置
- 思科Webex定义协作的未来
- python __new__方法有什么用_学python日常工作有什么用?
热门文章
- 基于边界凹凸点和神经网络的粘连颗粒图像分割算法研究(既然有网友要源代码研究,在此公开绝大部分源代码)
- 轮廓(图形)之凹点切分
- win10微信卡顿_电脑一分钟小技巧:win10微信电脑端多开方法
- 数据库中的数据模型 概念数据模型、逻辑数据模型、物理数据模型
- elementui 表格序号el-table自定义序号事件
- Netron - 网络可视化
- Unity3D -- 天空盒(图文)
- Spark/Flink/CarbonData技术实践最佳案例解析
- 为什么重复率高的字段不适合作为索引
- ubuntu_使用ros显示imu的状态(6)