首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

序列标注算法评估模块 seqeval 的使用

在NLP中,序列标注算法是常见的深度学习模型,但是,对于序列标注算法的评估,我们真的熟悉吗?

在本文中,笔者将会序列标注算法的模型效果评估方法和的使用。

序列标注算法的模型效果评估

在序列标注算法中,一般我们会形成如下的序列列表,如下:

一般序列标注算法的格式有,,等。其中,指的是从B开头标签开始的,同一类型(比如:PER/LOC/ORG)的,非O的连续标签序列。

常见的序列标注算法的模型效果评估指标有准确率(accuracy)、查准率(percision)、召回率(recall)、F1值等,计算的公式如下:

准确率: accuracy = 预测对的元素个数/总的元素个数

查准率:precision = 预测正确的实体个数 / 预测的实体总个数

召回率:recall = 预测正确的实体个数 / 标注的实体总个数

F1值:F1 = 2 *准确率 * 召回率 / (准确率 + 召回率)

举个例子,我们有如下的真实序列和预测序列,如下:

列表中一个有9个元素,其中预测对的元素个数为6个,那么准确率为2/3。标注的实体总个数为2个,预测的实体总个数为3个,预测正确的实体个数为1个,那么precision=1/3, recall=1/2, F1=0.4。

seqeval的使用

一般我们的序列标注算法,是用脚本实现,但这是用perl语言实现的。在Python中,也有相应的序列标注算法的模型效果评估的第三方模块,那就是,其官网网址为:https://pypi.org/project/seqeval/0.0.3/ 。

支持,标注模式,可用于命名实体识别,词性标注,语义角色标注等任务的评估。

官网文档中给出了两个例子,笔者修改如下:

例子1:

输出结果如下:

例子2:

输出结果同上。

在Keras中使用seqeval

笔者一年多年写过文章:使用CRF++实现命名实体识别(NER), 我们对模型训练部分的代码加以改造,使之在训练过程中能输出F1值。

在Github上下载项目,网址为:https://github.com/percent4/DL_4_NER 。修改utils.py中的文件夹路径,以及模型训练部分的代码(DL_4_NER/Bi_LSTM_Model_training.py)如下:

模型训练的结果如下(中间过程省略):

我们修改代码,在lstm_model.fit那一行修改代码如下:

此时输出结果为:

这就是seqeval的强大之处。

关于seqeval在Keras的使用,有不清楚的地方可以参考该项目的Github网址:https://github.com/chakki-works/seqeval 。

作者:jclian,喜欢算法,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201123A01MQ400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券