- 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
- 个人主页:有梦想的程序星空
- 个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
- 如果文章对你有帮助,欢迎
关注
、点赞
、收藏
、订阅。
1.BiLSTM-CRF简介:
在NLP领域中,分词、词性标注、序列标注、命名实体识别等是科研和工程中经常遇到的任务,其中BiLSTM-CRF是用来解决这些任务的非常流行的算法。
本文将简单介绍下BiLSTM-CRF算法的原理。
论文地址:https://arxiv.org/pdf/1603.01360.pdf
论文题目为:Neural Architectures for Named Entity Recognition。
2.BiLSTM-CRF的数据描述:
假设数据集有两种实体类型:人物(PER)和地点(LOC),并采用BIO标注体系。
因此会有五种实体标签:B-PER、I-PER、B-LOC、I-LOC、O。
3.BiLSTM-CRF的结构原理:
首先,BiLSTM-CRF的输入是词向量,输出是每个单词的预测的序列标注。
第一步:单词输入,单词进入look-up layer层,使用CBOW、Skip-gram或者glove模型映射为词向量。
第二步:词向量进入BiLSTM层,通过学习上下文的信息,输出每个单词对应于每个标签的得分概率。
例如,对于w0,BiLSTM节点的输出得分是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) 以及0.05 (O),这些score作为CRF layer的输入。
此处的标签的得分概率作为CRF模型中的未归一化的发射概率。
第三步:所有的BiLSTM的输出将作为CRF层的输入,通过学习标签之间的顺序依赖信息,得到最终的预测结果。
如下图1和图2所示:
图1:BiLSTM-CRF的结构图
图2:BiLSTM-CRF的网络图
4.CRF层的作用:
在BiLSTM-CRF模型中,若直接通过取BiLSTM输出的标签概率最大值作为最终预测输出,可能会出现诸如I作为开头的词、存在两个连续的B的词、B-PER和I-LOC连在一起等情况,模型效果将会降低。
CRF层可以通过学习数据集中标签之间的转移概率从而修正BiLSTM层的输出,从而保证预测标签的合理性。
5.BiLSTM层和CRF层的区别
BiLSTM层学习的是序列的上下文信息,
CRF层学习的是标签之间的依赖信息。
关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!