结合中文字形处理NLP任务的并不多推荐一篇:Glyce2.0,中文字形增强BERT表征能力
paper:https://arxiv.org/ftp/arxiv/papers/2001/2001.05272.pdf
github:https://github.com/AidenHuen/FGN-NER
在本节中,我们将详细介绍用于NER任务的FGN。如图1所示,FGN可以分为三个阶段:表示阶段、融合阶段和标记阶段。我们采用基于字符的序列标记策略。
我们主要使用字符表示和符号表示,它们分别由BERT和CGS-CNN编码。此外,我们还对每个字符的根进行编码,以便在符号表示和根表示之间进行进一步的实验。这些表示的细节如下:
Frozen BERT
BERT本质上是一个多层转换器编码器,它为单词或字符提供分布式表示。我们使用预先训练好的基于字符的BERT在句子中对每个字符进行编码。与常规的微调策略不同,我们首先在训练集上对BERT进行微调,并使用CRF层作为tagger。然后冻结BERT参数并将它们转移到另一个BERT结构中,这是FGN的一部分。采用这种策略的原因是,微调BERT只需要最小的学习速率,而初始化FGN的参数需要100倍的学习速率来调整。随后的实验证明了该策略的有效性。
CGS-CNN
图2描述了CGS-CNN的体系结构。与Glyce使用7种不同的是,我们只选择简单的汉字来生成字形矢量。CGS-CNN的输入格式是句子而不是单个字符。我们首先将句子转换成图序列,用50×50灰度图替换字符。非中文字符被赋予相应的值在0到1之间的随机矩阵。然后,我们提供两个3×3×3的三维卷积层来编码图序列,并输出每个具有8个通道的50×50图。三维卷积可以从空间和时间两个维度提取特征,这意味着每个符号向量可以从相邻的图形中获得额外的符号信息。利用对图序列维数的填充,经过三维卷积后可以保持图序列的长度不变,这是基于字符的标记所必需的。然后将三维卷积的输出通过若干组二维卷积和二维max pooling将每个图压缩为2×2的64通道Tianzige-structure。为了过滤噪声和空白像素,我们将2×2的结构压平,并采用1D max pooling为每个字符提取字形向量。字形向量的大小为64,远远小于Tianzige-CNN输出的大小(1024维)。
与Glyce通过设置图像分类任务来学习符号表示不同,CGS-CNN在训练整个NER模型的同时,也学习了其中的参数。因为我们只使用简单的中文脚本,所以设置任务来预测这个脚本的字符id似乎是没有意义的。
Radical Representation
我们把汉字组织成根序列。例如,“朝”字(早上)可分为{(十)“十”,“日”(太阳),“十”、“月”(月亮)}。字根嵌入的字符可以被定义为={1,2,…−1,}。在代表的字根的数量和1代表第1个字根的嵌入。然后采用自我注意[Vaswani et al., 2017]编码这种字根嵌入:
在,,代表输入的初始化权重向量。之后,通过max池层提取激进的特性和获得激进向量_字符:
我们提供了一个滑动窗口来滑动字符和字形矢量。在滑动窗口之后,我们得到切片对并计算这些对之间的外积来获得局部的交互特征。然后利用切片注意来平衡每个切片对的重要性,并将它们组合成输出的融合向量。
Out-of-sync Sliding Window
滑动窗口已经在多模态情感计算中得到了应用[Mai等,2019]。使用滑动窗口的原因是将向量与外积直接融合会使向量的大小呈指数增长,从而增加了后续网络的空间和时间复杂度。然而,这种方法要求多模态表示法具有相同的尺寸,不适合同时通过BERT向量和glyph向量。由于BERT的字符表示比字形表示具有更丰富的语义信息,因此需要更大的向量大小。在这里,我们提供了一个不同步的滑动窗口,可以满足不同的向量大小,同时保持相同数量的片。
未完待续。。。
在标记之前,我们在字符级连接每个向量。根据实验需要,设置两组表示来表示每个字符。一个是没有激进的代表定义为(_,_,_),另一个是与激进向量定义为(_,_,_,_)。表示一个句子可以被定义为={12…,},代表句子的长度。