BERT文本分类实践Keras

    项目中,BERT文本二分类或者多分类,总感觉效果难言理想的样子。使用了keras-bert包。

概述:

        问题一: tf版bert分类似乎太重,训练、预测很不方便,要定义类什么的,很难看。

        问题二: 使用bert分类,如果文本太长,速度超级慢,而且预训练好的简版模型微调最大长度只有512,两个句子时候也一样,

                     超级坑,所以如果你想用它来直接跑什么中国法研杯比赛,不行的。

        问题三: 感觉bert就是只能提取某些层的向量,分类,对比相似度什么的,没有想象中的那么神秘,也就是一个多层的多头注                         意力机制,好像不能作生成式,即便有,那也是阅读理解抽取,至句子生成、对话什么的我没有看到,现在我能找的                       似乎就是从候选集中对比相似度排序。

实验1:

        对比了一下,不微调bert,bert+bilstm一层,bert+bilstm三层,bert+bilstm一层+attention等三个模型的训练-验证-测试,用的数据集是微众银行文本相似度比赛数据,效果并不明显,大约都能达到78%-79%的测试准确率。

        代码在github:https://github.com/yongzhuo/nlp_xiaojiang/blob/master/ClassificationText/bert/keras_bert_classify_bi_lstm.py

        不微调bert,bert+textcnn,bert+rcnn,bert+avtcnn等三个模型的训练-验证-测试,用的数据集是微众银行文本相似度比赛数据,效果比rnn要好些,大约能达到80%的准确率,可能原因是在bert层就是主要用的attention,序列信息已经被破坏了。

        代码在github:https://github.com/yongzhuo/nlp_xiaojiang/blob/master/ClassificationText/bert/keras_bert_classify_text_cnn.py

风险:

        总感觉有些不靠谱,因为看论文或者其他博客,说的都是取最后一层bert的[CLS]这里作为输出,但是我实验发现并不是这样子,反而是取某一层的所有输出好点。不知道怎么回事,如果你们知道,欢迎给我留言,谢谢。

实验2:

      项目在github:https://github.com/yongzhuo/Keras-TextClassification

      分别有bert、char、word等embedding,实验中的数据是baidu_qa_2019corpus的17个类别的140多万语料。实验中传统的text-cnn、rnn、rcnn等能达到50%-70%的准确率,bert-fineture+全连接[CLS这里生效了]能达到80%多的准确率。当然bert-fineture+其他模型(text-cnn、text-rnn)啊什么的,可以发现效果明显提升,收敛速度加快。从实用感觉来说,bert还是比较有用的。

 

 

希望对你有所帮助!

        

评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值