「自然语言处理(NLP)」华南理工 腾讯AI Lab(基于知识库的感知对话生成)

本文主要是介绍「自然语言处理(NLP)」华南理工 腾讯AI Lab(基于知识库的感知对话生成),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:AINLPer微信公众号(点击了解一下吧
编辑: ShuYini
校稿: ShuYini
时间: 2019-12-24

TILE: Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering
Contributor : 华南理工大学(广州)
Paper: https://arxiv.org/pdf/1912.07491v1.pdf
Code: https://github.com/siat-nlp/TransDG

文章摘要

    文章提出了一种新的知识感知对话生成模型TransDG,该模型将知识库问答任务中的问题表示和知识匹配能力转化为会话生成中的话语理解和客观知识选择。此外,本文还提出了一个响应引导注意机制和一个多步骤解码策略,以引导我们的模型关注反应生成的相关特征。在两个基准数据集上的实验表明,该模型在生成信息丰富、流畅的对话方面具有明显的优势。

文章主要内容

    1、提出了一种新的知识感知对话生成模型TransDG,该模型将知识库中的问题理解能力和事实提取能力转化为后理解能力和知识库中的事实知识选择能力。
    2、提出了一种多步译码策略,该策略能够捕捉到信息与响应之间的信息连接。第一步解码器产生的post和draft响应都与KB中的相关事实相匹配,使得第二步解码器产生的最终响应相对于post更合适、更合理。
    3、提出了一种响应引导注意机制,利用k-最佳响应候选项引导模型关注相关特征。
    4、在真实对话数据集上的大量实验表明,我们的模型在定量和定性两方面都优于比较方法。

对话生成模型TransDG

    如下图所示,该模型主要包含两个部分:一个KBQA模型和一个对话生成模型,在这个模型中,从KBQA任务中获得的知识在编码和解码阶段都被转换为对话生成。
#####编码层
    **问题表示:**利用单词级和依赖级信息来学习问题Q的表示。主要采用双向门控递归单元(BiGRU)获取问题中单词的隐藏状态。为了更好地捕捉问题中单词之间的长期依赖关系,遵循(Xu et al. 2016【Question answering on freebase via relation extraction and textual evidence.】)使用依赖路径作为额外的表示,将单词和依赖项标签与方向连接起来。通过填充来对齐单词级和依赖级序列,并通过元素添加来合并它们的隐藏状态。
    候选回答表示: KBQA任务中的候选答案表示为 A = a 1 , … , a n A ={a_1,…,a_n} A=a1an其中每个答案 a n a_n an都是特定知识库中的一个事实,以主题实体、关系、对象实体的形式存在。我们在字级和路径级对这些事实进行编码。

知识感知对话生成

    给定一个请求 X = x 1 , … , x n ~ X={ x_1,…,x_{\tilde{n}}} X=x1,,xn~,对话的一代的目标是生成一个适当的响应 Y = y 1 , . . . , y m ~ Y={y1,...,y_{\tilde{m}}} Y=y1,...,ym~,其中 n ~ \tilde{n} n~ m ~ \tilde{m} m~发布和响应的长度,分别。如上图所示,我们的对话生成模型从KBQA任务中传输知识,从而促进知识级别的对话理解和事实选择。

知识感知编码器

    对话生成使用基于端到端(Seq2Seq)的方法来生成给定请求的响应。Seq2Seq的编码器一个字一个字地读取请求 X,并通过GRU生成每个单词的隐藏表示。为了丰富请求的代表性以便更好的理解,提出了一个响应引导注意机制,它使用检索到的类似请求的响应来引导模型只关注相关信息。

知识感知多步解码器

    知识感知解码器采用多步译码策略,将从预先训练的KBQA模型中学习到的知识选择能力转化为响应。第一步解码器通过整合与请求相关的外部知识来生成草稿响应。第二步解码器通过参考第一步解码器产生的请求、上下文知识和草稿响应来生成最终响应。这样,多步译码器就可以捕捉到请求和响应之间的知识连接,从而产生更连贯、信息量更大的响应回答。

实验结果

    如下表2所示,TransDG对所有数据集的perplexity最低,表明生成的响应更符合语法。表2    下表3表明,利用外部知识的模型在生成有意义的实体词和不同的响应方面比标准Seq2Seq模型取得了更好的性能。特别地,本文模型以最高的实体分数显著地优于所有的基线。验证了知识转移的有效性。表3    下表4中所示的BLEU值展示了单词级重叠的比较结果。在大多数情况下,TransDG生成的响应比基线更接近gold响应。表4    如表5所示,TransDG在人的注释方面更倾向于产生更合适的、信息量更大的响应。具体而言,TransDG产生的响应比其他模型具有更高的知识相关性,说明TransDG能够有效地纳入适当的常识知识。表5    表6列出了TransDG和与基线模型针对请求产生的响应答复。表6

ACED

Attention

更多自然语言处理相关知识,还请关注 AINLPer 公众号,极品干货即刻送达。

这篇关于「自然语言处理(NLP)」华南理工 腾讯AI Lab(基于知识库的感知对话生成)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/433491

相关文章

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理