nlpaug
这本Python库可以帮助您增强用于机器学习项目的自然语言处理。访问这个介绍来了解更多关于自然语言处理中的数据增强。Augmenter
是增强的基本元素,而Flow
则是将多个增强器组合在一起的管道。
特点
- 生成合成数据以改善模型性能,无需人工努力
- 简单,易用且轻量级的库。只需三行代码即可增强数据
- 适用于任何机器学习/神经网络框架(e.g. scikit-learn, PyTorch, TensorFlow)
- 支持文本和音频输入
文本数据增强示例
音频数据增强示例
快速演示
- 快速示例
- 文本输入增强示例
- 多语言文本输入增强示例
- 频谱图输入增强示例
- 音频输入增强示例
- 多增强器协作示例
- 显示增强历史的示例
- 如何训练 TF-IDF模型
- 如何训练 LAMBADA模型
- 如何创建 自定义增强
- API 文档
增强器
增强器 | 目标 | 增强器 | 操作 | 描述 |
---|---|---|---|---|
Textual | 字符 | KeyboardAug | 替换 | 模拟键盘距离错误 |
Textual | OcrAug | 替换 | 模拟OCR引擎错误 | |
Textual | RandomAug | 插入, 替换, 交换, 删除 | 随机应用增强 | |
Textual | 词 | AntonymAug | 替换 | 根据WordNet反义词替换具有相反含义的词 |
Textual | ContextualWordEmbsAug | 插入, 替换 | 向BERT, DistilBERT, RoBERTa或XLNet语言模型提供上下文词以找出最合适的增强词 | |
Textual | RandomWordAug | 交换, 裁剪, 删除 | 随机应用增强 | |
Textual | SpellingAug | 替换 | 根据拼写错误词典替换词 | |
Textual | SplitAug | 拆分 | 随机将一个词拆分成两个词 | |
Textual | SynonymAug | 替换 | 根据WordNet/ PPDB同义词替换相似词 | |
Textual | TfIdfAug | 插入, 替换 | 使用TF-IDF来确定如何增强词汇 | |
Textual | WordEmbsAug | 插入, 替换 | 利用 word2vec, GloVe或fasttext嵌入来应用增强 | |
Textual | BackTranslationAug | 替换 | 利用两个翻译模型进行增强 | |
Textual | ReservedAug | 替换 | 替换保留词 | |
Textual | 句子 | ContextualWordEmbsForSentenceAug | 插入 | 根据XLNet, GPT2或DistilGPT2预测插入句子 |
Textual | AbstSummAug | 替换 | 通过抽象总结法总结文章 | |
Textual | LambadaAug | 替换 | 使用语言模型生成文本,然后使用分类模型保留高质量结果 | |
信号 | 音频 | CropAug | 删除 | 删除音频片段 |
信号 | LoudnessAug | 替换 | 调整音频音量 | |
信号 | MaskAug | 替换 | 屏蔽音频片段 | |
信号 | NoiseAug | 替换 | 注入噪音 | |
信号 | PitchAug | 替换 | 调整音频音调 | |
信号 | ShiftAug | 替换 | 向前/向后移动时间维度 | |
信号 | SpeedAug | 替换 | 调整音频速度 | |
信号 | VtlpAug | 替换 | 改变声道 | |
信号 | NormalizeAug | 替换 | 规范化音频 | |
信号 | PolarityInverseAug | 替换 | 交换音频正负 | |
信号 | 频谱图 | FrequencyMaskingAug | 替换 | 根据频率维度将一块值设为零 |
信号 | TimeMaskingAug | 替换 | 根据时间维度将一块值设为零 | |
信号 | LoudnessAug | 替换 | 调整音量 |
流程
增强器 | 增强器 | 描述 |
---|---|---|
管道 | 顺序 | 顺序应用增强函数列表 |
管道 | 有时 | 随机应用某些增强函数 |
安装
该库支持Linux和Windows平台上的Python 3.5+。
安装库:
pip install numpy requests nlpaug
或直接从GitHub安装最新版本(包括BETA功能)
pip install numpy git+https://github.com/makcedward/nlpaug.git
或通过conda安装
conda install -c makcedward nlpaug
如果您使用BackTranslationAug, ContextualWordEmbsAug, ContextualWordEmbsForSentenceAug和AbstSummAug,请同时安装以下依赖项
pip install torch>=1.6.0 transformers>=4.11.3 sentencepiece
如果您使用LambadaAug,请同时安装以下依赖项
pip install simpletransformers>=0.61.10
如果您使用AntonymAug, SynonymAug,请同时安装以下依赖项
pip install nltk>=3.4.5
如果您使用WordEmbsAug (word2vec, glove或fasttext),请首先下载预训练模型并同时安装以下依赖项
from nlpaug.util.file.download import DownloadUtil
DownloadUtil.download_word2vec(dest_dir='.') # 下载word2vec模型
DownloadUtil.download_glove(model_name='glove.6B', dest_dir='.') # 下载GloVe模型
DownloadUtil.download_fasttext(model_name='wiki-news-300d-1M', dest_dir='.') # 下载fasttext模型
pip install gensim>=4.1.2
如果您使用SynonymAug (PPDB),请从以下URI下载文件。从其他网站获得PPDB文件可能无法运行增强器
http://paraphrase.org/#/download
如果您使用PitchAug, SpeedAug和VtlpAug,请同时安装以下依赖项
pip install librosa>=0.9.1 matplotlib
最近的变化
1.1.11 2022年7月6日
查看更多详情请见changelog。
扩展阅读
参考
该库使用了数据(例如从互联网捕获)、研究(例如遵循增强器理念)、模型(例如使用预训练模型)。请查看数据源获取更多详情。
引用
@misc{ma2019nlpaug,
title={NLP Augmentation},
author={Edward Ma},
howpublished={https://github.com/makcedward/nlpaug},
year={2019}
}
这个包被许多书籍、研讨会和学术研究论文引用(70+)。以下是一些例子,您可以访问这里获取完整列表。
引用了 nlpaug 的研讨会
- S. Vajjala. 没有现成标注数据集的 NLP 在2021 多伦多机器学习峰会. 2021
引用了 nlpaug 的书籍
- S. Vajjala, B. Majumder, A. Gupta 和 H. Surana. 实用自然语言处理:构建真实世界 NLP 系统的全面指南. 2020
- A. Bartoli 和 A. Fusiello. 计算机视觉–ECCV 2020 研讨会. 2020
- L. Werra, L. Tunstall 和 T. Wolf 使用 Transformer 进行自然语言处理. 2022
引用了 nlpaug 的研究论文
- Google: M. Raghu 和 E. Schmidt. 科学发现的深度学习调查. 2020
- Sirius XM: E. Jing, K. Schneck, D. Egan 和 S. A. Waterman. 从自动生成的文稿中识别播客集的介绍. 2021
- Salesforce Research: B. Newman, P. K. Choubey 和 N. Rajani. P-adapters: 使用多样化提示从语言模型中稳健提取事实信息. 2021
- Salesforce Research: L. Xue, M. Gao, Z. Chen, C. Xiong 和 R. Xu. 通过表单攻击评估基于 Transformer 的表单域提取器的鲁棒性. 2021