python中文命名实体识别工具包_中文命名实体识别NER

NER(中文实体命名识别)

光健字: 中文命名实体识别 NER BILSTM CRF IDCNN BERT

摘要:对中文命名实体识别一直处于知道却未曾真正实践过的状态,此次主要是想了解和实践一些主流的中文命名实体识别的神经网络算法。通过对网上博客的阅读了解,中文命名实体识别比较主流的方法是BILSTM+CRF、IDCNN+CRF、BERT+BILSTM+CRF这几种神经网络算法,这个demo也用Keras实现了这几个算法,并且采用几个比较通用的数据集进行训练测试。这个demo是以了解和学习为目的的,所以未得出任何结论

注意:由于算力和时间的问题,对神经网络的参数未进行太多调试,所以模型现在的参数并不是最佳参数

主要库的版本

本项目是基于keras(Using TensorFlow backend)以下是主要库的版本

python = 3.6.8

keras == 2.2.4

keras_contrib == 0.0.2

keras_bert == 0.80.0

tensorflow == 1.14.0

项目目录结构

data 数据目录

具体请查看数据目录文件夹下的README文件

DataProcess 数据处理文件夹

具体请查看数据处理文件夹下的README文件

Pubilc 公共工具

path 定义文件(文件夹)的路径

utils 工具

创建log

keras的callback调类

Model 模型(总共定义了5个模型,具体结构请查看Model文件夹下的README文件)

BERT+BILST+CRF

BILSTM+Attention+CRF

BILSTM+CRF

IDCNN+CRF(1)

IDCNN+CRF(2)

log 记录数据

运行项目

注意:需要用到bert网络的需要提前下载BERT预训练模型解压到data文件夹下

直接在IDE里运行项目

直接运行 train.py文件

命令行

python train.py

运行结果

运行GPU: GeForceRTX2080Ti(GPU显存 10.0G, 算力7.5)

训练周期为15个周期,提前停止条件:2个周期验证集准确率没有提升。

BERT采用batch_size=32 因为值为64的时候所使用GPU内存不够

以下数据基于MSRA数据集,以8:2的拆分(训练集:测试集)。测试结果

模型

准确率

F1

召回率

IDCNN_CRF

0.988

0.860

0.871

IDCNN_CRF_2

0.990

0.872

0.897

BILSTM_Attention_CRF

0.987

0.850

0.848

BILSTMCRF

0.989

0.870

0.863

BERT_BILSTM_CRF

0.996

0.954

0.950

很显然BERT+BILIST+CRF的组合效果会好很多

提示:log文件夹里有每个训练周期记录的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值