命名实体识别(Named Entity Recognition,NER)是 NLP 几个经典任务之一,通俗易懂的来说,就是从一段文本中抽取出需求的关键词,如地名,人名等。
如上图所示,Google、IBM、Baidu 这些都是企业名、Chinese、U.S. 都是地名。就科学研究来说,命名实体是非常通用的技术,类似任务型对话中的槽位识别(Slot Filling)、基础语言学中的语义角色标注(Semantic RoleLabelling)都变相地使用了命名实体识别的技术;而就工业应用而言,命名实体其实就是序列标注(SequentialTagging),是除分类外最值得信赖和应用最广的技术,例如智能客服、网络文本分析,关键词提取等。
下面我们先带您了解一些 Gated RNN 和 CRF 的背景知识,然后再教您一步一步用 飞桨(PaddlePaddle)实现一个命名实体任务。另外,我们采用经典的 CoNLL 数据集。
Part-1:RNN 基础知识
循环神经网络(Recurrent Neural Networks,RNN)是有效建模有时序特征输入的方式。它的原理实际上非常简单,可以被以下简单的张量公式建模:
其中函数 f, g 是自定的,可以非线性,也可以就是简单的线性变换,比较常用的是:
虽然理论上 RNN 能建模无限长的序列,但因为很多数值计算(如梯度弥散、过拟合等)的原因致使RNN 实际能收容的长度很