/text_bert_cnn

在bert模型的pre_training基础上进行text_cnn文本分类

Primary LanguagePythonMIT LicenseMIT

TEXT_BERT_CNN

在 Google BERT Fine-tuning基础上,利用cnn进行中文文本的分类;

没有使用tf.estimator API接口的方式实现,主要我不太熟悉,也不习惯这个API,还是按原先的text_cnn实现方式来的;

训练结果:在验证集上准确率是96.4%左右,训练集是100%;,这个结果单独利用cnn也是可以达到的。这篇blog不是来显示效果如何,主要想展示下如何在bert的模型下Fine-tuning,觉得以后这种方式会成为主流。

1 环境

python3
tensorflow 1.9.0以上

2 数据

还是以前的数据集,涉及10个类别:categories = ['体育', '财经', '房产', '家居', '教育', '科技', '时尚', '时政', '游戏', '娱乐'];
下载链接:[https://pan.baidu.com/s/11AuC5g47rnsancf6nfKdiQ] 密码:1vdg

BERT-Base, Chinese: Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters

3 运行

python text_run.py train

python text_run.py test

4 结论

我个人感觉在bert基础上对text_cnn提升并不大,不过这个数据集我优化的最好结果在验证集上也只是97%左右,怀疑数据集中可能有些文本的类别不是特别明显,或是属于多个类别也是合理的

bert在中文上目前只是支持字符级别的,而且文本长度最大为128,这个长度相对于单独卷积就处于劣势

bert会导致运行效率降低很多,毕竟模型的参数量摆在那里,实际应用要一定的硬件支持

5 参考

  1. google-research/bert
  2. brightmart/bert_language_understanding

image