该项目是基于谷歌开源的BERT预训练模型,在中文NER任务上进行fine-tune。
训练本模型的主要代码与标记数据,来自于zjy-usas的ChineseNER项目。本项目在原本的BiLSTM+CRF的框架前,添加了BERT模型作为embedding的特征获取层,预训练的中文BERT模型及代码来自于Google Research的bert。
引入bert之后,可以看到在验证集上的F-1值在训练了16个epoch时就已经达到了94.87,并在测试集上达到了93.68,在这个数据集上的F-1值提升了两个多百分点。
- 下载bert模型代码,放入本项目根目录
- 下载bert的中文预训练模型,解压放入本项目根目录
- 搭建依赖环境python3+tensorflow1.12
- 执行
python3 train.py
即可训练模型 - 执行
python3 predict.py
可以对单句进行测试
整理后的项目目录,应如图所示。
可以看到,使用bert以后,模型的精度提升了两个多百分点。并且,在后续测试过程中发现,使用bert训练的NER模型拥有更强的泛化性能,比如训练集中未见过的公司名称等,都可以很好的识别。而仅仅使用ChineseNER中提供的训练集,基于BiLSTM+CRF的框架训练得到的模型,基本上无法解决OOV问题。
(1) https://github.com/zjy-ucas/ChineseNER