赞
踩
本文原作者:梁源,经授权后发布。
原文链接:https://cloud.tencent.com/developer/article/1454904
序列标注是NLP中一项重要的任务,它主要包括分词,词性标注,命名实体识别等子任务。通过对预训练后的BERT模型进 行finetune,并与CRF进行结合,可以很好地解决序列标注问题。上篇文章对BERT官方源码进行了介绍,本篇文章将介绍 如何通过BERT解决序列标注问题。同时本篇文章将BERT+CRF模型与其他模型进行了对比,并且对BERT在序列标注上任务上存在的问题进行了分析。
所谓序列标注,就是对一个一维线性输入序列,给线性序列中的每个元素打上标签集合中的某个标签。所以,其本质上是对线性序列中每个元素根据上下文进行分类的问题。 中文的序列标注问题,往往可以把一个汉字看做线性序列的一个元素,而不同任务其标签集合代表的含义可能不太相同,但是相同的问题都是:如何根据汉字的上下文给汉字打上一个合适的标签。无论是分词,还是词性标注,或者是命名实体标注,道理都是相通的。 在深度学习流行起来之前,常见的序列标注问题的解决方案都是借助HMM模型,最大熵模型,CRF模型。尤其是CRF,它是解决序列标注问题的主流方法。随着深度学习的发展,RNN在序列标注问题上取得了巨大的成功,Bi-LSTM+CRF模型,在该任务上表现的十分出色。但是当我们把Bi-LSTM升级为BERT,在序列标注上的准确率和训练效率上都达到了新的高度。同时发现,BERT+CRF模型可以同时解决中文分词和词性标注两个任务,下面我们就通过这两个子任务分析BERT在序列标注上的应用。
BERT通过”Fill in the blank task” 以及 “Next sentence prediction” 两个任务进行预训练。在预训练模型的基础上稍加修改就可以处理多个下游任务。如下图所示,中文文本的序列标注问题,每个序列的第一个token始终是特殊分类嵌入([CLS]),剩下的每一个token代表一个汉字。BERT的input embeddings 是token embeddings, segmentation embeddings 和position embeddings的总和。其中token embeddings是词(字)向量,segment embeddings 用来区分两种句子,只有一个句子的任务(如序列标注),可以用来区分真正的句子以及句子padding的内容,而position embedding保留了每个token的位置信息。BERT的output 是每个token的enco
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。