基于边界驱动的表填充的方面情感三元组提取
论文地址: https://aclanthology.org/2022.emnlp-main.435v2.pdf
代码地址: https://github.com/HITSZ-HLT/BDTF-ABSA
个人阅读笔记,如有错误欢迎指针交流
方面情感三元组提取(ASTE)是情感分析中的一项重要任务,旨在从文本评论中提取方面术语, 意见术语,以及(方面,意见)术语所对应的情感极性。
以前的研究工作一般通过表格填充形式化以端到端的方式解决ASTE任务,其中三元组由词对关系的二维(2D)表表示。在这种形式化下,一个方面意见术语(span)级关系可能被分解成多个独立的(word)词级关系,这可能会导致面对多跨度方面术语和意见术语关系不一致和边界不敏感,。
为了解决上述问题,我们提出了边界驱动的表格填充(BDTF),它将每个三元组表示为一个关系区域中的二维表,并转换成检测和分类的关系区域的ASTE任务。我们还注意到,表表示的质量极大地影响了BDTF的性能。因此,我们开发了一种有效的关系表征学习方法来学习表表示,它可以充分利用单词到单词的相互作用和关系到关系的相互作用。
我们的贡献可归纳如下:
图1:ASTE任务的示例。方面术语和意见术语分别用橙色和蓝色标记。
给定长度为n的句子 X = [ x 1 , x 2 , . . . , x n ] X = [x_1,x_2,...,x_n] X=[x1,x2,...,xn],ASTE任务的目标是提取一组方面情感三元组。三元组被定义为(方面,观点,情感),其中情感 s ∈ { P O S , N E U , N E G } s ∈ \{POS,NEU,NEG\} s∈{POS,NEU,NEG}。我们将三元组表示为2D表中的关系区域。它的边界用于指示方面术语和意见术语的位置,并且它的类型用于表示情感。关系区域由两个边界标签S, E定位。具体地,S表示左上角,并且E表示右下角。
采用预训练的语言模型,诸如BERT(Devlin等人,2019)作为语言编码器以获得输入句子的词级上下文化表示。该过程可表述如下:
论文采用基于张量的操作来构造关系级表示。给定两个单词 h i , h j ∈ R d h_i,h_j ∈ R^d hi,hj∈Rd,基于张量的运算被定义为:
其中 V ∈ R d × d × t V ∈ R^{d×d×t} V∈Rd×d×t是张量参数。具体来说,对于每个切片 V [ k ] ∈ R d × d V^{[k]} ∈ R^{d×d} V[k]∈Rd×d,基于张量的运算计算某个向量空间中两个单词表示的内积:
通过引入多个向量空间,基于张量的操作可以完全建模单词到单词的交互。
此外,我们还利用了两个词之间的上下文,因为上下文通常包含表达关系的重要指标(Eberts and Ulges,2020)。我们通过最大池化操作获得上下文表示 c i j ∈ R d c_ij ∈ R^d cij∈Rd(令i ≤ j):
最后,我们通过非线性投影构造关系级表示 r i j ( 0 ) ∈ R d r^{(0)}_{ij} ∈ R^d rij(0)∈Rd:
其中 f ( ⋅ ) f(·) f(⋅)是一个激活函数,我们在本文中根据经验选择了gelu(Hendrycks and Gimpel,2016)。
**总结: **看到这里可能会有点乱,由于公式太多了, 简单梳理一下$t_{ij} 可以简单理解两个词向量再加一个矩阵变换得到。 可以简单理解两个词向量再加一个矩阵变换得到。 可以简单理解两个词向量再加一个矩阵变换得到。c_{ij} 就是加入单词 i 到 j 的上文信息,至此做关系的表示就为 就是加入单词i到j的上文信息,至此做关系的表示就为 就是加入单词i到j的上文信息,至此做关系的表示就为r_{ij}$(考虑自身,交叉,上下文)
先验知识: 句子中每两个词的关系表示一起形成2D关系矩阵,组合在一起构成整个表的表示。此表表示的元素之间存在一些潜在的依赖关系。例如,具有边界标签S的元素总是在其右下方具有边界标签E的元素,并且相同关系区域中的元素具有相同的情感标签。
为了对这些依赖性进行建模,我们利用ResNet风格的CNN来编码该关系矩阵。具体地,给定输入表表示 T ( l − 1 ) ∈ R n × n × d T(l-1)∈ R^{n×n×d} T(l−1)∈Rn×n×d,第 l t h l^{th} lthCNN通过以下方式产生相同大小的表表示 T ( l ) T^{(l)} T(l):
其中LN表示层归一化。
至此,我们已经得到了完整的表格表示。
对于表表示 T ( L ) T^{(L)} T(L)中的每个元素 T i j ( L ) T^{(L)}_{ij} Tij(L),区域检测层利用两个分类器来计算其边界标签为S和E的概率:
我们通过top-k策略对 S S S和 E E E进行剪枝,然后将它们合并以获得候选关系区域,而不是基于某个阈值对 S S S和 E E E进行解码。修剪允许模型避免潜在的暴露偏差。具体地,我们分别通过 P i j S P^S_{ij} PijS和 P i j E P^E_{ij} PijE选择前k个候选。然后,所选择的候选的这些有效 S − E S-E S−E对形成区域候选池 C R = { ⋅ ⋅ ⋅ , [ S ( a , b ) , E ( c , d ) ] , ⋅ ⋅ ⋅ } C_R = \{· · ·, [S(a,b), E(c,d)],· · · \} CR={⋅⋅⋅,[S(a,b),E(c,d)],⋅⋅⋅},其中 S − E S-E S−E对仅在 E E E不在 S S S的顶部或左侧的情况下有效即, ( a ≤ c 且 B ≤ d ) (a ≤ c且B ≤ d) (a≤c且B≤d)。k的值与输入句子的长度有关:
其中z和kmin是两个超参数。
给定由 S ( a , b ) S(a,b) S(a,b)和 E ( c , d ) E(c,d) E(c,d)确定的候选关系区域,我们将该区域上的关系矩阵的 S S S表示、 E E E表示和最大池化结果连接起来作为其特征表示 r a b c d ∈ R 3 d r_{abcd} ∈ R^{3d} rabcd∈R3d:
然后我们使用分类器来预测其类型 y T ∈ { P O S , N E U , N E G , I n v a l i d } y_T ∈ \{POS,NEU,NEG,Invalid\} yT∈{POS,NEU,NEG,Invalid}:
在训练过程中,我们利用交叉熵函数来计算边界检测和区域分类的损失。具体地,给定真实边界标签 y i j S , y i j E ∈ { 0 , 1 } y^S_{ij},y^E_{ij} ∈ \{0,1\} yijS,yijE∈{0,1},区域检测的损失通过下式计算:
给定真实区域类型标签 y T ∗ y^*_T yT∗,区域分类的损失计算如下:
总体优化目标是最小化这两个损耗 L B + L T L_B + L_T LB+LT的总和。
在解码过程中,我们首先通过区域检测层获得区域候选池,然后利用区域分类器来预测每个候选区域的类型。我们丢弃那些预测类型为无效的关系区域,并从剩余的关系区域生成方面情感三元组。假设由 S ( a , b ) S(a,b) S(a,b)和 E ( c , d ) E(c,d) E(c,d)确定的关系区域被预测为POS类型,则其对应的三元组为:
表2:ASTE-Data-v2的结果。带有†的结果从Xu et al.(2020年)。Xu et al.复制了带和 * 的结果。(2021)和Yu Bai Jian et al.(2021年)。除Peng et al.(2020)和Zhang et al.(2020)是用BERT-base-uncased作为语言编码器获得的。
与不同预训练模型的比较结果
表3:与不同预训练模型的比较结果(Fl分数,%)。