赞
踩
项目中,BERT文本二分类或者多分类,总感觉效果难言理想的样子。使用了keras-bert包。
概述:
问题一: tf版bert分类似乎太重,训练、预测很不方便,要定义类什么的,很难看。
问题二: 使用bert分类,如果文本太长,速度超级慢,而且预训练好的简版模型微调最大长度只有512,两个句子时候也一样,
超级坑,所以如果你想用它来直接跑什么中国法研杯比赛,不行的。
问题三: 感觉bert就是只能提取某些层的向量,分类,对比相似度什么的,没有想象中的那么神秘,也就是一个多层的多头注 意力机制,好像不能作生成式,即便有,那也是阅读理解抽取,至句子生成、对话什么的我没有看到,现在我能找的 似乎就是从候选集中对比相似度排序。
实验1:
对比了一下,不微调bert,bert+bilstm一层,bert+bilstm三层,bert+bilstm一层+attention等三个模型的训练-验证-测试,用的数据集是微众银行文本相似度比赛数据,效果并不明显,大约都能达到78%-79%的测试准确率。
不微调bert,bert+textcnn,bert+rcnn,bert+avtcnn等三个模型的训练-验证-测试,用的数据集是微众银行文本相似度比赛数据,效果比rnn要好些,大约能达到80%的准确率,可能原因是在bert层就是主要用的attention,序列信息已经被破坏了。
风险:
总感觉有些不靠谱,因为看论文或者其他博客,说的都是取最后一层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还是比较有用的。
希望对你有所帮助!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。