实战必备!文本分类中的一些经验和 tricks

最近在总结之前做的文本分类实验的一些经验和 tricks,同时也参考了网上的一些相关资料(见文末),其中有些 tricks 没尝试过,先在这里记下,或者日后能用上。

这里的经验和 tricks 大概可分为两部分:预处理部分模型训练部分,下面分别介绍

预处理

  • 「文本更正」,主要是将文本标准化,包括繁体转简体,全角转半角,拼音纠错等

  • 「文本泛化」,如一个手机号码,因为有几千万的手机号码,不可能为每个手机号码设一个特征,所以最好将手机号码转化为同一个特征;另外表情符号、人名、地址、网址、命名实体等也要考虑这种泛化,泛化的程度这个视具体的任务,比如说地址可以以国家为粒度,也可以以省份为粒度

  • 规范文本为统一长度时,取所有长度的均值或者中位数,但是别取最大值;截断时根据具体任务考虑从前面阶段或从后面截断

  • 构建数据集的 vocabulary 时,需要考虑以下几个方面

    • 取前N个高频词或者过滤掉出现次数小于某个阈值的词
    • 根据具体任务确定是否需要去掉 stop words
    • 假如采用了预训练的词向量,要尽可能让 vocabulary 中的词语能找到对应的词向量(这个问题也涉及到预训练的词向量和分词器的选择)
  • 词向量的选择,当数据集较小时,直接使用预训练好的词向量(如google、facebook开源的),且不用微调;当训练集比较大的时候,可随机初始化进行训练,也可以对预训练的词向量进行微调(微调收敛得更快,但是结果差异不大)

  • 分词时考虑以下几个方面

    • 是否需要分词,使用 char-level 的方法时不需要分词,但是在很多场景下 word-level 的效果都要比 char-level 的要好
    • 分词时可以只保留长度大于1的词(会去除很多停止词),对结果精度没什么影响,但是可以有效降低特征维度
    • 采用预训练的词向量时,要保证分词后的大部分词语能够出现在预训练的词向量表中,否则这个词语的 embedding 就相当于是随机初始化,预训练的词向量没有提供任何信息;具体方法可参考这里
  • 数据增强

    • 常见的方法有:drop(随机删掉文本)、shuffle(随机改变文本顺序)、replace(用近义词进行替换)
    • 数据增强对 word-level 的方法有一定的提升,但是对于 char-level 的方法效果不一定好,甚至会起到反作用

模型训练

  • 规则有时能解决大部分的问题,不一定要用到模型,使用时要权衡模型带来的收益和复杂性

  • 传统的机器学习方法根据其特征工程的不同可分为三大类

    • 词袋模型:将出现的词记为1,否则记为 0,问题是维度高且稀疏性严重
    • 向量空间模型:根据文档频率、互信息、信息增益、χ²统计量等进行了特征(词语)的选择,同时通过 tfidf 值为每个词赋权重;一定程度上缓解了上面提到的词袋模型维度高且稀疏性严重的问题
    • 主题模型:pLSA/LDA/HDP 等主题模型将文本表示低维实数向量,类似于深度学习中的 embedding,但是比 embedding 有更好的解释性
    • fasttext 简单、速度快,是一个非常不错的 baseline;随着问题复杂性增加可依次尝试 CNN -> RNN -> BERT
  • 对于深度学习模型,把模型变得更深更宽更复杂往往能够提升效果;但是当模型复杂到一定程度的时候,提升的效果微乎其微甚至没提升

  • rnn 类模型用双向一般会比单向要好

  • 使用 dropout(经验值为 0.5) 基本都能提升效果,使用的地方包括:embedding 层后、FC层后

  • 训练震荡问题:增加随机采样因素尽可能使得数据分布 iid,默认 shuffle 机制能使得训练结果更稳定。如果训练模型仍然很震荡,可以考虑调整学习率 或 mini_batch_size

  • 采用预训练的 embedding 并进行 finetune 时,在最开始 embedding 的学习率设为 0,训练到效果较好时才开始 finetune embedding 层

  • 学习率的设置考虑以下几个方面

    • 经验值一般为 1、0.1、0.01、0.001, 一般从1开始尝试。很少见学习率大于10的
    • 学习率一般要随着训练进行衰减,衰减系数一般是0.5;衰减时机可以是验证集准确率不再上升,或固定训练 N 个 epoch 后
    • 比起自定义的衰减方法,更便捷的方法是使用自适应梯度的办法,例如 adam,adadelta,rmsprop 等,这些一般使用相关论文提供的默认值即可,可以避免再费劲调节学习率
    • 对RNN来说,如果要处理的序列比较长,或者RNN层数比较多,那么learning rate一般小一些比较好,否则有可能出现结果不收敛,甚至Nan等问题。
  • 超参数的设置经验可参考 A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

  • 模型融合时,差异性越大,融合效果越好,具体可参考知乎看山杯夺冠记[1]

(0)

相关推荐

  • 【学术论文】基于卷积递归模型的文本分类研究

    摘要: 近年来卷积神经网络和循环神经网络在文本分类领域得到了越来越广泛的的应用.提出一种卷积神经网络和长短时记忆网络特征融合的模型,通过长短期记忆网络作为池化层的替代来获得长期依赖性,从而构建一个联合 ...

  • 知道吗?BAT今年在KDD上作为第一单位发表了12篇文章!(内附每篇文章解读)

    本文将为大家介绍国内工业界在数据挖掘方面的研究工作(主要来源于发表在数据挖掘顶级国际会议KDD上的相关论文).这些工作既包括理论性的研究也包括一些实际应用的研究工作. " 我们将于2019年 ...

  • 直观比较四种NLP模型 - 神经网络,RNN,CNN,LSTM

    文/ 阿里淘系 F(x) Team - 紫矜 NLP中使用的每种模型的差异有时令人难以把握,因为它们具有相似之处,并且通常设想使用新模型来克服以前模型的缺点.因此,本文将深入探讨每种模型的本质,并了解 ...

  • 论文解读:Bert原理深入浅出

    Bert 自 Google 于 2018 年发表至今,一直给人们带来惊喜,期间也陆陆续续因为Bert出现的原因多了不少新的岗位,甚至公司 JD 上都明确表明必须懂 Bert. 它在 11 项自然语言处 ...

  • 长短期记忆网络LSTM在时间序列预测和文本分类中的应用

    长短期记忆网络或LSTM网络是深度学习中使用的一种递归神经网络,可以成功地训练非常大的体系结构. 什么是LSTM? LSTM代表长短期记忆网络,在深度学习领域使用.它是各种循环神经网络(RNN),能够 ...

  • 干货|一文带你速览分层注意力网络在文本分类中的应用

    2016年,神经网络在文本分类的任务上逐渐成为了主流方法之一.Word2vec等预训练词向量模型为文本任务提供了一个具有很强语义信息的输入,而卷积神经网络和LSTM/GRU也已表现出了在序列任务上的聚 ...

  • 数据增强在贝壳找房文本分类中的应用

    深度学习已经在计算机视觉.语音识别.自然语言处理等领域取得了突出的进展,其中有监督学习起到了至关重要的作用.然而,有监督的深度学习极大地依赖大规模的标注数据,在实际项目中,我们通常会面临少样本.样本分 ...

  • 清华大学刘知远组:文本分类任务中,将知识融入Prompt-tuning过程

    前两天看到刘知远老师组在 arxiv 上放出来了 Prompt-tuning 相关的新工作,这篇文章是将外部知识融入 Prompt-tuning 过程的一个尝试,引起了我的兴趣.于是,我在拜读了这篇文 ...

  • 如何在文本分类任务中Fine-Tune BERT

    问 题 BERT在许多自然语言理解(NLU)任务中取得了惊人的成果,但它的潜力还有待充分挖掘.目前很少有如何能进一步提高BERT性能的研究,因此,如何通过一些技巧和方法最大限度的提升BERT在文本分类 ...

  • 股市里没有专家,有的只是自己在实战中操作的经验和技术分析方法

    炒股法则之一:果断抉择买卖交易 在决定买卖操作的时候,买入和卖出只是一瞬间的操作,但是带来的盈利和损失是无法估计的,所以做出抉择的时候要果断,不要盲目的犹豫,错过良好的买入时机再追悔莫及,但是也不能一 ...

  • 从文本细读中探寻诗歌的奥秘

    诗歌选本,有助于我们在诗海中快捷阅读到好作品.当下众多的年度选本,大都是由编者从当年文学期刊中选取,一人一首代表作.好处是充分体现了编者的立场和审美,难处在于这种选本对编者来说有一定难度,因为只选取一 ...

  • 全国名老中医治胃病经验

    周仲瑛,全国名老中医,国医大师,周老中医理论功底深厚,善于综合应用各家学说之长,从实践运用中提出新的论点和治法.周老认为,胃病患者出现心下痞塞,胸膈满闷,触之无形.不痛的证候,中医称为胃痞." ...

  • 非连续性文本阅读中的“侧重点”总是答不到“点”,我来拉你一把

    试卷上哪一部分最简单最容易得分?各有答案,但很多同学在做非连续性文本阅读中感觉不难,而且客观题最有把握,得分容易.但是主观题只要不仅仅考查筛选,而是加上概括要求的时候,就有点力不从心.想要有所提高却不 ...