论文Text Generation from Knowledge Graphs with Graph Transformers发表于2019年自然语言处理顶级会议之一NAACL,本文将对其进行解读,这是原文链接(https://arxiv.org/pdf/1904.02342.pdf)。
背景
生成表达复杂含义的多句文本需要结构化的表征作为输入,本文使用知识图谱作为输入的表征,研究一个端到端的graph-to-text生成系统,并将其应用到科技类文本写作领域。作者使用一个科技类文章数据集的摘要部分,使用一个IE来为每个摘要提取信息,再将其重构成知识图谱的形式。作者通过实验表明,将IE抽取到知识用图来表示会比直接使用实体有更好的生成效果。
graph-to-text的一个重要任务是从 Abstract Meaning Representation (AMR) graph生成内容,其中图的编码方法主要有graph convolution encoder,graph attention encoder,graph LSTM,本文的模型是graph attention encoder的一个延伸。
数据集
作者构建了一个Abstract GENeration Dataset(AGENDA),该数据包含40k个AI会议的论文标题和摘要。对于数据集中的每篇摘要,首先使用SciIE来获取摘要中的命名实体及实体之间的关系(Compare, Used-for, Feature-of, Hyponymof, Evaluate-for, and Conjunction),随后将得到的这些组织成无连接带标签图的形式。
模型
GraphWriter模型总览
编码器
构建图
将之前数据集中的无连接带标签图,转化为有连接无标签图,具体做法为:原图中的每个表示关系的边用两个节点替代,一个表示正向的关系,一个表示反向的关系;增加一个与所有实体节点连接全局向量节点,该向量将会被用来作为解码器的初始输入。下图中
v_i
表示实体节点,
R_{ij}
表示关系,
G
表示全局向量节点
最终得到的有连接,无标签图为G=(V,E),其中V表示实体/关系/全局向量节点,E表示连接矩阵(注意这里的G和V区别上述图中的G和v)。
Graph Transformer
Graph Transformer由L个Block Network叠加构成,在每个Block内,节点的嵌入
V^0=[v_i]
首先送入Graph Attention模块。这里使用多头自注意力机制,每个节点表征
v_i
通过与其连接的节点使用注意力,来得到上下文相关的表征。得到的表征随后再送入正则化层和一个两层的前馈神经网络层。最后一层的得到的
V^L=[v_i^L]
即表示上下文后的实体,关系,全局向量节点。
解码器
在每个时间步t使用隐藏状态
h_t
来计算图和标题的上下文向量
c_g
和
c_s
,其中
c_g
通过
h_t
使用多头注意力得到,
c_s
也通过类似的方式得到,最终的上下文向量是两者的叠加
c_t=[c_g ][c_s ]
。随后使用类似pointer-network的方法来生成一个新词或复制一个词,
实验
实验包含自动和人工评估,在自动评估中,GraphWriter代表本篇文章的模型,GAT中将Graph Transformer encoder使用一个Graph Attention Network替换,Entity Writer仅使用到了实体和标题没有图的关系信息,Rewriter仅仅使用了文章的标题,
从上图可以看到,使用标题,实体,关系的模型(GraphWriter和GAT)的表现要显著好于使用更少信息的模型。在人工评估中,使用Best-Worst Scaling,
参考
[1] Koncel-Kedziorski R, Bekal D, Luan Y, et al. Text generation from knowledge graphs with graph transformers[J]. arXiv preprint arXiv:1904.02342, 2019.