安承悦读

情感文字2020总结(通用3篇)

admin
导读 这样的话情感词在注意力机制中可以得到更大的权重,从而有利于情感分类。2 首先进行子任务私有特征的编码,得到面向三个子任务的特征X^{A}、X^{O}、X^{S}最后的特征表征为 V = [s; max pool(h^L _1 , ...,h^L_n)] ,单词与其相似度 mod_i = σ(W_V

情感文字2020总结 第1篇

2020 ACL-main

任务定义

给定句子 S_{e}=\left\{ w_{1},w_{2}, ...w_{n}\right\} ,定义三个AE、OE、SC的序列标注问题:

1 输入部分是词嵌入经过一个全连接层得到 H

2 首先进行子任务私有特征的编码,得到面向三个子任务的特征X^{A}、X^{O}、X^{S}

利用卷积得到AE-oriented features X^{A} 和OE-oriented features X^{O} ,考虑到的是这两个任务与词的临近词相关性很大。

为了得到SC-oriented features

首先从 H 中利用CNN编码上下文特征 X^{ctx} ,然后将共享向量 H 视为query方面,并用注意力机制计算query和上下文特征 X^{ctx} 之间的语义关系,得到 X^{S} (利用的是 X^{ctx} 实现的表达)

3 Propagating Relations for Collaborative Learning

R_{1} 是AE和OE之间的双向关系, X^{O2A} 是OE向AE传递的部分,计算方法是 X^{A} 和 X^{O} 交互,利用X^{O} 表达。然后将交互部分同原来的面向AE的特征 X^{A} 拼接在一起,经过一个线性层和softmax就可以得到任务AE的分类结果。同理得到任务OE的分类结果。

此外,一个单词不可以既是方面词又是情感词,因此加入了合页损失作为正则项来约束 Y^{A} 和 Y^{O}

R2 是SC和 R_{1} 之间的三元关系。注意直接使用注意力权重来相加的,而不是在最后阶段。

R3是SC和OE之间的双向关系,这表明,在对情感极性进行预测时,需要对抽取出的观点术语多加关注。为了建模R3,采用和R2同样的方式,也就是对SC中的 M^{ctx} 利用生成的 Y^{O} tag序列进行更新,如下:

这样的话情感词在注意力机制中可以得到更大的权重,从而有利于情感分类。

得到上述方式完成交互后的 M^{ctx} 后,我们可以按照式子4重新计算面向SC任务的特征 X^{S} ,然后我们将 H 和 X^{S} 拼接在一起作为最后的SC的特征,并将它们经过一个全连接层后去预测方面极性。

4 Stacking RACL to Multiple Layers

以上是一个RACL模块的输出,本实验堆叠了多个模块。具体来说,我们首先编码第一层特征 X^{ctr(1)} , X ^{A(1)}\oplus X ^{O2A(1)} , X ^{O(1)}\oplus X ^{A2O(1)} ,在第二层将这些特征输入到SC,AE和OE去生成 X^{ctr(2)} , X^{A(2)} , X^{O(2)} 。以此类推可以将RACL堆叠到L层。最后将各层的最终预测结果进行平均池化的操作

这种shortcut-like的架构可以促进低层中的功能具有意义和信息量,反过来这也有助于高层做出更好的预测。

最终RACL总的损失的 L 是所有子任务的损失之和加上正则项的损失,也就是 L=\sum_{}L^{T}+\lambda ·L^{R} ,其中 \lambda 是系数, T \in \left\{ A,O,S \right\} .

情感文字2020总结 第2篇

任务描述:

输入是句子X(长度为n, [x_1,x_2,...,x_n] ),同时有方面词的索引t,得到方面词 x_t 。输出是对方面词的情感分析。

将 \tilde{X}=[CLS]+X+[SEP]+x_i+[SEP] 输入到预训练好的BERT中,得到最后一层隐含层表达。(需要注意的是这一层并不是原来的一个个词哦,因为BERT里面有个小模块是WordPiece,它把单个词分成更小的字词。)然后对每个原始词 x_i 的隐含层字词向量做平均得到每个词的词嵌入表达 e_i 。最后,我们还使用BERT中的特殊标记[CLS]的隐藏向量s对整个输入句子X及其方面术语 x_t 进行编码。

这一部分的核心思想就是给GCN的每一个隐含层的各个词向量都经过一个基于方面词的门控向量进行信息的过滤。操作方法如下:输入层的词嵌入是 e_1,...e_n ,经过GCN的第 l 层隐含层表达为 h_i^l 。每层的门控向量计算如下 g_l =\sigma(W_j^g e_t) ,经过门控约束后的隐含层的表达结果为 \bar{h_i^l}=g_l\circ h_i^l ,使用的是元素乘。

理想情况下,我们期望GCN不同层的隐藏向量将捕获句子中不同层次的上下文信息。因此,这些层的门向量gt也应该显示出一些上下文信息的差异水平,以匹配GCN隐藏向量中的那些信息。

实现门控的差异化的方法是添加一个惩罚函数。在完成GCN(以及对应的门控)后,以第 l 层为例,首先计算盖层所有隐含层向量的最大池化 \bar{h^l} ,然后用 l 层以外层( l'层 )的门控向量去乘以该层的隐含层向量(元素乘)\bar{h_i^{l,l'}}=g^{l'}\circ h_i^l,同样得到 \bar{h_i^{l,l'}} 的最大池化 \bar{h^{l,l'}} ,对于所有的 l'\ne l 的 \bar{h^{l,l'}} 和 \bar{h^l} 之间最小化余弦相似度可达到差异化门控的效果。对应的惩罚函数如下:

(iii) Syntax and Model Consistency

为了使上述的句法结构的重要性分数可以指导模型从而取得更好的效果,采用的思想是使基于模型的每个单词的重要性分数分布能和 syn 的分布尽可能相近。记基于模型每个单词的分数为 mod_i ,思想是如果该单词的表达与最后用于分类的特征的距离越相近分数越高(与分类越相关),计算方式如下:

最后的特征表征为 V = [s; max pool(h^L _1 , ...,h^L_n)] ,单词与其相似度 mod_i = σ(W_V V ) · σ(W_Hh^L_ i ).

惩罚函数:最小化 syn 和 mod 的KL散度:

利用 V 直接就可以做情感分类。

情感文字2020总结 第3篇

文章贡献:在本文中,我们探索了一种简单的方法,为每个方面自动生成离散意见树结构。用到了RL。

首先为每个方面生成离散意见树,设方面词的位置为[b,e],则首先将方面跨度[b, e]作为根节点,然后分别从跨度[1,b−1]和[e+1, n]构建它的左子节点和右子节点。为了构建左子树或右子树,我们首先选择span中得分最大的元素作为子树的根节点,然后递归地对相应的span分区使用build_tree调用。(除了方面词外其他node都是单个词)。

关于得分分数的计算,选择将_ [CLS], w_1,w_2,...,w_n,[SEP],w_b,...,w_e _作为BERT的输入得到特殊于方面词的句子表达H,然后按照如下计算得分:

其中h是H中方面词部分的平均池化,构建树的这部分包含的参数有三个 u_p,W_p,W_a 以及BERT参数部分。

构建树的这一部分称为 Q_\phi(t|x,a) ,输入为x和a(用于打分),输出为一棵树,参数 \phi 包括上述参数。这一部分参数使用RL进行更新而不是最终损失函数的反向传播。

生成树以后开始正式执行预测任务,模型非常简单。

将上面得到的树生成邻接矩阵,经过GCN(可能多层),取最后一层GCN的输出结果的方面词部分以及[CLS]这个token的表达之和作为query,与GCN的输入的初始向量特征(也就是原句子经过句子编码器得到的)做注意力机制,用输入去表达最终的方面级分类特征。

最后输出分类结果

损失函数:

注意这个论文分为两个模块,第一个是生成树,利用 Q_\phi(t|x,a) 得到t;第二部分是预测, P_\theta(y|x,a,t) ,这里的 \theta 包括GCN模块的参数和输出(等式5)的部分,PS注意力模块没有引进参数哦。

第二部分使用上述损失函数进行优化,由于树的采样过程是一个离散的决策过程,因此它是不可微的,第一部分使用的是RL进行优化。

强化学习实现训练部分还没看。