文本分类
一、给定需求下,判断使用哪个模型进行文本分类。
1、 首先判断是线上环境还是离线环境?(线上环境指,模型放到线上,有实时要求,要小于50ms,一般40ms左右)
离线环境直接上预训练模型bert;
线上环境是否有N卡,有N卡可以考虑压缩后的bert或整流后的bert,如:distillbert。无N卡,不能上预训练模型。
2、无N卡,考虑深度学习模型。如fasttext、idcnn、textcnn、bilstm-attention(速度由快到慢)。
(1)fasttext:对于文本长且对速度要求高的场景,Fasttext是baseline首选
》 模型复杂度低,但效果不错
》采用了字符级的n-gram特征,可以很好的解决oov问题(未登录词)
》采用了层序softmax,提升了收敛速度。
(2)idcnn
(3)textcnn:
二、长文本分类
1、数据层面
(1)截断法(粗暴截断会损失语义):包括头截法、尾截法、头尾截法。适用于大量几百字的文本,大量几千字的文本,截断法会损失语义
(2)分段法:
将文本一次分为几个不超过512的段;
针对这n个段分别经过bert编码;
将n段经过bert之后的cls向量进行pooling
然后接全连接层进行分类
注:考虑了全局信息,相比于截断法,对长文本分类效果更好;性能较差,每段都进行encoding,文本越长,性能越差;段落之间的联系会丢失,容易出现badcase;
(3)压缩法:裁剪无意义的句子:如一些文章的套话、url,
(4)3000字以上的走LDA或者领域词截断