TENER: Adapting Transformer Encoder for Named Entity Recognition

论文地址:​​​​​​https://arxiv.org/pdf/1911.04474.pdf        

代码地址:GitHub - fastnlp/TENER: Codes for "TENER: Adapting Transformer Encoder for Named Entity Recognition"

        Transformer编码器用于命名实体识别。来自复旦大学邱锡鹏团队。
        用于ner识别的最常见深度学习模型应该就是bilstm了;但是在transformer大热的现在当然也少不了ner这个任务场景。本文就是修改了transformer的一些结构,用于ner的识别。
        原生的transformer并不是适用于所有的nlp任务。其中在ner任务中,论文提出了几个Transformer需要改进的点:
        1.第一个就是位置编码,transformer的位置编码(由于经过了线性变换后其实是大大折扣的,如下图1随机变换矩阵的情况,这个不是本文讨论的重点)是没有方向性的,是左右对称的,如下图2,意思是特征的距离信息有,但是不知道来自左边还是右边。这个对于实体识别的影响是很大的,方向和距离对于其来说都是很重要的,因为实体的出现往往有很多固定的前后搭配。

TENER: Adapting Transformer Encoder for Named Entity Recognition

 

TENER: Adapting Transformer Encoder for Named Entity Recognition


        2.第二,transformer在计算注意力的时候对分数进行了拉伸,进行了平滑,就是分数除以了根号下的维度大小。在原transformer和其他的论文的解释应该是为了使注意力的分布是正太分布,且注意力分数悬殊过大影响模型收敛。但是在ner识别的场景,实体往往至于问句中某几个词相关,平滑处理反而会增加噪声。下图的实验结论中最后一行的结果可以看出有拉伸的结果会更差。

TENER: Adapting Transformer Encoder for Named Entity Recognition


        3.第三点是引入了字符编码器,来分别表示字符级别向量和词向量,这个是为了解决oov的问题;这个改进主要是针对英文场景的,所以这里不过多介绍;对于字符的编码,文章还是做了很多比较试验的,但是中文场景在unigram和bigram或者word embedding就ok了。

模型结构图

TENER: Adapting Transformer Encoder for Named Entity Recognition

        

上一篇:模型集成和级联


下一篇:Swin Transformer实战:使用 Swin Transformer实现图像分类。