写在前面
自从BERT出现以来,越来越多的优秀的预训练模型如雨后春笋般层出不穷,这给我们处理NLP任务带来了极大的便利,身处这么一个时代,能随意使用这些预训练模型无疑是很舒适的一件事情,但是预训练模型的使用也有着不少技巧,一些好的模型策略甚至能带来显著意义上的性能提升。博主最近也是赋闲在家,闲来无事就去kaggle打了个情感抽取的比赛:Tweet-Sentiment-Extraction,刚好总结一下看到的一些提升性能的策略。
主要参考文献:
1.新手入门 Kaggle NLP类比赛总结:https://zhuanlan.zhihu.com/p/109992475
2.https://www.kaggle.com/c/tweet-sentiment-extraction/notebooks
1.文本处理
1.文本截断。常用的截断的策略有三种:
-
pre-truncate(截断前文)
-
post-truncate(截断末尾)
-
middle-truncate (head + tail,去除中间文本)
有研究对比了三种策略的效果,head+tail 最优,这也符合我们的直觉,一般文章或段落的开头结尾往往会包含重要信息,截掉中间部分信息丢失最少。当然,这也不是绝对的,建议三种方法都尝试,比较后挑选,或者都保留,后期做融合。附一张Bert输入文本长度和batch size的关系表。
2.文本扩增。NLP 中,文本扩增比较常用且有效的方法是基于翻译的,叫做