10

LEBERT:基于词汇增强的中文NER模型

 2 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650429811&%3Bidx=2&%3Bsn=55f18d0c07b0305c5993673f01b2dc28
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

LEBERT:基于词汇增强的中文NER模型

AINLP 2022-04-04 13:47
640?wx_fmt=jpeg

01

命名实体识别(简称NER)是NLP中的经典任务,即给定一个输入文本,让模型识别出文本中的实体信息。

640?wx_fmt=png

在中文NER任务中,可以分为 Character-based (字符粒度) 和 Word-based (词语粒度) 两种方法。

  1. Word-based (词语粒度) :基于词语粒度的中文NER任务,首先会对输入文本进行分词,将每个词语视为一个token,模型对每个词语进行打标签,从而识别出实体。该方法存在一个天然的缺陷,分词的效果严重影响模型的效果,如果分词的边界出现了问题,则模型无论如何也无法识别出正确的实体。

  2. Character-based (字符粒度) :基于字符的中文NER模型不需要对输入进行分词,输入中的每个汉字表示一个token,不存在分词边界的问题。然而该类方法无法充分利用词汇信息,但词汇信息对于实体识别却又至关重要,它能够引入汉字之间的关联性,辅助我们进行实体边界判断。

从下图的例子【南京市长江大桥】中,我们可以看到,若只以汉字为粒度进行NER任务,必然会缺失大量的先验的词汇知识。如果我们能够将这些词汇信息融入到模型中,想必能够提升模型的性能。

640?wx_fmt=png

基于上述原因,目前在中文NER任务中,Character-based (字符粒度) 的NER做法更为普遍。但由于该类方法缺少重要的词汇信息,所以目前很多方法都致力于将词汇信息引入模型中。

在本文中,我们将介绍ACL2021的一个中文NER模型:LEBERT,并且对该模型在Resume、Ontonote、Msra、Weibo等四个中文数据集上进行实验复现。

640?wx_fmt=png

论文链接:

https://arxiv.org/abs/2105.07148

实验复现代码:

https://github.com/yangjianxin1/LEBERT-NER-Chinese

02

目前为止,有许多工作尝试将BERT与词汇特征进行结合,来进行中文的NER任务。当前较为普遍做法如下图(a)所示,首先使用BERT对字符序列进行建模,捕获字符之间的依赖关系,然后将BERT输出的字符特征与词汇特征进行融合,最后输入到神经网络标注模型中。

该方法在一定程度上能够将词汇特征引入序列标注模型中,但由于仅在BERT末端的浅层神经网络中引入词汇特征,没有充分地利用上BERT模型的序列建模能力。因此,作者提出了在BERT的底层注入词汇特征的方法,模型整体示意图如下图(b)所示。

640?wx_fmt=png

就整体结构而言,模型的主要创新点如下:

  1. 引入了字符-词语对(Char-Words Pair)作为模型的输入特征。

  2. 基于模型适配器的思想,设计了一种Lexicon Adapter的结构,将词语特征与字符特征进行融合。

Char-Words Pair Sequence

为了在模型中引入词语特征,作者设计了一种字符-词语对(Char-Words Pair)的结构,对于输入文本中的每个字符,找出它在输入文本中匹配到的所有词语。

对于下图中的输入文本【美国人民】,字符【美】匹配到的词语为【美国、美国人】,字符【国】匹配到的词语为【美国、美国人、国人】,以此类推。其中,作者会提前构建一棵字典树(Trie树),用来匹配输入序列中的词语,然后得到每个字符对应的词语序列。

640?wx_fmt=png

给定长度为n的输入序列  ,其中  表示输入序列中的第i个字符。使用字典树进行词语匹配,得到每个字符对应的词语列表  ,其中  表示第i个字符匹配到的词语列表。最终得到字符-词语对  作为模型的输入。‍

Lexicon Adapter

对于每个位置,都包含了两种特征:字符特征与词语特征。为了将这两种特征进行融合,作者设计了一种Lexicon Adapter的结构,在第i个位置,Lexicon Adapter的输入表示为  ,这是个字符特征-词语特征对。

  1. 字符特征:其中  可以视为第i个字符的特征,表示由BERT的某一个transformer layer所输出的第i个字符的向量表征。具体由哪一个transformer layer输出可以自行设定,该问题会在论文的实验部分进行讨论。 

  2. 词语特征:  是一个词向量列表,  表示第i个位置的字符匹配到的第j个词语的词向量。

Lexicon Adapter的大致可以分为以下几个步骤:

  1. 维度对齐:将词向量与字符向量进行维度对齐。

  2. 权重计算:对于每个字符,计算它所匹配到的每个词向量的权重。

  3. 加权求和:对于每个字符,将词向量进行加权求和,得到该字符的加权词语向量。

  4. 特征融合:字符向量与加权词语向量相加,得到Lexicon Adapter的输出。

640?wx_fmt=png

维度对齐:

由于字符向量  与词向量  的维度不一致,所以首先将词向量进行非线性映射,将其与字符向量进行维度对齐。

权重计算:

对于每个字符,其词语列表中的每个词语的重要程度是不一样的,所以需要对每个词向量计算权重。令  ,则每个词语的权重计算方式如下:

其中  ,  表示第i个字符的第j个词向量的权重,  表示双线性注意力权重矩阵。

加权求和:

对于每个字符,根据其匹配到的每个词语的权重,对词向量进行加权求和,得到该字符的加权词语向量  。

特征融合:

将字符向量与加权词语向量相加,得到特征融合向量  ,最后将  进行dropout、layer norm和残差连接等操作,得到Lexicon Adapter的最终输出。

Lexicon Enhanced BERT

如下图所示,将Lexicon Adapter与BERT相结合,得到最终的模型结构。其中Lexicon Adapter可以插到任意一个Tranformer Layer的后面进行词语特征融合。经过作者的消融实验,发现Lexicon Adapter插到第一个Tranformer Layer后面的效果最好。具体的实验结果可以参考下一小节。

在解码阶段,作者采用CRF对LEBERT的输出进行解码,从而得到每个字符的label。

640?wx_fmt=png

作者在四个中文NER数据集上进行了实验,实验结果如下图。可以看到,LEBERT在所有数据集上的表现均为最佳,甚至超过了FLAT模型。证明了LEBERT的词汇信息引入的方式的有效性。

640?wx_fmt=png

除此之外,作者还对Lexicon Adapter的插入位置进行了消融实验。作者尝试了在不同的layer后面单独插入Lexicon Adapter,也尝试了在多个layer后面同时插入Lexicon Adapter,消融实验如下表所示。

640?wx_fmt=png

可以看到,当Lexicon Adapter插到BERT的第一层后面时,模型效果最好,这大概率是由于字符信息与词语信息能够在BERT中进行更加充分的信息交互。然而将Lexicon Adapter同时插入到多个layer后面时,模型效果不升反降,这是由于多层融合导致的模型过拟合。

03

本文在Resume、Ontonote、Msra、Weibo等四个中文数据集上,对LEBERT进行了实验复现。主要复现了BERT-Softmax、LEBERT-Softmax、BERT-Crf、LEBERT-Crf等四个模型。

本项目的实验设置如下:

  1. 所有模型均使用bert-base-chinese的预训练权重。

  2. 本项目将词向量信息在BERT的第一层之后进行融合,并且每个汉字,最多融合3个词向量。

  3. 在训练的时候,batch size均为32,BERT的原始参数的学习率设置为1e-5,LEBERT和CRF所引入的参数的学习率设置为1e-4。

  4. 对于Ontonote、Msra数据集训练10个epoch, 对于Resume和Weibo数据集训练30个epoch。

  5. 原论文的词向量使用的是包含两千万词语的tencent-ailab-embedding-zh-d200-v0.2.0。本项目使用的词向量为tencent-ailab-embedding-zh-d200-v0.2.0-s,其中包含两百万预训练的词向量,维度为200。

词向量下载地址:

https://ai.tencent.com/ailab/nlp/en/download.html

各模型在测试集上的表现如下表所示:

640?wx_fmt=png

各模型在验证集上的表现如下表所示:

640?wx_fmt=png

从复现结果来看,我们可以得出以下结论:

  1. 在四个数据集上,LEBERT的表现均优于BERT,这说明基于Lexicon Adapter的词汇信息引入方式是有效的。

  2. 在四个数据集上,LEBERT-Softmax的指标只比BERT-Softmax提升0.5-1.0个点,没有带来特别大的收益(也可能是训练策略、实现细节、词向量质量的原因)。

  3. 本项目复现的LEBERT-Softmax模型基本都达到了原论文的水平,并且BERT-Softmax模型在各个测试集上的表现均优于原论文的结果。这也就导致了,相较于原论文的实验,复现实验中的LEBERT-Softmax没有在LEBERT-Softmax的基础上提升很多。

  4. 相比于Softmax解码方式,CRF解码方式有时候会带来更差的效果(可能是因为训练策略的原因,如CRF学习率的设置不够合理,有待进一步验证)。

训练过程分析在这一小节中,我们将展示在训练过程中,BERT-Softmax与LEBERT-Softmax在各个测试集上的F1得分的变化曲线。如果仅从F1的变化曲线来比较,两者之间并没有拉开特别大的差距,这也从侧面印证了上一节中我们提到的,LEBERT-Softmax的指标只比BERT-Softmax提升了0.5-1.0个点,没有带来特别大的收益。所有测试集上的F1变化曲线:
640?wx_fmt=jpeg

Weibo测试集上的F1变化曲线:

640?wx_fmt=jpeg

Resume测试集上的F1变化曲线:

640?wx_fmt=jpeg

Ontonote测试集上的F1变化曲线:

640?wx_fmt=jpeg

Msra测试集上的F1变化曲线:

640?wx_fmt=jpeg

04

本文介绍了中文NER模型LEBERT的主要思想,在Resume、Ontonote、Msra、Weibo等四个中文数据集上进行了实验复现,并且介绍了复现实验的实现细节、实验结果与分析等。

总体来说,LEBERT模型的效果要优于BERT的效果,并且复现实验也基本达到了论文的实验效果,验证了基于Lexicon Adapter的词汇信息引入的有效性。不过笔者认为,这种词表增强的方法,非常依赖词表的质量,若使用的词向量质量不佳,会带来负面效果。如果在垂直领域内,构建该领域内的词表,并且对词向量进行预训练,应该能够得到较好的效果。

本项目的实验复现代码与使用到的中文NER数据集地址:

https://github.com/yangjianxin1/LEBERT-NER-Chinese

0?wx_fmt=png
AINLP
一个有趣有AI的自然语言处理公众号:关注AI、NLP、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试自动对联、作诗机、藏头诗生成器,调戏夸夸机器人、彩虹屁生成器,使用中英翻译,查询相似词,测试NLP相关工具包。
343篇原创内容
Official Account
进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点
640?wx_fmt=jpeg

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

640?wx_fmt=jpeg

阅读至此了,分享、点赞、在看三选一吧🙏


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK