概述
当前的有监督的深度学习模型,如果想获得高性能,需要依赖于大量的标注训练数据。然后,在实际上项目中,往往存在训练样本少、标注数据成本高等情况。在这种情况下,我们就需要用到文本数据增强技术。
1 回译法(Back Translation)
回译法即将原有的句子翻译为其他语言,然后再翻译回原语言。
原句:每周三在解决会议室进行Smart Calendar周会。
输出:
百度翻译:每周三在解决方案会议室举行每周智能日历会议。
有道翻译:智能日历每周例会每周三在会议室举行。
回译的方法往往能够增加文本数据的多样性,相比替换词来说,有时可以改变句法结构等,并保留语义信息。但是,回译的方法产生的数据依赖于翻译的质量,大多数出现的翻译结果可能并不那么准确。
2 EDA(Easy Data Augmentation)
EDA 包含四种简单但是强大的操作:同义词替换、随机插入、随机交换和随机删除。
(1)同义词替换(Synonym Replacement,SR)
从句子中随机选择 n n n 个非停用词,然后每个词随机选择一个同义词替换它们。举例如下:
原句:每周三在会议室进行项目汇报周会。
输出:每周五在会议室进行项目汇报周会。
(2)随机插入(Random Insertion,RI)
从句子中随机选择一个非停用词,然后随机选择该词的一个同义词。将该同义词插入到句子中的随机位置。此过程重复 n n n 次。举例如下:
原句:每周三在会议室进行项目汇报周会。
输出:每周三在会议室每周四进行项目汇报周会。
(3)随机交换(Random Swap,RS)
从句子中随机选择两个词,交换位置。此过程重复 n n n 次。举例如下:
原句:每周三在会议室进行项目汇报周会。
输出:每周三在项目进行会议室汇报周会。
(4)随机删除(Random Deletion,RD)
句子中的每个词,以概率 p p p 进行随机删除。举例如下:
原句:每周三在会议室进行项目汇报周会。
输出:每周三在进行项目汇报周会。
值得一提的是,长句子相对于短句子,存在一个特性:长句比短句有更多的词,因此在保持原有的类别标签的情况下,长句能吸收更多的噪声。为了利用这个特性,EDA 的作者提出一个方法:基于句子长度来调整需要改变的词数。具体实现:
- 对同义词替换、随机插入和随机交换,遵循公式: n = α ∗ l n = alpha * l n=α∗l,其中, l l l 表示句子长度, α alpha α 表示一个句子中需要改变的词数的比例。
- 对随机删除,遵循公式: p = α p = alpha p=α。
- 另外,每个原始句子,生成 n a u g n_{aug} naug 个增强的句子。
根据 EDA 作者的测试,EDA 在小的训练数据集上有更好的性能效果。
针对上面的参数 α alpha α 和 n a u g n_{aug} naug 的取值,EDA 作者推荐的使用参数如表-1所示。
N t r a i n N_{train} Ntrain | α alpha α | n a u g n_{aug} naug |
---|---|---|
500 | 0.05 | 16 |
2000 | 0.05 | 8 |
5000 | 0.1 | 4 |
More | 0.1 | 4 |
注意:因为 EDA 在进行数据增强操作的过程中,有可能会改变句子原来的意思,但是仍然保留原始的类别标签,从而产生了标签错误的句子。所以 EDA 存在降低模型性能的可能。
参考:
[1] 论文:EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
[2] EDA 论文作者提供的 GitHub 地址
[3] EDA 中文版本的 GitHub 地址
[4] 微信公众号“AINLP”——数据增强在贝壳找房文本分类中的应用
最后
以上就是无聊乌龟为你收集整理的文本数据增强方法的全部内容,希望文章能够帮你解决文本数据增强方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复