毒性文本多标签分类竞赛总结

废话不多说 直接正题

1. 数据清洗

  • 统计文本中出现单词词频,统计oov word词频
  • 根据kernel里的各种EDA滤去不必要的单词
  • 根据oov word统计的词频修正高频拼写错误(不要用相关算法,oov会越来越多的)
  • 正则+替换修正一些拼写错误
  • emoij表情用good,bad,happy等替代
  • 将测试集中约两千的非英文文本翻译成英文(在我比赛结束后意识到他并重新跑了几次测试后,恩,他让我从top2%掉到top9%气坏了 = = 打标签的人看不懂外国语言emmmm)

重点

  1. 千万不要提取词干,单词的不同形式在不同标签下有不同分布,提取了等于丢失信息
  2. “_”,”-“这种一定要去掉,否则oov太多
  3. 滤掉词频<4的单词

2. 特征工程

  • 利用ConvAI数据集训练一个模型给我这个数据的样本打上label(那个任务和我这个强相关)效果不错
  • 词性标注然后获得各词性在句子中概率分布得到一个(samples,tags)矩阵 ,然后在samples这个维度pca降维,
    即可得到各词性的向量表示,和word进行concat,效果不佳
  • 句法分析,通过获得句子的语法结构树,通过先序后序遍历获得树结构的近似序列表示,丢入word2vec,得到语法 结构的矩阵表示,效果不明显
  • LDA聚类,效果不明显
  • tfidf获取character级信息,然后压缩降维至32/128维度(效果不明显)
  • 通过两步训练处理oov单词
    1. 首先用训练测试文本预训练character级的字符(3-gram)
    2. 再用上述所得到的来拟合公开预训练的词向量(例如输入是(hap,app,ppy) 输出是(happy)
    3. 这一方面就可以通过得到的character级的字符来处理oov单词,另一方面还可以捕捉单词之间的相似性
    想法很美好,代码也写好了,但是放入模型中有很多小细节要改,于是我并没有使用(懒癌犯了)
    
  • 统计类特征:统计感叹号个数,平均字长,文本长度,句子个数,大写字母个数,字母分布等等等等(有点效果)

3. 模型设计

  • 多标签其实就是多任务,自然而然想到了任务的梯度平衡,loss加权是个很简单方式,但是调参需求功底过高,而且不同label收敛难度不一致所以设计了一个可梯度更新的自适应权重来平衡梯度(效果不明显)
  • 除上面之外加了个可梯度更新的可自适应正负样本的权重,效果同不明显…
  • 使用了ranking loss (相当于直接优化auc),但是这个loss对一个batchsize中的正负比例太敏感效果比普通的celoss,focalloss差很多
  • 优化上一个想法,通过rankingLoss * ceLoss作为loss,和普通celoss相比效果不明显…
  • 同上,通过样本平衡采样来解决rankingloss的样本比例问题,收敛速度大大提高,上限仍然不是很好…
  • 尝试注意力机制效果很不好…
  • 模型都搭的很简单,textcnn改动和两层双向GRU,but我的cnn分数上不去

    其实我还调了各种各样的模型结构,都不如上述的简单结构强 …

4. 迁移学习

  • 第一次使用google翻译API替换文本,再用替换后的训练一次模型,作为英文文本的初始化效果不如随机初始化…
  • 后来意识到上述行为等价于替换词向量,后意识到输入端替换后迁移很难实现好效果,于是乎现在ConvAI的数据集上的强相关任务下训练一次模型,再在当前任务下funetune,收敛速度快很多,上限没提高…

    在这里意识到了数据差异性的重要性,想到用不同词向量去拟合再集成,但是因为不停更换机子的缘故,为了数据传快点删掉了好多份词向量…然后就没回去下载尝试了

5. 数据增强

  • 通过google翻译API编码解码获得多份训练集…然后训练,其他人靠这个分数提高了不少,但我训练集拿是拿到了多次翻译版,但一直没用多份,总感觉怪怪的,可能是脑子进水了.
  • 通过替换词的位置增加噪声,分数没怎么变,但是这个至少制造了一点点差异性,对集成有好处

6. 模型集成

  • 简单的加权平均,恩感觉实惠舒服简单(其实是懒)

从冠军那里看到了利用半监督学习的思路,很强,效果也很棒

总的来说这次比赛做了很多事情
做的很多事情都是无用功,觉得效果会不错但是实际并没有
结果最终还是回到原点
上一个比赛做的事情不算太多,但是重点基本抓到了…
总得来说还是要抓住主要问题…

  1. 重点数据清洗的几个重点
  2. 模型容量
  3. 迁移特征

这次的比赛还是很遗憾的
考虑到约两千的非英文文本分数浮动太大于是全转成英文
结果反而被坑…
感觉两个月的努力付之东流…
十有八九不如意,只能今年再努力
恩,如果运气比别人差,看来那就只能多来几次了 hh