基于注意编解码器模型的神经网络模型具有较好的摘要能力。然而,这些模型在生成过程中难以控制,导致摘要缺乏关键信息。提出了一种将抽取方法和生成方法相结合的指导生成模型。首先,通过抽取模型从文本中获取关键词。然后,引入关键信息引导网络(KIGN)1,将关键词编码成关键信息表征,以指导关键信息的生成过程。此外,我们还采用了一种预测-引导机制,引导主要体现在两个方面:注意机制和指针机制。该机制可以获得未来解码的长期值,从而进一步指导摘要的生成。
现有的句子摘要研究忽略了输入句子中的关键词能够为有价值的内容提供重要线索,人类倾向于根据这些关键词撰写摘要。本文提出了一种co-selective2的句子摘要方法,即在序列到序列模型中,将关键词引导信号应用于编码器和解码器。采用多任务学习框架,共同学习提取关键词和生成输入句子摘要。 通过研究输入句子和关键词之间的相互作用,应用关键词引导的选择性编码策略来过滤源信息。通过双注意和双复制机制对指针生成网络进行了扩展,该网络可以将输入句和关键词的语义结合起来,同时从输入句和关键词中复制单词。
解码器隐藏更新:
s t = f d e ( s t − 1 , e ( y t − 1 ) , c t , c t k w ) \mathbf{s}_{t}=f_{d e}\left(\mathbf{s}_{t-1}, \mathbf{e}\left(y_{t-1}\right), \mathbf{c}_{t}, \mathbf{c}_{t}^{k w}\right) st=fde(st−1,e(yt−1),ct,ctkw)
知识注意力上下文向量:
c t k w = ∑ j = 1 ∣ K ∣ α t j k j , α t j = exp ( η ( s t − 1 , k j ) ) ∑ j ′ = 1 ∣ K ∣ exp ( η ( s t − 1 , k j ′ ) ) \quad \mathbf{c}_{t}^{k w}=\sum_{j=1}^{|K|} \alpha_{t j} \mathbf{k}_{j}, \\\alpha_{t j}=\frac{\exp \left(\eta\left(\mathbf{s}_{t-1}, \mathbf{k}_{j}\right)\right)}{\sum_{j^{\prime}=1}^{|K|} \exp \left(\eta\left(\mathbf{s}_{t-1}, \mathbf{k}_{j}^{\prime}\right)\right)} ctkw=j=1∑∣K∣αtjkj,αtj=∑j′=1∣K∣exp(η(st−1,kj′))exp(η(st−1,kj))
为第 t t t时刻的关键词感知注意, k j \mathbf{k}_{j} kj表示第 j j j 个被提取/分配的关键词的嵌入, K K K是所有被提取/分配的关键词的集合。
自动文章评论有助于鼓励在线新闻平台上的用户参与和互动。然而,对于传统的基于编码器-解码器的模型来说,新闻文档通常太长,这通常会导致一般性和不相关的评论。提出用graph-to-seq3模型生成评论,该模型将输入新闻建模为主题交互图。通过将文章组织成图形结构,模型可以更好地理解文章的内部结构和主题之间的联系,从而更好地理解故事。在线新闻平台腾讯快宝上收集并发布了大规模的新闻评论语料库。
解码器隐藏更新:
s t = f d e ( s t − 1 , e ( y t − 1 ) , c t , c t k w g ) \mathbf{s}_{t}=f_{d e}\left(\mathbf{s}_{t-1}, \mathbf{e}\left(y_{t-1}\right), \mathbf{c}_{t}, \mathbf{c}_{t}^{k w g}\right)\\ st=fde(st−1,e(yt−1),ct,ctkwg)
知识注意力上下文向量:
c t k w g = ∑ u ∈ U k w g α ( u ) u , α ( u ) = exp ( η ( s t − 1 , u ) ) ∑ u ′ ∈ U k w g exp ( η ( s t − 1 , u ′ ) ) \mathbf{c}_{t}^{k w g}=\sum_{u \in \mathcal{U}_{k w g}} \alpha(u) \mathbf{u}, \\\alpha(u)=\frac{\exp \left(\eta\left(\mathbf{s}_{t-1}, \mathbf{u}\right)\right)}{\sum_{u^{\prime} \in \mathcal{U}_{k wg}} \exp \left(\eta\left(\mathbf{s}_{t-1}, \mathbf{u}^{\prime}\right)\right)} ctkwg=u∈Ukwg∑α(u)u,α(u)=∑u′∈Ukwgexp(η(st−1,u′))exp(η(st−1,u))
c t k w g \mathbf{c}_{t}^{k w g} ctkwg是关键词图在时间步长 t t t时的感知注意; U k w g \mathcal{U}_{k w g} Ukwg是关键词图中节点的集合; u \mathbf{u} u是节点嵌入(通常从图神经网络获得)。
KIGN
我们从注意机制和指针机制两个方面提出关键信息引导网络来引导生成过程。具体来说,我们使用TextRank算法从文本中提取关键字。
图 1 图1 图1
如图1所示,将关键字逐一输入到关键信息引导网络
BiGRU中,然后将最后一个前向隐藏状态 h ← n \stackrel{\leftarrow}{h}_{n} h←n和后向隐藏状态 h ← 1 \stackrel{\leftarrow}{h}_{1} h←1连接做为关键信息表征 k k k:
k = [ h ← 1 h ⃗ n ] k=\left[
- 注意机制:
传统的注意机制仅利用解码器状态作为查询,获取编码器隐藏状态的注意分布,难以识别关键字。我们将关键信息表征 k k k作为注意机制的额外输入,将Seq2seq 中的方程改变为:
e t i = v T tanh ( W h h i + W s s t + W k k ) (1) e_{t i}=v^{T} \tanh \left(W_{h} h_{i}+W_{s} s_{t}+W_{k} k\right)\tag{1} eti=vTtanh(Whhi+Wsst+Wkk)(1)
其中 W k W_{k} Wk是一个可学习参数。我们使用新的 e t i e_{t i} eti获得新的注意力分布 α t e \alpha_{t}^{e} αte和新的上下文向量 c t c_{t} ct。计算见Seq2seq
关键信息表征 k k k使得注意机制更加关注关键字。这是向模型引入了先验知识。
然后,应用关键词信息表征 k k k,并使用新的上下文向量 c t c_{t} ct计算词汇中所有单词的概率分布,预测下一个单词改变为:
P v ( y t ∣ y 1 , … , y t − 1 ) = softmax ( f ( s t , c t , k ) ) (2) P_{v}\left(y_{t} \mid y_{1}, \ldots, y_{t-1}\right)=\operatorname{softmax}\left(f\left(s_{t}, c_{t}, k\right)\right)\tag{2} Pv(yt∣y1,…,yt−1)=softmax(f(st,ct,k))(2)
其中 v v v为 y t y_{t} yt来自目标词汇表。
- 指针机制
由于词汇量的限制,有些关键词可能不在目标词汇表中,这必然会导致在最后的上下文向量中缺少这些关键词。因此,我们以关键信息表征 k k k、上下文向量 c t c_{t} ct和解码器隐藏状态 s t s_{t} st为输入,计算软开关 p s w p_{s w} psw,该软开关选择是从目标词汇表中生成单词还是从输入文本中复制单词:
p s w = σ ( w k T k + w c T c t + w s t T s t + b s w ) (3) p_{s w}=\sigma\left(w_{k}^{T} k+w_{c}^{T} c_{t}+w_{s_{t}}^{T} s_{t}+b_{s w}\right)\tag{3} psw=σ(wkTk+wcTct+wstTst+bsw)(3)
其中 w k T , w c T , w s T w_{k}^{T}, w_{c}^{T}, w_{s}^{T} wkT,wcT,wsT , b s w b_{s w} bsw 是参数, σ \sigma σ 是 sigmoid .
我们的指针机制包含了关键信息表征,具有识别关键字的能力。使用新的注意力分布 α t i e \alpha_{t i}^{e} αtie作为输入token w i w_{i} wi的概率,得到以下概率分布来预测下一个单词:
P ( y t = w ) = p s w P v ( y t = w ) + ( 1 − p s w ) ∑ i : w i = w α t i e (4)
注意,如果 w w w是一个词汇表外的单词, P v ( y t = w ) P_{v}\left(y_{t}=w\right) Pv(yt=w)是零。
将 y t ∗ y_{t}^{*} yt∗定义为解码时间步长 t \mathrm{t} t的目标字,减小每个解码时间步长的最大似然损失:
L = − 1 T ∑ t = 0 T log P ( y t ∗ ∣ y 1 ∗ , … , y t − 1 ∗ , x ) (5) L=-\frac{1}{T} \sum_{t=0}^{T} \log P\left(y_{t}^{*} \mid y_{1}^{*}, \ldots, y_{t-1}^{*}, x\right)\tag{5} L=−T1t=0∑TlogP(yt∗∣y1∗,…,yt−1∗,x)(5)
2、测试时的预测导向机制
在测试时,我们在预测下一个单词时,不仅考虑了式4概率,还考虑了预测导向机制预测的长期值。我们的预测-引导机制是一个具有sigmoid激活函数的单层前馈网络,它预测了最终摘要中覆盖的关键信息的范围。
在每个解码时间步长t处,我们将解码器隐藏状态 s ˉ t = 1 t ∑ l = 1 t s l \bar{s}_{t}=\frac{1}{t} \sum_{l=1}^{t} s_{l} sˉt=t1∑l=1tsl、编码隐藏状态 h ˉ n = 1 n ∑ i = 1 n h i \bar{h}_{n}=\frac{1}{n} \sum_{i=1}^{n} h_{i} hˉn=n1∑i=1nhi和关键信息表示 k k k作为输入,计算长期值。
我们抽样了两个部分摘要 y p 1 y_{p 1} yp1和 y p 2 y_{p 2} yp2中每个 x x x随机停止得到 s ˉ t \bar{s}_{t} sˉt。然后,我们从 y p y_{p} yp完成生成,得到完成的摘要 S ( y p ) S\left(y_{p}\right) S(yp)(使用beam search)的 M M M个平均解码器隐藏状态 s ˉ \bar{s} sˉ,并计算平均得分:
A v g Cos ( x , y p ) = 1 M ∑ s ˉ ∈ S ( y p ) cos ( s ˉ , k ) (6) A v g \operatorname{Cos}\left(x, y_{p}\right)=\frac{1}{M} \sum_{\bar{s} \in S\left(y_{p}\right)} \cos (\bar{s}, k)\tag{6} AvgCos(x,yp)=M1sˉ∈S(yp)∑cos(sˉ,k)(6)
其中 cos \cos cos是余弦相似度的函数。我们希望 v ( x , y p 1 ) v\left(x, y_{p 1}\right) v(x,yp1)的预测值能够大于 v ( x , y p 2 ) v\left(x, y_{p 2}\right) v(x,yp2),如果 Avg Cos ( x , y p 1 ) > \operatorname{Avg} \operatorname{Cos}\left(x, y_{p 1}\right)> AvgCos(x,yp1)> Avg Cos ( x , y p 2 ) . \operatorname{Avg} \operatorname{Cos}\left(x, y_{p 2}\right) . AvgCos(x,yp2).,则预测导向网络的损失函数如下:
L p g = ∑ ( x , y p 1 , y p 2 ) e v ( x , y p 2 ) − v ( x , y p 1 ) (7) L_{p g}=\sum_{\left(x, y_{p 1}, y_{p 2}\right)} e^{v\left(x, y_{p 2}\right)-v\left(x, y_{p 1}\right)}\tag{7} Lpg=(x,yp1,yp2)∑ev(x,yp2)−v(x,yp1)(7)
在测试时,我们首先计算每个候选的归一化对数概率,然后将其与预测导向网络预测的值线性组合。具体来说,给定一个生成模型 P ( y ∣ x ) P(y \mid x) P(y∣x)(方程4),一个预测导向网络 v ( x , y ) v(x, y) v(x,y)和 一个超参数 α ∈ ( 0 , 1 ) \alpha \in (0,1) α∈(0,1), x x x的部分序列 y y y的分数计算方法如下:
α × log P ( y ∣ x ) + ( 1 − α ) × log v ( x , y ) (8) \alpha \times \log P(y \mid x)+(1-\alpha) \times \log v(x, y)\tag{8} α×logP(y∣x)+(1−α)×logv(x,y)(8)
其中, α ∈ ( 0 , 1 ) \alpha \in(0,1) α∈(0,1)为超参数。
co-selective
下面是我们模型的主要步骤。
步骤1。提取输入和参考之间的重叠词作为ground-truth 关键词。
步骤2。多任务学习:使用输入语句和ground-truth关键词生成摘要;训练关键词提取器。
步骤3。使用训练后的关键词提取器对训练集中的输入句子生成关键词,然后使用原句子和预测的关键词对句子摘要器进行微调。
步骤4。在测试过程中,首先使用训练好的关键词提取器生成输入句子的关键词,然后使用输入句子和预测的关键词生成摘要。
图 2 图2 图2
图2 为co-selective模型框架。在训练过程中,BiLSTM将原句子 ( x 1 , x 2 , ⋯ , x n ) \left(x_{1}, x_{2}, \cdots, x_{n}\right) (x1,x2,⋯,xn)和ground-truth关键字 ( k 1 , k 2 , ⋯ , k m ) \left(k_{1}, k_{2}, \cdots, k_{m}\right) (k1,k2,⋯,km)读取为一级隐藏状态 h i r h_{i}^{r} hir 和 h i k . h_{i}^{k} . hik.,联合训练关键字提取器把 h i r h_{i}^{r} hir作为输入,预测输入词是否为关键字。共选择编码层构建了第二级隐藏状态 h i r ′ h_{i}^{r^{\prime}} hir′和第二级隐藏状态 h i k ′ h_{i}^{k^{\prime}} hik′。然后通过对原句和关键词序列的双重注意和双重复制生成摘要。在测试过程中,ground-truth关键字被我们训练的关键字提取器预测的关键字替换。
- Ground-Truth 关键词生成
用于句子摘要任务的标准Gigaword数据集不提供输入句子的关键字。为了训练我们的关键字提取器和关键字引导的摘要器,我们大致将输入句子和参考摘要之间的重叠词(停止词除外)作为ground-truth关键字。
- 共享文本编码器
BiLSTM对输入文本进行前向和后向编码,生成两个序列的隐藏状态:
h ⃗ i = LSTM ( E [ x i ] , h ⃗ i − 1 ) h ← i = LSTM ( E [ x i ] , h ← i + 1 )
E [ x i ] E\left[x_{i}\right] E[xi] 是单词 x i x_{i} xi的embedding 。最后隐藏的表示 h i h_{i} hi是前向和后向向量的连接: h i = [ h ⃗ i ; h ← i ] h_{i}=\left[\vec{h}_{i} ; \overleftarrow{h}_{i}\right] hi=[hi;hi]
句子摘要任务和关键词提取任务在意义上非常相似,它们的目的都是选择输入句子中包含的重要信息。句子摘要的输出是一个完整的句子,而关键词抽取的输出是一组单词。它需要不同的模块为不同的任务生成相应的输出,而对于编码器来说,我们认为共享参数可以提高他们捕捉输入文本重点的能力。为此,我们使用一个共享文本编码器来生成原始语句和关键字序列的隐藏状态序列。 h i r h_{i}^{r} hir和 h i k h_{i}^{k} hik分别表示输入语句和关键字的隐藏表征。
- 关键词提取
对于关键字提取任务,输出层是对句子中每个单词的隐藏表征 h i r h_{i}^{r} hir进行softmax分类器。分类器预测以下两个标签之一:'1’表示关键字,'0’表示非关键字。BiLSTM-CRF模型与BiLSTM -softmax模型具有相似的性能。
- 关键词导向选择编码
Zhou等人提出了一种选择性机制来模拟句子摘要的选择过程。选择门应用于 h i r h_{i}^{r} hir,构造一个二级表表征 h i r ′ h_{i}^{r^{\prime}} hir′。在他们的模型中,选择门通过探索输入句子中每个单词和整个句子之间的语义关系来维护来自编码句子的重要信息。这种选择编码策略可以称为自我选择编码,因为选择信号来自原句本身。
与原句相比,关键词包含更浓缩的语义,因此,选择信号可以更强大。与自我选择不同,我们利用关键词的信息来构建选择门。我们提出了两种关键字引导的选择编码策略:关键字选择,对关键字引导的句子构建 h i r ′ h_{i}^{r^{\prime}} hir′; 共选择编码,对输入的句子和关键字分别构建 h i r ′ h_{i}^{r^{\prime}} hir′和 h i k ′ h_{i}^{k^{\prime}} hik′。详情如下。
- 自我选择 Encoding
每个 h i r h_{i}^{r} hir的自选择门向量计算如下:
selfGate i s = σ ( W r h i r + U r a r ) \text { selfGate }_{i}^{s}=\sigma\left(\mathbf{W}_{r} h_{i}^{r}+\mathbf{U}_{r} a^{r}\right) selfGate is=σ(Wrhir+Urar)
其中 σ \sigma σ表示sigmoid函数,和 a r = [ h n r → ; h 1 r ← ] a^{r}=\left[\overrightarrow{h_{n}^{r}} ; \overleftarrow{h_{1}^{r}}\right] ar=[hnr;h1r] 是句子表征。然后, h i r ′ h_{i}^{r^{\prime}} hir′计算如下:
h i r ′ = h i r ⊙ selfGate i s h_{i}^{r^{\prime}}=h_{i}^{r} \odot \text { selfGate }_{i}^{s} hir′=hir⊙ selfGate is
其中 ⊙ \odot ⊙是元素级的乘法。
- 关键字选择 Encoding
关键词选择门用关键词引导原句编码如下:
keyGate i r = σ ( W k h i r + U k a k ) \text { keyGate }_{i}^{r}=\sigma\left(\mathbf{W}_{k} h_{i}^{r}+\mathbf{U}_{k} a^{k}\right) keyGate ir=σ(Wkhir+Ukak)
其中 a k = [ h n k → ; h 1 k ← ] a^{k}=\left[\overrightarrow{h_{n}^{k}} ; \overleftarrow{h_{1}^{k}}\right] ak=[hnk;h1k] 是关键字序列表示。然后, h i r ′ h_{i}^{r^{\prime}} hir′计算如下:
h i r ′ = h i r ⊙ k e y Gate i r h_{i}^{r^{\prime}}=h_{i}^{r} \odot k e y \text { Gate }_{i}^{r} hir′=hir⊙key Gate ir
- 共选择 Encoding
除了为句子选择编码外,我们认为每个关键字对摘要任务的贡献是不同的,因此,我们提出了一种共选择编码来同时为句子和关键字选择信息。
c o Gate i r = σ ( W p h i r + U p a k ) c o G a t e i k = σ ( W q h i k + U q a r )
则, h i r ′ h_{i}^{r^{\prime}} hir′ 和 h i k ′ h_{i}^{k^{\prime}} hik′ 的计算方法如下:
h i r ′ = h i r ⊙ coGate i r h i k ′ = h i k ⊙ coGate i k
3. 双注意生成器
指针-生成网络是一个具有复制机制的seq2seq模型,基于来自生成器和指针的概率分布来预测单词。该生成器采用双注意机制,基于源句子和提取关键词的注意生成上下文向量。
我们使用LSTM作为解码器来产生输出摘要。在每一个时间步 t t t中,LSTM读取前一个解码器状态 s t − 1 s_{t-1} st−1、预测输出 y t − 1 y_{t-1} yt−1和上下文向量 c t − 1 c_{t-1} ct−1,计算当前解码器状态 s t s_{t} st,如下所示:
s t = LSTM ( s t − 1 , y t − 1 , c t ) s_{t}=\operatorname{LSTM}\left(s_{t-1}, y_{t-1}, c_{t}\right) st=LSTM(st−1,yt−1,ct)
解码器的隐藏状态 s 0 s_{0} s0被初始化如下:
s 0 = tanh ( W h [ h n r ′ → ; h 1 r ′ ← ] ) s_{0}=\tanh \left(\mathbf{W}_{h}\left[\overrightarrow{h_{n}^{r^{\prime}}} ; \overleftarrow{h_{1}^{r^{\prime}}}\right]\right) s0=tanh(Wh[hnr′;h1r′])
该模型的输入包括原句和关键词,因此我们首先为原句和关键词构建具有注意机制的上下文向量。然后我们得到最终的上下文向量$c_{t}, 我 们 计 算 句 子 上 下 文 向 量 我们计算句子上下文向量 我们计算句子上下文向量c_{t}^{r}$如下:
c t r = ∑ i = 1 N α t , i r h i r ′ c_{t}^{r}=\sum_{i=1}^{N} \alpha_{t, i}^{r} h_{i}^{r^{\prime}} ctr=i=1∑Nαt,irhir′
每个向量都是由注意力权重 α t , i r \alpha_{t, i}^{r} αt,ir加权的
e t , i r = v a T tanh ( U a s t − 1 + W a h i r ′ ) α t , i r = exp ( e t , i r ) ∑ j = 1 N exp ( e t , j r )
类似地,关键字注意 α t , i k \alpha_{t, i}^{k} αt,ik和关键字上下文向量 c t k c_{t}^{k} ctk可以通过 h i k ′ h_{i}^{k^{\prime}} hik′和 s t − 1 s_{t-1} st−1来计算。
接下来,我们应用三种方法将 c t r c_{t}^{r} ctr和 c t k c_{t}^{k} ctk融合到最终的上下文向量 c t c_{t} ct中,包括串联融合、门融合和分层融合。
- 串联融合
这种融合方法简单地连接两个上下文向量:
c t = [ c t r ; c t k ] c_{t}=\left[c_{t}^{r} ; c_{t}^{k}\right] ct=[ctr;ctk]
- 门融合
我们首先使用两个上下文向量计算一个融合门向量,然后通过这个门将上下文向量组合起来:
g t = σ ( W g c t r + U g c t k ) c t = g t ⊙ c t r + ( 1 − g t ) ⊙ c t k
- 分层融合
门控融合将两个上下文向量与它们之间相互作用的门相结合。从直观上看,融合过程应该反映句子和关键词对解码器状态 s t − 1 s_{t-1} st−1的相对信息量。
我们采用分层注意机制,目的是在原句和关键词之间建立一种目标导向的联系:
β t r = σ ( U β s t − 1 + W β c t r ) β t k = σ ( U β s t − 1 + W β c t k ) c t = β t r c t r + β t k c t k
β t r \beta_{t}^{r} βtr 和 β t k \beta_{t}^{k} βtk 是两个标量。
然后计算 P gen P_{\text {gen }} Pgen 在目标词汇表中所有单词上的概率分布如下:
P gen ( w ) = softmax ( W h s t + V h c t + b h ) P_{\text {gen }}(w)=\operatorname{softmax}\left(\mathbf{W}_{h} s_{t}+\mathbf{V}_{h} c_{t}+b_{h}\right) Pgen (w)=softmax(Whst+Vhct+bh)
- 双复制机制
普通指针通过指向从源序列中复制一个单词 w w w:
P copy ( w ) = ∑ i : x i = w α t , i P_{\text {copy }}(w)=\sum_{i: x_{i}=w} \alpha_{t, i} Pcopy (w)=i:xi=w∑αt,i
我们提出一个双复制指针,从源序列和关键字序列复制一个单词 w w w,如下所示:
P copys ( w ) = ∑ i : x i = w α t , i r P copyk ( w ) = ∑ i : k i = w α t , i k
最后的分布是生成分布和双复制分布的加权和:
λ t = sigmoid ( w a T c t + u g T s t + v g T y t − 1 + b g ) P ( w ) = λ t P g e n ( w ) + 1 2 ( 1 − λ t ) ( P copys ( w ) + P copyk ( w ) )
每个时间步 t t t的损失函数 L t \mathcal{L}_{t} Lt是ground-truth目标词 y t y_{t} yt的负对数似然:
L t = − log P ( y t ) \mathcal{L}_{t}=-\log P\left(y_{t}\right) Lt=−logP(yt)
- 多任务学习
摘要生成任务比关键词提取复杂得多,导致不同的学习困难和收敛速度。因此,摘要生成作为中心任务,关键字提取作为辅助任务。我们在训练过程中交替优化这两个任务,直到收敛。
设 γ \gamma γ为句子摘要训练100小批后提取关键词的小批训练数。采用 γ = 10 \gamma=10 γ=10。
- 使用生成关键字进行微调
我们的模型使用ground-truth关键字进行训练,而不是使用我们的关键词检测器的结果,在测试过程中无法获得ground-truth关键字。使用ground-truth关键字使其收敛更快,但训练和测试过程之间的不匹配可能表现出不稳定性。为了解决这个问题,我们提出在使用ground-truth关键字训练过程收敛后,用我们的关键字检测器生成的预测关键字作为输入来微调我们的模型。
graph-to-seq
graph-to-seq架构如图3所示。
交互图中的顶点由主题词 k i k_{i} ki和包含 k i k_{i} ki的句子组成,如果句子中没有包含主题词,则将其划分到一个特殊的“Empty”顶点。每个顶点首先被顶点编码器编码到一个隐藏的向量 v i v_{i} vi中。然后将整个图输入到图编码器,用结构信息编码得到最终的顶点表示 h i h_{i} hi。采用具有注意机制的RNN解码器生成评论词。
图 3 图3 图3
- 构建主题交互图
算法1给出了构建过程。与传统新闻不同的是,网络新闻平台上的文章包含了很多噪音。文章中的许多句子甚至与新闻的主题无关。例如,“谢谢大家点开 这篇文章”。
因此,我们提取文章的关键词作为新闻的主题。这些关键词是理解文章故事的最重要的词,其中大部分都是命名实体。由于关键字检测不是本文的重点,
给定一篇新闻文章 D D D,我们首先用现成的工具如Stanford CoreNLP对新闻文章进行分词和命名实体识别。由于仅通过命名实体还不足以涵盖文档的主要内容,因此我们进一步应用TextRank等关键字提取算法来获取其他关键字。
在获得新闻的关键字 k k k后,我们将文档的每个句子与其对应的关键字关联起来。我们采用一种简单的策略,如果 k k k出现在句子中,则将句子 s s s赋给关键字 k k k。
注意,一个句子可以与多个关键词相关联,这暗示了主题之间的联系。不包含任何关键字的句子被放在一个名为“Empty”的特殊顶点中。因为文章的标题对于理解新闻是至关重要的,我们还添加了一个特殊的顶点叫做“Title”,它包含了文章的标题句。
这些句子与其关键字 k k k一起构成交互图中的一个顶点 v k v_{k} vk。句子中的单词连在一起。每个顶点中的单词代表文章的一个方面。
在算法 1. 1 . 1.中,可以用 λ \lambda λ来构造顶点之间的边,本文提出了一种基于结构的方法。如果顶点 v i v_{i} vi和 v j v_{j} vj至少共享一个句子,则在它们之间添加一条边 e i j e_{i j} eij,其权重根据共享句子的个数计算。
这种设计背后的直觉是,两个关键词一起提到的句子越多,这两个关键词越接近。还可以使用基于内容的方法,例如 v i v_{i} vi和 v j v_{j} vj内容之间的tf-idf相似性。
- 顶点编码器
为了将图中的每个顶点编码为一个隐藏向量 v v v,我们提出了一种基于多头自注意的顶点编码器。
顶点编码器由两个模块组成,第一个是嵌入模块,第二个是自注意模块。对于单词序列中的 第 i i i个单词 w i w_{i} wi,我们首先查找单词的词嵌入 e i e_{i} ei。注意,本文中的关键词和常规词共享一个嵌入表。我们所说的“常规单词”指的是关键词以外的单词。
为了表示每个单词的位置信息,在单词中添加一个位置嵌入 p i p_{i} pi。将顶点的关键字 k k k放在单词序列的前面。因此,所有插入的关键字的位置嵌入共享相同的嵌入 p 0 p_{0} p0,这表明了关键字的特殊作用。词嵌入和位置嵌入都被设置为可学习向量。单词 w i w_{i} wi的最终嵌入 ϵ i \epsilon_{i} ϵi是原单词嵌入 e i e_{i} ei和位置嵌入 p i p_{i} pi之和,
ϵ i = e i + p i \epsilon_{i}=e_{i}+p_{i} ϵi=ei+pi
然后我们将 ϵ i \epsilon_{i} ϵi输入self-attention模块,得到每个单词的隐藏向量 a i a_{i} ai。该模块对单词之间的交互进行建模,使该层中的每个隐藏向量都包含该顶点的上下文信息。
Attention ( Q , K , V ) = softmax ( Q K T ) V MultiHead ( Q , K , V ) = [ head 1 ; ⋯ ; head h ] W o head i = Attention ( Q W i Q , K W i K , V W i V )
在我们的例子中, Q K V Q K V QKV都表示相同的向量。对于第一层,它们是 ϵ \epsilon ϵ。以下各层为前一层计算的隐藏向量。
因为关键字 k k k是顶点中最重要的信息,所以我们使用最后一层插入的关键字 a 0 a_{0} a0的隐藏向量作为代表整个顶点的向量。
- 图编码器
在得到图中每个顶点 v i v_{i} vi的隐藏向量后,将它们喂给给一个图卷积模型(GCN),以利用所构造的主题交互的图结构。
交互图的邻接矩阵为 A ∈ R N × N A \in R^{N \times N} A∈RN×N,其中 A i j = w i j A_{i j}=w_{i j} Aij=wij ,还添加一条指向节点本身的边。D是一个对角矩阵,其中 D ~ i i = ∑ j A ~ i j \tilde{D}_{i i}=\sum_{j} \tilde{A}_{i j} D~ii=∑jA~ij
H l + 1 = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H l W l ) A ~ = A + I N
其中 I N I_{N} IN为单位矩阵, D ~ − 1 2 A ~ D ~ \tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D} D~−21A~D~为标准化对称邻接矩阵, W l W^{l} Wl为可学习权矩阵。为了避免GCN的过光滑问题,我们添加了层之间的残差连接,
g l + 1 = H l + 1 + H l g out = tanh ( W o g K )
我们在GCN的最终输出中添加一个前馈层。 g K g^{K} gK是GCN最后一层的输出。
由于新闻的标题仍然是一个重要的信息,使用图编码器的标题顶点的隐藏输出作为解码器的初始状态 t 0 t_{0} t0。还可以使用其他池方法,如最大池或平均池。
- Decoder
解码器采用有注意机制的RNN。
给定初始状态 t 0 t_{0} t0和输出 G C N ⟨ g 0 , g 1 , ⋯ , g n ⟩ \mathrm{GCN}\left\langle g_{0}, g_{1}, \cdots, g_{n}\right\rangle GCN⟨g0,g1,⋯,gn⟩,解码器必须生成一系列注释标记 y 1 , y 2 , ⋯ , y m . y_{1}, y_{2}, \cdots, y_{m} . y1,y2,⋯,ym.
在每一个解码步骤中,一个上下文向量 c i c_{i} ci是通过注意GCN的输出来计算的。
t i = R N N ( t i − 1 , e i − 1 ) c i = ∑ j × g j α j = exp ( η ( t i , g j ) ∑ exp ( η ( t i , g k ) )
其中 η \eta η是注意评分函数。
由于主题词(顶点名称) k k k是文章的重要信息,可能会出现在评论中,我们采用复制机制 ,将预测的词标记概率分布与注意分布合并。通过解码隐藏状态 t i t_{i} ti和上下文向量 c i c_{i} ci,动态计算从主题词复制的概率 p copy p_{\text {copy}} pcopy,
y i = softmax ( W o ( tanh ( W ( [ t i ; c i ] ) + b ) ) ) p copy = σ ( W copy [ t i ; c i ] ) p = ( 1 − p copy ) × y + p copy × α
其中 W o , W , W copy , b W_{o}, W, W_{\text {copy}}, b Wo,W,Wcopy,b都是可学习的参数。
参考
转载:https://blog.csdn.net/qq_43940950/article/details/117194415