在 Google BERT Fine-tuning基础上,利用cnn进行中文文本的分类;
没有使用tf.estimator API接口的方式实现,主要我不太熟悉,也不习惯这个API,还是按原先的text_cnn实现方式来的;
训练结果:在验证集上准确率是96.4%左右,训练集是100%;,这个结果单独利用cnn也是可以达到的。这篇blog不是来显示效果如何,主要想展示下如何在bert的模型下Fine-tuning,觉得以后这种方式会成为主流。
python3
tensorflow 1.9.0以上
还是以前的数据集,涉及10个类别:categories = ['体育', '财经', '房产', '家居', '教育', '科技', '时尚', '时政', '游戏', '娱乐'];
下载链接:[https://pan.baidu.com/s/11AuC5g47rnsancf6nfKdiQ] 密码:1vdg
BERT-Base, Chinese: Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters
python text_run.py train
python text_run.py test
我个人感觉在bert基础上对text_cnn提升并不大,不过这个数据集我优化的最好结果在验证集上也只是97%左右,怀疑数据集中可能有些文本的类别不是特别明显,或是属于多个类别也是合理的
bert在中文上目前只是支持字符级别的,而且文本长度最大为128,这个长度相对于单独卷积就处于劣势
bert会导致运行效率降低很多,毕竟模型的参数量摆在那里,实际应用要一定的硬件支持