ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kashgari实现BERT-BILSTM-CRF中文命名实体识别

2021-09-11 10:01:58  阅读:274  来源: 互联网

标签:BERT BILSTM kashgari train test import data valid


kashgari实现BERT-BILSTM-CRF中文命名实体识别@TOC

关于kashgari的安装教程及使用教程

通过我一天半的不断尝试,努力,终于完成了kashgari的配置,把我配置过程中需要注意的事项写在下文,供大家借鉴

kashgari与tensorflow环境问题

说实话,网上许多注意事项,我也就觉得下面的信息最有用(一定要在conda环境中,新建一个python环境,再进行下面的安装,我建的是python3.8的环境,最好是3.6+):
在这里插入图片描述配置信息表

注意:我的配置命令是:
pip install kashgari2.0.2 tensorflow_addons0.13.0 tensorflow==2.5.0
本来尝试了一下tensorflow2.3.0结果失败,果断安装2.5.0

由于我已经配置成功了,忘记截那些成功图了,大家按照我的步骤来就行,有什么问题可以评论区留言。

测试阶段

首先来第一段代码:
1.数据集的获取

from kashgari.corpus import ChineseDailyNerCorpus

train_x, train_y = ChineseDailyNerCorpus.load_data('train')
valid_x, valid_y = ChineseDailyNerCorpus.load_data('validate')
test_x, test_y  = ChineseDailyNerCorpus.load_data('test')

print(f"train data count: {len(train_x)}")
print(f"validate data count: {len(valid_x)}")
print(f"test data count: {len(test_x)}")

成功之后,显示如下运行结果:
在这里插入图片描述
2.创建bert模块
下面的汇总代码中我对BERTEmbedding模块进行了改正,感觉是kashgari太新,导致模块的位置发生了改变,大家如果这一步不太行,可以参考我最后的汇总代码。

import kashgari
from kashgari.embeddings import BERTEmbedding

bert_embed = BERTEmbedding('chinese_wwm_ext_L-12_H-768_A-12',
                           task=kashgari.LABELING,
                           sequence_length=100)

3.创建并训练模型

from kashgari.tasks.labeling import BiLSTM_CRF_Model

# 还可以选择 `CNN_LSTM_Model`, `BiLSTM_Model`, `BiGRU_Model` 或 `BiGRU_CRF_Model`

model = BiLSTM_CRF_Model(bert_embed)
model.fit(train_x,
          train_y,
          x_validate=valid_x,
          y_validate=valid_y,
          epochs=20,
          batch_size=512)
model.save('ner.h5')

最后放一个汇总代码吧,我把上述过程融合了一下:

from kashgari.corpus import ChineseDailyNerCorpus
from kashgari.tasks.labeling import BiLSTM_CRF_Model
import kashgari
from kashgari.embeddings.bert_embedding import  BertEmbedding#改变了调用代码
import warnings
warnings.filterwarnings('ignore')
train_x, train_y = ChineseDailyNerCorpus.load_data('train')
valid_x, valid_y = ChineseDailyNerCorpus.load_data('validate')
test_x, test_y  = ChineseDailyNerCorpus.load_data('test')

print(f"train data count: {len(train_x)}")
print(f"validate data count: {len(valid_x)}")
print(f"test data count: {len(test_x)}")
#此处也进行了改变
bert_embed = BertEmbedding('chinese_L-12_H-768_A-12',
                           sequence_length=100)

model = BiLSTM_CRF_Model(bert_embed)
model.fit(train_x,
          train_y,
          x_validate=valid_x,
          y_validate=valid_y,
          epochs=20,
          batch_size=512)
model.save('ner.h5')

运行结果,写这个博客的时候,我运行了一夜还没结束,就展示一下大致的结果吧:
在这里插入图片描述

后续我可能还会增加kashgari的相关使用代码,大家后续关注即可。

参考博客:
https://my.oschina.net/u/4313749/blog/3358422

很好的一个学习网址:
https://pypi.org/project/kashgari/

标签:BERT,BILSTM,kashgari,train,test,import,data,valid
来源: https://blog.csdn.net/weixin_43822656/article/details/120233155

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有