摘要

motivation:
以外部知识为基础,在对话历史背景下解释语言模式,如省写、回指和共同引用,对对话的理解和生成至关重要。
this paper:
在本文中,我们提出了一种新的开放域对话生成模型,该模型有效地利用了大规模的常识知识,以及非结构化的特定主题的知识。我们使用使用协同引用的命名实体感知结构来增强常识知识。我们提出的模型利用一个多跳注意层来保存对话历史和相关知识的最准确和最关键的部分
此外,我们采用了一个常识性的实体增强注意模块,该模块从不同来源提取的三元组开始,利用交互式对话知识模块获得的查询向量,利用多跳注意逐步找到相关的三元组支持集。

Our code is publicly available at
https://github.com/deekshaVarshney/CNTF;
https://www.iitp.ac.in/-ai-nlp-ml/resources/
codes/CNTF.zip

1. 引言

神经语言模型通常关注于较少的语言成分,如句子、短语或用于文本分析的单词。然而,语言的作用范围要广泛得多——一场对话通常会有一个中心主题,说话者会分享共同的信息,以便相互理解。信息经常被重复使用,但是为了避免过度使用,同样的东西和人都是在对话框中通过使用相关的表达式进行了多次引用。当所有这些信息都以结构化、逻辑和一致的方式传递时,对话变得连贯,说话者可以相互理解。
对话的语义理解可以通过常识性知识或世界事实来得到帮助。此外,作为一种关键的人类语言现象,共同引用简化了人类语言,同时是机器理解的重要障碍,特别是代词,由于语义薄弱而难以解析(Ehrlich,1981)。
基于反应生成方法(Ghazvininejad等人,2018;Dinan等人,2018)可以在开放领域环境中提供事实的复制,而常识知识对于创建成功的互动至关重要,因为社会构建的常识知识是人类在对话中理解和使用的上下文细节的集合。
尽管在实证评价中证明了有效性,但过去的工作也有一些显著的缺点。特别是,没有对实体、语义关系或会话结构的明确表示。为了解决这些限制,要求对话模型识别对话历史中的相关结构可以直接测试对话理解的水平。本文主要讨论命名实体级知识,并分析对话历史背景下实体的参考。
为了确保我们的模型的通用化性,我们直接以三联体的形式合并实体,这是现代知识图中最常见的格式,而不是像传统方法那样用特征或规则来编码它。
我们创建了一个名为CNTF、常识、命名实体和局部知识融合神经网络的会话模型,通过利用特定主题的文档信息和使用结构化实体和常识知识来生成成功的响应。我们首先在解析对话中的共同引用后,构造基于命名实体的三元组,以增强从概念网获得的现有常识性三元组(Speer和Havasi,2012)。我们使用多跳注意力来迭代多源信息。我们从交互式对话-知识模块中获得一个加权查询向量,该模块用于对对话、主题知识和相应的三元组进行查询。 CNTF对对话的历史和知识的句子进行推理,我们使用它从对话的背景和主题知识中过滤出相关的信息。类似地,为了对这些三元组进行推理,我们再次进行多轮迭代,屏蔽出不相关的三元组。

contribution

  1. 我们提出了CNTF,一种新的基于知识的对话生成模型,它利用对话上下文、非结构化文本信息和结构性知识来促进显式推理。
  2. 我们使用共引用解析增强了从具有命名实体感知结构的ConceptNet数据库中提取的常识三元组。
  3. 我们定义了一个有效的滑动窗口机制,以从较长的对话上下文中删除无关的信息,并确保有效的内存利用率。我们使用一个交互式对话知识模块来生成一个加权查询向量,它捕获对话和主题知识之间的交互。
  4. 通过对公开的数据集进行广泛的定性和定量验证,我们表明我们的模型优于强基线。

2. 相关工作

在本文中,我们展示了如何使用结构化和非结构化知识来改进基于文档的对话生成任务。我们提出了一种有效的基于知识的对话模型CNTF,该模型是由多源异构知识构建的。基于基于知识的对话生成基准数据集的实验。维基百科的向导和CMU_DoG,已经展示了我们提出的方法的有效性。我们的方法采用了一个大规模的命名实体增强的常识知识网络,以及一个特定领域的事实知识库来帮助理解一个话语,以及使用一个新的基于多跳注意的模型生成反应

3. 方法论

3.1 问题定义

D={di}i=1KD= \{di\} _{i=1}^KD={di}i=1K 表示一段有K轮的对话
di=(ai1,ai2)d_i=(a^1_i,a^2_i)di=(ai1,ai2) 表示两个代理之间的对话交换
(ai1,ai2)(a^1_i,a^2_i)(ai1,ai2)分别相关的文档Si1,Si2S^1_i,S^2_iSi1,Si2包含特定主题的知识
我们通过创建三元组集来利用常识和面向命名实体的知识
τ={τ1,τ2,...,τ∣τ∣}\tau=\{\tau_1,\tau_2,...,\tau_{\left| \tau\right|}\}τ={τ1,τ2,...,ττ}
τi\tau_iτi的格式(head, relation, tail),
三元组的来源:从ConceptNet中提取话语中每个单词的关系(如果单词是来自ConceptNet中的概念单词),以及采用共参考解析法形成基于命名实体的三元组
对于第k轮对话,已知前n轮对话历史,以及和对话历史相关的知识,生成response Y={y1,y2,...,y∣y∣}Y=\{y_1,y_2,...,y_{\left| y\right|}\}Y={y1,y2,...,yy}

3.2 Encoder

3.2.1 Dialogue Encoder

Dialogue Encoder在多回合对话中跟踪对话上下文,依次对话语进行编码。
每轮的输入为x=(x1,x2,...,xn)x= (x_1, x_2, ..., x_n)x=(x1,x2,...,xn), n指的是tokens数.
对于第一轮,输入就是 a11a^1_1a11
对于之后的l轮次,第j轮,j>1,输入是前一个回合的第二个代理的反应和当前回合的第一个代理的话语的连接,[aj−12;aj1][a^2_{j−1}; a^1_j ][aj12;aj1]
然后,编码器利用BERT来获得HD={hi}i=1nH_D= \{h_i\}^n_{i=1}HD={hi}i=1n的表示。
对于对话表示,有两种状态 DS,DHD_S , D_HDS,DH
在第一轮都初始化为HDH_DHD
然后,在接下来的轮次使用滑动窗口机制来更新 DS,DHD_S , D_HDS,DH
一个大小为“lll”的窗口意味着我们只连接前面的“l−1l-1l1”回合的隐藏状态。这有助于消除更长的对话上下文中的噪音和节省内存 DHD_HDH 保持固定,并存储对话上下文的隐藏状态。而 DSD_SDS在每个回合都会更新,目的是捕获适当的历史信息,以准确地生成响应。
其实就是保留前n个对话历史

3.2.2 Knowledge Encoder

[Sj−1;2Sj1][S^2_{j−1;} S_j^1][Sj1;2Sj1] for turn j > 1, elseS11S^1_1S11
for the first turn
被截断到最大令牌计数为400。
还是使用ber进行编码得到HKb={hi}i=1mH_{Kb} = \{h_i\}^m_{i=1}HKb={hi}i=1m
m是文档的token数,m<=400
类似对话的DS,DHD_S , D_HDS,DH ,知识文档有KbS,KbHKb_S ,Kb_HKbS,KbH ,都初始化为HKbH_{Kb}HKb 与用于即将到来的回合的对话状态的滑动窗口机制不同,KbS,KbHKb_S ,Kb_HKbS,KbH只存储从基于BERT的知识编码器中获得的当前回合的隐藏状态。

3.3 Multi-hop Attention

我们采用 dual and dynamic graph attention
mechanism
(Wang et al.,2020)来模拟人类一步一步的探索和推理行为。
在每一步中,我们假定对话和知识状态都有一些信息需要传播。
DSD_SDS is updated using the forget and add operations.每个hop的DS,DHD_S,D_HDSDH是不同的,是存在更新的
对于hop r,

目标是计算ck,t(r)c^{(r)}_{k,t}ck,t(r)
k是第k轮,t是第t个时间步
先计算公式(2)qk,tq_{k,t}qk,t是query embedding
v1(r),W1(r),W2(r)v^{(r)} _1 , W_1^{(r)}, W_2^{(r)}v1(r),W1(r)W2(r)

计算完(1),(2),(3)之后根据附录A更新DSD_SDS
DHD_HDH是固定的

3.4 Constructing Named Entity based Triples using Co-reference Resolution

为了向现有的常识性三元组添加更多有用的链接,我们使用了从对话中提取的共引用链和命名实体。首先,我们使用AllenNLP共引用解析模块来识别对话中的共引用链。
使用命名的实体和概念作为节点,获得新的三元组集,对应的边构建如下:
(a)在同一对话中出现的每一对命名实体之间,以及
(b)在命名实体节点与同一对话框中的其他概念之间。
我们可能会注意到,首先解析共同引用,然后提取命名实体,可以确保跨多个话语的实体以某种方式连接。此外,我们显式地形成一个具有RelatedTo的三重联体,因为它很适合在大多数情况下,是因为它表示两个命名实体及其在对话中的不同引用或别名之间的关系

3.5 Commonsense and Named Entity Enhanced Attention Module

对于每个对话,最后一组三元组由常识和命名实体的三元组组成。我们从可训练的嵌入层即
E=emb_layer(τ)E = emb\_layer(\tau)E=emb_layerτ
中得到了三元组的头和尾实体嵌入。形式上,一个查询用于循环三重嵌入,并计算每个跳p处的注意权值。
αk,t(p)=softmax(qt(p−1)E(p−1))\alpha^{(p)}_{k,t} = softmax(q_t^{(p−1)}E^{(p−1)})αk,t(p)=softmax(qt(p1)E(p1))

先计算5得到知识三元组的加权上下文
然后计算6来更新。使用了一种查询更新机制,其中查询嵌入使用当前步骤的加权三重嵌入进行查询。

3.6 Decoder

3.6.1 Interactive Dialogue-Knowledge Module

由于每一个话语都与特定主题的非结构化知识有关,我们采用一种交互机制来关注对话和知识句子。利用编码的加权对话上下文作为初始查询向量qt(3.5计算得到),我们可以改进从对话中提取的信息提取和知识隐藏状态,从而生成响应。为了获得加权对话上下文W HD,我们在HD和HK之间应用了如第3.3节所述的多跳注意,它们分别是从对话和知识编码器中接收到的隐藏状态。


decoder的隐藏状态(就是sts_tst)初始为3.3计算的上下文对话表示
decoder是一个词一个词的生成,e(yt−1)e(y_{t-1})e(yt1)是生成的前一个词(yt−1)(y_{t-1})(yt1)的embedding
sts_tst就可以反应对话,知识,三元组的表示

3.6.2 Fusion Block

词汇表Pg(yt)单词上的概率分布
W5W_5W5 is a trainable parameter

3.6.3 Copy Block

特别地,时间步长t时的单词要么从词汇表中生成,要么从对话历史、知识历史中复制,或者使用三元组中的实体。
t是时间步,生成一个词就是一个时间步,hop是模型multi-hop


loss就是decder的loss

Commonsense and Named Entity Aware Knowledge Grounded Dialogue Generation相关推荐

  1. TENER: Adapting Transformer Encoder for Named Entity Recognition 笔记

    TENER: Adapting Transformer Encoder for Named Entity Recognition Abstract(摘要) 1 Introduction(介绍) 2 R ...

  2. 【论文笔记-NER综述】A Survey on Deep Learning for Named Entity Recognition

    本笔记理出来综述中的点,并将大体的论文都列出,方便日后调研使用查找,详细可以看论文. 神经网络的解释: The forward pass com- putes a weighted sum of th ...

  3. 论文总结之对话生成《Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering》

    11.Improving Knowledge-aware Dialogue Generation via Knowledge Base Question Answering 本篇论文是ACL最新的20 ...

  4. Large-Scale Named Entity Disambiguation Based on Wikipedia Data

    Large-Scale Named Entity Disambiguation Based on Wikipedia Data 基于维基百科数据的大规模命名实体消岐 1.引言 1.1. 概念 实体(e ...

  5. 论文阅读笔记(三)【ACL 2021】Locate and Label: A Two-stage Identifier for Nested Named Entity

    论文标题: Locate and Label: A Two-stage Identifier for Nested Named Entity Recognition 论文链接: https://arx ...

  6. python命名实体识别工具_Day14:使用斯坦福 NER 软件包实现你自己的命名实体识别器(Named Entity Recognition,NER)...

    编者注:我们发现了有趣的一系列文章<30天学习30种新技术>,正在翻译中,一天一篇更新,年终礼包.下面是第 14 天的内容. 我并不是一个机器学习(Machine Learning).自然 ...

  7. NER项目--github--A Unified MRC Framework for Named Entity Recognition

    A Unified MRC Framework for Named Entity Recognition项目代码 简述 项目结构 models model_config.py classifier.p ...

  8. 自然语言处理NLP之分词、词性标注(POS)、组块分析(Chunking)、命名实体识别(Named Entity Recognition,简称NER)

    自然语言处理NLP之分词.词性标注(POS).组块分析(Chunking).命名实体识别(Named Entity Recognition,简称NER) 目录

  9. Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning(DS——NER识别(减少人工参与))

    目录 Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning 前言 文章贡献 Risk定义--基 ...

最新文章

  1. Robot Christmas!机器人玩转圣诞节!
  2. php如何获取常量的值,php – 如何获取常量的名称?
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1056:点和正方形的关系
  4. 基金指数温度怎么算_成都冬季想装明装暖气片那究竟价格应该怎么算?
  5. java客户端运行hadoop_JAVA客户端连接部署在docker上的hdfs
  6. 素筛打表(输出小于n最大素数)
  7. 音视频开发(20)---基于RTMP推送实时AAC+H264流(一)
  8. 【SpringCloud】Spring cloud Alibaba Sentinel 系统规则
  9. python题型大全_python进阶:练习题 汇总
  10. 苹果秋季发布会于9月16日召开;华为搜索业务将在国内亮相;Android 11正式版发布 | 极客头条
  11. POI 操作Excel添加超链接
  12. python的socket模块简单_Python使用socket模块实现简单tcp通信
  13. json转Map泛型Map<String,T>,json转集合Map泛型List<Map<String,T>>工具类
  14. SPSS学习笔记(一)
  15. 由对称性知定点一定在x轴上_圆锥曲线中的定点定值问题的四种模型.doc
  16. 配置计算机系统doc,计算机的基本配置.doc
  17. 什么软件测试情侣头像,情侣头像搜索另一半 另一半情头查找器在线匹配 - 株洲娱乐网...
  18. 小米手机android目录在哪里设置字体,[小米手机]小米手机MIUI自己制作.MTZ字体包方法 无需ROOT权限...
  19. python pipe_python pipe模块用法
  20. java 使用TexturePaint和Graphics2D可以实现多边形图片裁剪

热门文章

  1. 一点小感受:界面和程序的分离
  2. SAP中采购合同与采购计划协议关联性分析(续)
  3. Windbg串口联调
  4. 多通道国产源表之VCSEL老化测试
  5. 如何通过市场中性策略获利
  6. 高德地图动态锁定地图不能放大缩小和滑动
  7. unity塔防游戏怪物转向_英雄塔防物语游戏下载-英雄塔防物语官方版 v2.3.8最新版...
  8. 一个中科大差生的 8 年程序员工作总结
  9. 关于数学计算机手抄报简单的,二年级数学简单手抄报图片大全
  10. scratch编程神笔马良