作者:高开远 学校:上海交通大学 研究方向:自然语言处理 写在前面其实实体识别这块看了挺久了的,今天就来好好聊一聊它。实体识别(Name Entity Recognition)是属于NLP任务中的序列标注问题:给定一个输入句子,要求为句子中的每一个token做实体标注(如人名、组织/机构、地名、日期等等)。 NER算法回顾明白了NER任务的目的,那我们就来看看具体是怎么实现的。到目前为止,可以大致分为基于规则、基于传统机器学习方法和基于深度学习方法这三大类(其实很多任务的算法都可以从这三个方面去入手)。基于规则的方法效果可能很高,但是实在是太硬核了,很大程度上取决于个人对规则的定义,而且费时费力,基本不可取。 传统机器学习不是今天的重点。简单介绍一下标准流程: Training
Predicting
深度学习方法也不是今天的重点。最经典最sate-of-the-art的模型就是LSTM+CRF(当然得除去bert这种) paper list:√Fast and Accurate Entity Recognition with Iterated Dilated Convolutions(2017) [paper] √Chinese NER Using Lattice LSTM(2018)[paper] √Adversarial Transfer Learning for Chinese Named Entity Recognition √Adversarial Learning for Chinese NER from Crowd Annotations(2018)[paper] √Adaptive Co-Attention Network for Named Entity Recognition in Tweets(2018)[paper] Paper: IDCNN for NER前面废话了那么多,赶紧开始吧。 Fast and Accurate Entity Recognition with Iterated Dilated Convolutions(2017)这篇论文就是基于CNN类来做命名实体识别的。 传统CNN的缺陷CNN运用于文本处理,有一个劣势,就是经过卷积之后,末层神经元可能只是得到了原始输入数据中一小部分的信息。所以为了获取上下文信息,可能就需要加入更多的卷积层,导致网络原来越深,参数越来越多,而模型越大越容易导致过拟合问题,所以就需要引入Dropout之类的正则化,带来更多的超参数,整个网络变得庞大冗杂难以训练。 Dilated CNN基于上述问题,Multi-Scale Context Aggregation by Dilated Convolutions一文中提出了dilated convolutions,中文意思大概是“空洞卷积”。正常CNN的filter,都是作用在输入矩阵一片连续的位置上,不断sliding做卷积,接着通过pooling来整合多尺度的上下文信息,这种方式会损失分辨率。既然网络中加入pooling层会损失信息,降低精度。那么不加pooling层会使感受野变小,学不到全局的特征。如果我们单纯的去掉pooling层、扩大卷积核的话,这样纯粹的扩大卷积核势必导致计算量的增大,此时最好的办法就是Dilated Convolutions(扩张卷积或叫空洞卷积)。 具体使用时,dilated width会随着层数的增加而指数增加。这样随着层数的增加,参数数量是线性增加的,而receptive field却是指数增加的,可以很快覆盖到全部的输入数据。 对应到文本上,输入是一维向量: Iterated Dilated CNN论文中提出的IDCNN模型是4个结构相同的Dilated CNN block拼接在一起,每个block里面是dilation width为1,1,2的三层DCNN。 关于IDCNN在NER任务的实现: Paper: Chinese NER Using Lattice LSTM作者首先综述了目前NER算法的主要思路,然后集中于LSTM-CRF模型分析了集中变种模型的优缺点:
Lattice LSTM 模型基于上述问题,作者们提出了一种新型的Lattice LSTM:将潜在的词语信息融合到基于字模型的传统LSTM-CRF中去,而其中潜在的词语信息是通过外部词典获得的。如下所示,lattice lstm模型会在字向量的基础上额外获取词特征的信息。 但是上述模型中每个词语路径都考虑的话,会导致模型复杂度的指数增长,于是作者利用门结构来控制信息流动。例如,以最后一个“桥”字为例,除了需要考虑该字本身的向量特征,还需要考虑“长江大桥”和“大桥”这些词语信息的贡献量,而这个就是由图中红色圈圈代表的门结构来控制信息流入的。 在论文中,作者们还提出了自己改进过的基于字和词语的NER模型,但是这些应该都是为了最后的Lattice LSTM做铺垫的,所以这里就不做详细介绍。关于Lattice的整体模型如下:
注意这里并没有输出门,因为我们的词向量只是作为一种额外特征,最终的类别标记还是从字向量那一套LSTM中获取。
这里两个alpha系数是门控制输出 的归一值。计算公式为: 至此LSTM模型部分已经搭建完成了,总结一下:就是由两套LSTM子结构分别是基于字的和基于词的,然后得到基于词的状态输出之后将其加入到基于字的结构中输出预测。 代码实现官方开源代码 Paper:ATL for NER来自论文Adversarial Transfer Learning for Chinese Named Entity Recognition with Self-Attention Mechanism。
Paper:Adversarial Learning for Chinese NER from Crowd Annotations在训练命名实体识别系统时,往往需要大量的人工标注语料。为了保证质量,通常需要雇佣专家来进行标注,但这样会造成代价成本高且规模难于扩大。另一种方式是采用众包标注方法,雇佣普通人员来快速低成本完成标注任务,但这样获取的数据含有很多噪音。 Baseline: LSTM-CRF右边模块属于传统的NER网络:BiLSTM+CRF ,在文章中也被叫做 private LSTM,用于拟合不同标注员的独立标注。 Worker Adversarial对抗学习部分,首先第一块是一个 Paper:Adaptive Co-Attention Network for Named Entity Recognition in Tweets文章提出之前关于NER的研究仅仅关注文本信息是不够的,因为在社交网络(如推特等)上很多内容都是包含图片的,而且如下图所示仅仅考虑文本信息我们可能会认为'Rocky'是一个人名,但是综合考虑图片信息之后就可以判定其为一条狗。基于以上,文章提出一种综合考虑文本和图像信息的NER网络。 对于文本信息: 使用CNN提取字符向量表示,并从lookup table中提出word embedding。输入为两者的拼接,送入Bi-LSTM抽取更高层特征表示。 对于图像信息: 利用16层的VGG-net,注意本文抽取的特征是last pooling layer。并用一个全联接层转化为和文本信息相同维度的向量。 Adaptive Co-attention Network如上图右半部分所示,包含了两个attention和两个gate mechanism。 Word-Guided Visual Attention用于表征对于输入中的特定的词,对应整个图像中的哪个部分。输入为第t时间步的单词表示h_{t}和图像特征矩 v_{I} ,然后做attention操作 Image-Guided Textual Attention同上,通过结合图片信息,来综合考虑句子中每一个词对整体的贡献。输入为句子经过LSTM后的所有隐层表示和上一步得到的图像权重 $w_{b, e}^{d}$ Gated Multimodal Fusion用于自适应地从文本和图像中学习有用的特征。 Filtration Gate上面的多模态的信息用门控的方式进行融合,由于文本信息还是占主要部分,再通过一个过滤门控,因为,在预测动词或副词的标签时,图像特征是不必要的。由于多模态融合特征或多或少地包含图像特征并且可能引入一些噪声,使用过滤门来组合来自不同信号的特征,这些特征更好地代表解决特定问题所需的信息。 最后是一个标准的CRF tagging层。 原文链接: |
|