论文阅读:BiLSTM-CRF实现序列标注

论文名称:《Bidirectional LSTM-CRF Models for Sequence Tagging》
论文地址:https://arxiv.org/pdf/1508.01991v1.pdf
相关代码:https://github.com/BrikerMan/Kashgari(Keras)

《Bidirectional LSTM-CRF Models for Sequence Tagging》是Baidu Research在2015年发表的一篇论文,它使用双向长短期记忆网络LSTM加条件随机场CRF的方式解决文本标注的问题。该方法至今仍是命名实体识别的主流方法之一。

之前一直不理解的是RNN、LSTM、CRF、HMM都可以单独实现文本标注,为什么要将LSTM和CRF结合起来?本文就来看看它是如何实现的。文后结合命名实体识别NER,展示了它的具体使用方法。

文本标注用途非常广泛,不仅标注切分,还可以通过标注拆分出关键信息,供下游应用使用。在该文发表之前,实现文本标注常用的方法有线性统计模型,比如隐马尔可夫模型HMM、最大熵马尔可夫模型MEMM、条件随机场CRF;卷积网络、卷积网络与CRF相结合的方式;以及循环神经网RNN。

文中对比了长短期记忆网络LSTM,双向长短期记忆网络Bi-LSTM,以及Bi-LSTM+CRF处理自然语言标注。论文的主要贡献是:(1)系统地对比了上述三种模型在各数据集上的效果;(2)LSTM模型更好地利用了文本上下文中的信息,CRF处理标签之间的关系,二者结合较之前模型效果更佳;(3)相较于之前模型,从上下文中获取了更多信息,从而减小了对词向量的依赖。

模型原理

在模型原理部分,文中介绍了从RNN到CRF各个模型,以及LSTM+CRF结合的原理。

RNN

论文中对循环RNN在命名实体识别NER上的应用描述非常清晰到位,简单翻译如下:

下图描绘了RNN结构,它由输入层x,隐藏层h和输出层y组成。在命名实体识别问题中,x是输入文本,y是输出标签。模型给输入文本中的每个词做标注。

命名实体识别常用BIO标法和BIOES标法,其中B-begin表示开始,I-inside表示内部,O-outside表示非实体,E-end表示实体尾部,S-single表示该词本身就是一个实体。文中使用BIO标注,其中EU是ORG组织型实体,rejects非实体,German为Miscellaneous型实体,call非实体。

输入文本数据时还需要进行一些处理,比如提取词向量,one-hot变量,或提取其它统计特征(图中忽略此步骤),作为x输入,输出y是该词对应各个类别的概率。每个词一般称作一个时间点t。

RNN计算公式如下:

其中t时刻隐藏层的值h(t),由前一个隐藏层的值h(t-1)和该时刻的输入x(t)计算得出;t时刻输出值y(t),由当前隐藏层h(t)计算得出,U,W,V是模型参数,通过调参得到;公式中f和g是激活函数。

LSTM与Bi-LSTM

LSTM是RNN的加强版,主要解决RNN对距离较远文本之间关联较差的问题;文中虽然给出了原理图和公式,但对于之前没有学习过LSTM的读者来说,还是无法理解,此处略过,将其看成升级版RNN即可。Bi-LSTM是双向LSTM,它同时关注前文和后文对标注的影响,如下图所示:

CRF

条件随机场CRF是从隐马尔可夫模型HMM以及最大熵马尔可夫模型MEMM进化而来的。论文中只做了一些简要的介绍,下面以命名实体识别为例,引入一些CRF相关原理。

比如标注“EU rejects German call”, 文本输入记作X(x1,x2,x3,x4);它的标签为“B-ORG, O, B-MISC, O”,即输出为y(y1,y2,y3,y4),通过N组数据训练出模型,最终目标是输入任意文字,模型可输出标注信息。计算yi的具体方法是:

Yv是由所有位置的文本X,以及除位置v外其它位置的Y决定的(前后标签都可以用);比如上例中标签y2(O)是由词序列X“EU rejects German call”这四个词的词义及其位置,以及除y2外其它位置的词性Y“B-ORG, ?, B-MISC, O”计算得出的。

其中序列X和Y内部的规律可以理解成图结构,它们由点V(标签)和连接各点的边E(标签间相互关系)组成。1971年提出的随机场的理论,给定条件X下标签Y的联合分布为:

其中g可理解为X映射到Y的规则,比如X“EU”一般是“B-ORG”。而f是相邻Y之间的关系,比如一般两个动词不会接连出现。计算的目标是调节模型参数θ(包括λ和μ),使在X的条件下最可能计算出Y。

相比之前模型,CRF计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布,但CRF的参数也更多,训练量更大,复杂度更高。

综上,与LSTM相比,CRF的优势是考虑了标签间的关系。

LSTM-CRF

LSTM-CRF结合了上述两种模型。CRF将状态转移矩阵作为参数,并使用之前和之后的标签预测当前标签。

如图所示,从下到上依次是:文本数据输入LSTM网络,再传入上层的CRF网络,最终生成标注数据。具体从公式可见:

(个人认为上述公式中的+不是指矩阵加法,而是同时考虑两种逻辑)

输出根据各时点的输入词x,标签i(后面具体解释),以及模型的参数θ决定;具体计算方法是对于每个时点t(每个单词),计算LSTM的f和CRF的A。

其中的f是LSTM的输出,它是一个矩阵,其中包含LSTM模型计算出的每一个单词,对应每一个标签的概率,如果标签个数为L,LSTM输出的矩阵大小为L×T,每点存储一个概率值。转移评分A是从前一个标签到后一个标签的转移概率,如果标签种类为L,则转移矩阵的大小为LxL。

具体讲,上图中的圆点是LSTM的输出f,即每一个字是各种标签的概率,颜色越深表示可能性越大,图中的连线是A,它描述了从前一种标签到后一种标签转换概率,比如B-MISC之后更可能是O而不是其它的B-MISC。综合二者,最终得到了得分最高的橙色路径。

CRF的连接方式和调参方式也类似神经网络。整个网络也是先向前传播LSTM->CRF->loss,再反向传播调参。

当前更加流行的实现是BERT+Bi-LSTM+CRF,使用BERT提取的词向量,LSTM+CRF结合的标注算法。

实战

下面来看看具体的实现方法,Kashgari是一种工业化的命名实体识别解决方案,github加星1.9K,其中支持多种NER方法,也包含论文中介绍的LSTM+CRF,来自github的介绍如下:

建议阅读代码,以便更好理解具体实现。

下载源码:

$ git clone [https://github.com/BrikerMan/Kashgari](https://github.com/BrikerMan/Kashgari)

下载环境docker镜像:

$ docker pull tensorflow/tensorflow:2.3.1-gpu-jupyter

目前最高版本tensorflow+gpu+jupyters,其python版本3.6.9

启动镜像:

$ nvidia-docker run -d -p 8894:8888 -v/raid/xieyan/2020:/tf/2020/ tensorflow/tensorflow: 2.3.1-gpu-jupyter

进docker之后,安装Kashgari(先编辑一下pip.conf,下载比较快)

$ cd Kashgari下载目录
$ pip install -r requirements.txt
$ python setup.py install

参考

五分钟搭建一个基于BERT的NER模型
https://www.jianshu.com/p/1d6689851622

Albert模型国内下载地址(下载tiny版本即可)
https://github.com/bojone/albert_zh

效果评测
https://eliyar.biz/nlp_chinese_bert_ner/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355