互联网资讯 / 人工智能 · 2023年11月5日 0

Keras+LSTM+CRF实践中的命名实体识别NER

文本分词、词性标注和命名实体识别都是自然语言处理领域里面很基础的任务,他们的精度决定了下游任务的精度,其实在这之前我并没有真正意义上接触过命名实体识别这项工作,虽然说读研期间断断续续也参与了这样的项目,但是毕业之后始终觉得一知半解的感觉,最近想重新捡起来,以实践为学习的主要手段来比较系统地对命名实体识别这类任务进行理解、学习和实践应用。

当今的各个应用里面几乎不会说哪个任务会没有深度学习的影子,很多子任务的发展历程都是惊人的相似,最初大部分的研究和应用都是集中在机器学习领域里面,之后随着深度学习模型的发展,也被广泛应用起来了,命名实体识别这样的序列标注任务自然也是不例外的,早就有了基于LSTM+CRF的深度学习实体识别的相关研究了,只不过与我之前的方向不一致,所以一直没有化太多的时间去关注过它,最近正好在学习NER,在之前的相关文章中已经基于机器学习的方法实践了简单的命名实体识别了,这里以深度学习模型为基础来实现NER。

命名实体识别属于序列标注任务,其实更像是分类任务,NER是在一段文本中,将预先定义好的实体类型识别出来。

NER是一种序列标注问题,因此他们的数据标注方式也遵照序列标注问题的方式,主要是BIO和BIOES两种。这里直接介绍BIOES,明白了BIOES,BIO也就掌握了。

先列出来BIOES分别代表什么意思:

B,即Begin,表示开始 I,即InteRMediate,表示中间 E,即End,表示结尾 S,即Single,表示单个字符 O,即OtheR,表示其他,用于标记无关字符

比如对于下面的一句话:

姚明去哈尔滨工业大学体育馆打球了

标注结果为:

姚明 去 哈尔滨工业大学 体育馆 打球 了 B-PER E-PER O B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG E-ORG B-LOC I-LOC E-LOC O O O

简单的温习就到这里了,接下来进入到本文的实践部分,首先是数据集部分,数据集来源于网络获取,简单看下样例数据,如下所示:

Keras+LSTM+CRF实践中的命名实体识别NER

tRAIn_data部分样例数据如下所示:

当 O ϣ O 望 O 工 O 程 O 救 O 助 O 的 O 百 O 万 O 儿 O ͯ O 成 O 长 O 起 O