NER任务的评测指标

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ANNILingMo/article/details/80398473

1、NER 简介

NER(Named Entity Recognition,命名实体识别)又称作专名识别,是自然语言处理中常见的一项任务,使用的范围非常广。命名实体通常指的是文本中具有特别意义或者指代性非常强的实体,通常包括人名、地名、机构名、时间、专有名词等。NER系统就是从非结构化的文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体,比如产品名称、型号、价格等。因此实体这个概念可以很广,只要是业务需要的特殊文本片段都可以称为实体。

2、构建NER任务系统的方法

基于规则的方法
  1. 通常有基于规则的方法:基于规则进行实体抽取是较容易想到的方式。
  2. 针对有特殊上下文的实体,或实体本身有很多特征的文本,使用规则的方法简单且有效。比如,抽取文本中物品价格,如果文本中所有商品价格都是“数字+元”的形式,则可以通过正则表达式”\d*.?\d+元”进行抽取。但是如果待抽取文本中价格的表达方式多种多样,例如“一千八百万”、“伍佰贰拾圆”、“2000万元”,这个时候就要修改规则来满足所有可能的情况。
  3. 随着语料数量的增加,面对的情况也越来越复杂,规则之间也可能发生冲突,整个系统也可能变得不可维护。因此基于规则的方式比较适合半结构化或比较规范的文本中的进行抽取任务,结合业务需求能够达到一定的效果。
  4. 总结一下基于规则的实体抽取方式,优点:简单,快速;缺点:适用性差,维护成本高后期甚至不能维护。
基于模型的方法
  1. 从模型的角度来看,命名实体识别问题实际上是序列标注问题。序列标注问题指的是模型的输入是一个序列,包括文字、时间等,输出也是一个序列。针对输入序列的每一个单元,输出一个特定的标签。
  2. 以中文分词任务进行举例,例如输入序列是一串文字:“我是中国人”,输出序列是一串标签:“SSBME”,其中“BMES”组成了一种中文分词的标签体系,B表示这个字是词的开始Begin,M表示词的中间Middle,E表示词的结尾End,S表示单字成词。因此我们可以根据输出序列“SSBME”进行解码,得到分词结果“我\是\中国人“。
  3. 序列标注问题涵盖了自然语言处理中的很多任务,包括语音识别、中文分词、机器翻译、命名实体识别等,而常见的序列标注模型包括HMM,CRF,RNN等模型。

3、本文主要想介绍一下基于模型方法的NER系统的评价指标问题

(1)、精确匹配
为了便于说明,我们举一个例子:
sentence : The Hospital said it would probably know by Tuesday whether its patients had Congo Fever .
gold_tag: b-AGENT e-AGENT o o b-DSE m-DSE e-DSE o o b-TARGET m-TARGET m- TARGET m-TARGET m-TARGET e-TARGET o
predict_tag: o e-AGENT b-DSE o b-DSE m-DSE e-DSE o o b-AGENT b-DSE b-TARGET m-TARGET e-TARGET o o
上述例子中,每一个句子中的,每一个word都有一个gold 和 predict 标签。b、m、e分别表示实体的起始边界、中间边界、结束边界;s是表示当个实体,就是本身一个word就是一个实体。而诸如DSE、TARGET、AGENT表示是实体的类别。
实体只有这三种形式:[b,m….,e]、[b,e]、 [s],实体是有边界的,在精确匹配过程中,需要预测实体类别以及边界范围,只有这两部分都匹配成功,才算预测正确,否则是预测错误。
金标的实体有3个,是上述gold_tag加粗部分, 预测准确部分是predict_tag 加粗部分。
在自然语言处理的任务中,而且数据非常均匀,不存在很极端的数据的情况下,评价指标我们一般会用F值来评测结果。怎么计算F值呢?
给出五个参数:gold_num、predict_num 、correct_num、precision、 recall 、 f1;依次表示金标数量、预测数量、预测准确的数量、准确率(精确率)、召回率、F值。

precision=correctnum/predictnum
recall=correctnum/goldnum
f1=(2precisionrecall)/(precision+recall)

此例中, gold_num = 3、 correct_num = 1 , predict_num = 2,代入公式我们可以得出precision = 1/2, recall = 1/3、f1 = 2/5
为什么此例中correct_num = 1 , predict_tag和gold_tag中只有三个标签b-DSE m-DSE e-DSE 是一致的,类别和边界范围都正确, predict_num = 2 ? 这是因为在预测句子所有标签,只有两个边界构成实体。

展开阅读全文

没有更多推荐了,返回首页