EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
论文地址: https://arxiv.org/abs/1901.11196
要点
文章提出并验证了几种 text augmentation 技巧, 分别是:
同义词替换 (Synonym Replacement): 从文本中随机选择 n 个(非停词, 下同)单词, 随机替换为对应单词的同义词;
随机插入 (Random Insertion): 与上类似, 不过不是替换, 而是将同义词随机插入句子中;
随机交换 (Random Swap): 随机交换文本中的两个单词, 重复 n 次;
随机删除 (Random Deletion): 以概率 p 删除句子中的单词 (这里肯定需要一个机制保证不会删除所有的单词而留下一个空串).
总的来看, 都属于比较直观的想法, 看起来没有特别出彩的地方, 但是就是没人系统地这样做过实验对比呀. 同义词替换其实在不少之前的论文/方法中都使用到了.
由于文本有长短, 文章根据文本的长度来设置上述的 n: n=al
, 式中 l 就是文本的长度, a 设置的超参数.
从实验结果来看, EDA 在数据量小的时候对于性能提升特别明显, 如下(使用 EDA 在数据量为原集的 50% 时已经超过了不使用 EDA 在 100% 数据上的结果). 这个结果也不算出人意料, 因为在小数据集上本身就容易过拟合, EDA 可以说增大了数据集, 也可以说引入了噪声, 总之就是起到了防止过拟合的作用. 文章的另一个解释挺有意思的, EDA 会对 vocab 产生影响, 也许就包含了训练集中没有但测试集中有的单词, 这算 data leakage 吗?
文章还就 EDA 对预测标签的影响进行了观察, t-SNE 的结果如下:
还是挺分明的, 说明可以 EDA 不会明显改变句意, 可用. 当然这是在 a 不太大的情况下. 同样很直观的, 不管上述的哪个技巧, 将文本改得面目全非, 标签就变得没意义了.
以下记录文中列举的其他 text augmentation 方法, 文章没介绍的, 就见名如见方法吧:
Back-translation (大概是用了机器翻译);
Noising;
类同义词替换, 不过用的是词向量的最近邻单词;
使用 VAE 和 attribute discriminator (?) 来生成假数据;
使用 BiLSTM 从文本上下文中预测得到的词替换代词;
和以上一些方法比起来, EDA 不需要比如 VAE, BiLSTM 等模型, 简单得多, 可以优先考虑.
备注
我在想, 进行 data augmentation 的时候, 根据程度来 smooth label 是不是更好, 也许是我孤陋寡闻了.
Last updated