NLP-Beginner 任务四:基于LSTM+CRF的序列标注
1.数据集
本次使用的数据集为CONLI2003 数据集地址。
数据集文件有train.txt dev.txt text.txt
数据集共有4列,第一列为单词,第二列为词性标签,第三列为句法组块标签,第四列为命名实体标签。每行为一个单词。只有当同一类型的两个短语紧跟在一起时,第二个短语的第一个单词才会有标记B-type,以显示它开始了一个新短语。标记为O的表示不属于词组。
EU NNP B-NP B-ORG
rejects VBZ B-VP O
German JJ B-NP B-MISC
call NN I-NP O
to TO B-VP O
boycott VB I-VP O
British JJ B-NP B-MISC
lamb NN I-NP O
. . O O
2.知识
2.1 命名实体识别(NER)
命名实体识别(Named Entity Recognition,NER),是自然语言处理中的一项基础任务,应用范围非常广泛。一般包括3大类(实体类,时间类,数字类)和 7小类(人名、地名、组织机构名、时间、日期、货币、百分比)。
NER英文命名实体识别的目标是识别句子中每个词语的实体类型,包括5大类:PER(人名)、LOC(地名)、ORG(组织名)、MISC(其它类型实体)、O(非实体) 。
由于实体有时是由多个单词组成的,为了区分实体,一般有起始词(Begin) 和中间词(Inside)
NER任务常转化为序列标注问题 ,利用(三位标注)BIO、BIOES和(四位序列标注)BMES等常用的标注规则对经过分词的文本进行token标注。序列标注的命名实体识别方法中,CNN、BERT、LSTM等深度模型与条件随机场CRF结合已经成为最主流和普遍的方法。
2.2LSTM
LSTM是LSTM 是一种用于克服标准 RNN 中梯度消失问题的改进版。它通过引入记忆单元和门机制(输入门、遗忘门和输出门)来控制信息的流动,能够捕捉较长序列中的依赖关系。
LSTM结构如下:
→ [LSTM] → [LSTM] → [LSTM] → [LSTM] →
BiLSTM则是在LSTM基础上的进一步改进,它通过两个独立的 LSTM 网络对输入序列进行 双向处理 ,分别从前往后和从后往前处理序列信息。
双向性 :BiLSTM 的核心特性是它在处理序列时不仅从前向后(正向)处理,还从后向前(反向)处理。这种双向的结构使得 BiLSTM 可以同时获取过去和未来的信息,从而更好地捕捉序列中的上下文关系。
应用场景 :在自然语言处理(NLP)任务中,双向信息特别有用,因为某个词语的意义往往依赖于它前后的上下文。比如,命名实体识别(NER)、语法分析、机器翻译等任务都广泛使用 BiLSTM。
BiLSTM结构如下:
→ [LSTM] → [LSTM] → [LSTM] → [LSTM] →
← [LSTM] ← [LSTM] ← [LSTM] ← [LSTM] ←
2.3条件随机场(CRF)
条件随机场(CRF)是一种在已知一组输入随机变量条件的情况下,输出另一组随机变量的条件概率分布模型;其前提是假设输出随机变量构成马尔可夫随机场;条件随机场可以应用于不同类型的标注问题,例如:单个目标的标注、序列结构的标注和图结构的标注等。
CRF模型是在隐马尔可夫模型(HMM)模型的基础上发展起来的。根据HMM模型的齐次马尔科夫性假设:假设隐藏的马尔科夫链在任意时刻 t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t 无关。但CRF模型不仅考虑前一时刻的状态,还考虑其前面与后面的多个状态。因此一般来说,CRF会具有更好的标记性能。
3.模型详解
假设 x 是一个短句子序列,共包含5个单词,记为(w0,w1,w2,w3,w4)。其中,x 中 [w0,w1] 是人名,[w3] 是组织机构名称,其他非实体均为“O”。
第一层为词嵌入层。句中的每个单词是一条包含词嵌入和字嵌入的词向量,词嵌入通常是事先训练好的,字嵌入则是随机初始化的。所有的嵌入都会随着训练的迭代过程被调整。
第二层为 BiLSTM 编码。该层的输入是将单个词w0通过onehot编码,词嵌入之后的k维稠密向量,BiLSTM层的输出表示该单词对应各个类别的分数,见下图:
其中,W0,BiLSTM节点的输出是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) and 0.05 (O),输出这些标签的概率得分后将其传入CRF层。
第三层为CRF打分层。所有的经 BiLSTM 层输出的分数将作为 CRF 层的输入,类别序列中分数最高的类别就是预测的最终结果
BiLSTM在这个例子中貌似已经得出了正确答案,但并不是总是这样的,还需要CRF。
CRF能为BiLSTM提供转换的一些约束,拿词性标注举例子,形容词后面大概率会跟名词,名词后面大概率会跟动词,还可以提供整个序列的概率统计,前面出现了某些单词后,这个位置应该是谓词。因为LSTM只是对每一步的向量进行过滤和叠加,这些信息是LSTM不好捕捉的。
4.实验
4.1基本参数
使用的数据集是CoNLI-2003
词嵌入初始化:GloVe预训练模型初始化(glove.6B.50d.txt)
学习率:0.001
n_classes = 5 # 分类个数
batch_size = 250
embedding_size = 50 # 每个词向量有几维(几个特征)
hidden_size = 50
epochs = 10
4.2实验结果
在绘制图片时,出现使用show()命令不显示图像的问题,查询得知在无显示环境(我的是在服务器上)是不显示图像的,只能保存图像。结果如下图


