《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

关键技术调研

命名实体识别是自然语言处理中的一项基础又关键的技术。命名实体通常指的是文本中具有特别意义的实体,例如人名、地名、组织机构名等等。根据他的定义,可以预见,NER的关键在于,实体边界定义是否准确、实体标签预测是否准确。NER有四种常用的方法,一是基于规则和词典的方法,不需要标注数据,依赖人工规则。早期的命名实体识别是基于规则的,该方法可移植性差,耗时长,需要语言学领域的专业知识。二是无监督学习方法,不需要标注数据,主要是基于聚类的方法,根据文本相似度分出不同的实体类别组,自动生成规则和实体。三是基于特征的有监督学习算法,依赖于特征工程。传统的机器学习算法,例如隐马尔可夫模型HMM以及条件随机场CRF都可以实现。四是基于深度学习的方法,需要大量标注训练语料。随着深度学习的快速发展,神经网络在处理NLP任务时表现出来强大的能力,性能超过传统的机器学习算法。因此这成为最常用的NER方法。目前最常用的是BILSTM+CRF的方法。常用思路大体分为三步。第一,分布式文本表示,预训练,word embedding。第二,上下文编码,通常使用CNN、RNN等。第三,tag编码,通常使用softmax、CRF等。

实现系统的核心思想和算法描述

数据集

数据集用的是论文ACL 2018 Chinese NER using Lattice LSTM中收集的简历数据,数据的格式的每一行由一个字及其对应的标注组成,标注集采用BIOES,句子之间用一个空行隔开。数据集分为三部分。训练数据集,存储在data/demo.train.char文件内。验证集,存在data/demo.dev.char。测试集存在data/demo.test.char。在数据集CoNLL中,实体被标注为四种类型,LOC代表地名,ORG代表组织机构名,PER代表人名,GPE通常表示政治方面的地理。标注集采用BIOES形式,B是实体的开始(begin),I是实体内部(inside),O是实体外部(outside),S是单独实体(single)。S可以是某国的简称,例如中、法、美等。BIOES是目前最通用的实体标注方法。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

核心思想及算法描述

Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition,论文的源码地址。实验基于BILSTM-CRF进行命名实体识别。读入语料后进行词嵌入,分批次使用BILSTM进行训练,借助WIKI语料训练的词向量来特征提取,得到每个词预测标签的序列,最后经过CRF层输出每个词的预测标签。BILSTM可以读取上下文信息。CRF负责根据上下文标签信息对最后的标签输出加以约束。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

系统主要模型流程

模型分为四层。
第一层是表示层。得到字典、词和ID、标签和ID的一一映射。分批次进入第二层。
第二层是BILSTM层。将表示层的输出转化为词向量,随机失活后输入到BILSTM层,开始训练。
第三层是隐藏层。BILSTM的输出由隐藏层的状态决定,这一层输出的是句子里每个词对应标签的概率分数。
第四层是CRF层。以上一层的输出也就是发射概率矩阵,以及CRF自带的转移概率矩阵,作为CRF模型的参数,获得最终输出y,每个词的预测标签序列。
训练阶段采用随机梯度下降adam,学习率设置为0.001,共遍历100次数据集,每个批次(batch size)训练20个。训练过程中随机失活,概率为0.5,避免过拟合,提高泛化能力。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

表示层

读取数据

模型首先读取训练集、验证集、测试集。读取后最终效果是一个词对应一个tag。Load_sentence得到train sentence[0],如图所示。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

分批次输入数据

将数据分批次输入,产生batch训练数据。训练集的batch size是20,验证集和测试集都是100。BatchManager类将所有样本按照长度排序,生成batch的时候,长度相近的在一个batch内,batch内按照最长的长度进行zero pad。一个batch里的所有句子统一到一个长度。

词嵌入

BILSTM只能接受向量输入,因此需要词嵌入(word embedding)把字转化为向量表示。经过词嵌入,意义相近的词的余弦距离较小,便于后续训练。create_dico函数将字和标签按出现频率排列,构造item到id的映射。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读
Create mapping函数构建字和id、标签和id的一一映射。针对训练集,分别构建了字和id的一一映射、标签和id的一一映射。将中文转化为字向量,获得Embedding。使用Wikipedia中文训练的100维词向量,进行词向量装载。字和标签分别为100和20维的,通过一个embedding layer然后将两者的feature拼接起来120为最后的feature map。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

BILSTM层

以表示层的输出也就是embedding进行dropout,将结果作为BILSTM层的输入。首先创建model,将配置文件加载进来。因为有预训练的embedding,加载完毕即可。通过对词进行词嵌入,将形状为[bacth_size, seq_length]的输入数据转化为形状为[bacth_size, seq_length,embedding_dim]的矩阵。将每个batch随机打乱后,迭代训练。选出最好的f1值对应的模型,并保存。返回[batch_size, num_steps, 2lstm_dim],2lstm_dim是因为双向LSTM。

隐藏层

BILSTM层输出的数据格式为[batch_size, num_steps, 2*lstm_dim],其实是[[batch_size, num_steps, lstm_dim],[batch_size, num_steps, lstm_dim]]。返回logits。最后得到每个词属于各个标签的概率值。num_steps是输入句子的长度,num_tags是每个字对应预测标签的概率。
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

CRF层

CRF是判别式的概率图模型,用于克服标签偏斜的问题。已知在隐藏层的输出中,包含了每个词预测标签的概率,最终结果直接取最高概率的标签也未尝不可。但是CRF层有转移特征矩阵A,可以约束输出标签之间的顺序。例如,I标签不可能在开头出现。或者B-ORG后面直接跟I-PER是不合理的。BILSTM侧重于上下文信息,而CRF层更侧重标签前后的约束信息。
设定上一层的输出矩阵是P,Pi,j为第i个词映射到第j个标签的非归一化概率。P也就是发射概率矩阵。CRF内部也存在一个转移概率矩阵A,Ai,j 是从标签i转移到标签j的概率。例如从B-PER到I-PER的概率是0.9,那么对应分数就是0.9。转移矩阵的值会随着训练迭代更新。
输入X=(x1,x2,…,xn),得到一个预测label序列Y=(y1,y2,…,yn)
我们定义这个预测的得分为
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读
求出得分S(X,y)之后,还需要进行softmax归一化处理,求出概率值
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读
最大化log(p(y|X))也就是最小化损失函数- log(p(y|X))。调用crf_log_likelihood函数,求最大似然函数和转移矩阵。解码时,由显式序列logits和状态转移矩阵,调用维特比算法求最优标注序列
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读
《Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition》论文解读

模型评估分析

命名实体识别可以看作字级别的多分类问题。评估指标可以是precision、recall以及F1值。由命名实体识别的定义可知,对应评测方向也有两种。一是标签预测是否准确,二是实体边界划定是否准确。

准确率和召回率

准确率(precision)是指正确判定为正样本的个数占分类器判定为正的个数之比。召回率(recall)是指正确判定为正样本的个数占真正的正样本的个数之比。实验中每个批次都记录准确率和召回率。结果符合预期。

F1

F1值是精确率和召回率的调和平均值,克服了precision和recall的缺点。


优化:后期可以调用bert或者ernie预训练模型提升效果,用预训练模型做embedding