这节课,我要给大家补充一个内容,就是在 BiLSTM 前面加上一个 Bert 层,为什么要补充这个内容呢?两个原因,一是很多同学留言说自己课后尝试了加 Bert,但是各种报错;二是有同学反馈说模型的准确率不高,想试试加了 Bert 之后,模型效果会不会变好。所以我抽一点时间,给大家介绍一下加 Bert 的方法,作为一个统一的答疑。

首先,我们需要来分析一下,Bert 这一层应该加在什么地方。Bert 作为一个预训练模型,在我们当前这个项目中,其实很简单,它充当的就是一个文本向量化的角色,就是把文本转化成一个词向量。回到我们的项目中,其实已经有了这个向量化的过程,就是 Embedding 这一层,它和 Bert 的区别,其实只是维度不同,和缺少了大规模预训练的过程。所以我们说的加 Bert 层,其实就是用 Bert 替换随机 Embedding 这一层就可以了。

代码示例

1、修改配置文件

内容不可见,请联系管理员开通权限。

2、文本转 input_ids

内容不可见,请联系管理员开通权限。

3、Bert 替换随机 Embedding

内容不可见,请联系管理员开通权限。

Kaggle设置改动:界面右侧 - Notebook options - Internet on,如果没有验证手机号,需要先验证手机号。

4、预测部分修改

前面模型修改完之后,需要到Kaggle上重新训练,得到新的模型之后,下载模型文件导入项目,微调预测逻辑即可。

内容不可见,请联系管理员开通权限。

好,到目前为止,我们就实现了完整的 Bert+BiLSTM+CRF 实现命名实体识别的过程。有了前面的基础模型之后,添加 Bert 其实是很简单的。希望大家课后要多思考、多练习,提高综合编程能力。

本文链接:http://www.ichenhua.cn/edu/note/537

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!