文章目录[隐藏]
PaddleNLP介绍
PaddleNLP是飞桨自然语言处理开发库,具备 易用的文本领域API,多场景的应用示例、和 高性能分布式训练 三大特点,旨在提升飞桨开发者文本领域建模效率,旨在提升开发者在文本领域的开发效率,并提供丰富的NLP应用示例。
PaddleNLP数据增强原始文档:
https://paddlenlp.readthedocs.io/zh/latest/dataaug.html
我们首先导入Paddle和PaddleNLP:
importpaddleimportpaddlenlp print('paddle version: ', paddle.__version__) print('paddlenlp version: ', paddlenlp.__version__)
paddle version: 2.3.2 paddlenlp version: 2.4.3
方法1:词替换
单词替换的原理是将原始句子中的单词替换为其他单词,替换方法有:
- 同义词替换:使用词典中含义相近的单词进行替换,需要有额外的中文词典。
- 同音词替换:使用词典中同音相近的单词进行替换,需要有额外的中文词典。
- 上下文替换:使用预训练模型结合上下文进行预测。
- 自定义替换:自定义替换的规则。
- 随机替换:使用词典中任意单词替换。
- 组合替换:组合上述所有的替换。
同义词替换
aug = WordSubstitute('synonym', create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("augmented:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 augmented: 人类语言是无意义的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
同音(形)异义词替换
aug = WordSubstitute('homonym', create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("替换:", augmented[0])
100%|██████████| 196959/196959 [00:03<00:00, 65644.73it/s]
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
augmented: 人类语嫣是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
自定义词表替换
定义json:
!echo {"人类":["人", "人种"], "抽象":["abstract","具象"]} > custom.json
custom_file_path ="custom.json"aug = WordSubstitute('custom', custom_file_path=custom_file_path, create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("替换:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 augmented: 人类语言是abstract的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
组合替换
custom_file_path ="custom.json"aug = WordSubstitute(['custom','synonym'], custom_file_path=custom_file_path, create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("替换:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 替换: 人类语言是抽象的信息符号,其中蕴含着丰富的语义消息,人类可以很轻松地理解其中的含义。
上下文替换
aug = WordSubstitute('mlm', create_n=1) augmented = aug.augment(s1) print("原始:", s1) print("替换:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的语字符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
方法2:词插入
单词插入的原理是插入与原始句子中的相关的单词,替换方法有:
- 同义词插入:使用词典中含义相近的单词进行插入,需要有额外的中文词典。
- 同音词插入:使用词典中同音相近的单词进行插入,需要有额外的中文词典。
- 上下文插入:使用预训练模型结合上下文进行插入。
- 自定义插入:自定义替换的插入。
- 随机插入:使用词典中任意单词插入。
- 组合插入:组合上述所有的插入。
同义词插入
aug = WordInsert('synonym', create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的信息符号,其中蕴含着丰富的语义音息信息,人类可以很轻松地理解其中的含义。
同音(形)异义词插入
aug = WordInsert('homonym', create_n=1, aug_n=3) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象抽像的信息符号,其中蕴含着丰富的语义御医信息,人类可以很轻松地理解李杰其中的含义。
自定义词表插入
!echo {"人类":["人累", "扔雷"], "抽象":["丑相"]} > custom.json
custom_file_path ="custom.json"aug = WordInsert('custom', custom_file_path=custom_file_path, create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类扔雷可以很轻松地理解其中的含义。
组合插入
custom_file_path ="custom.json"aug = WordInsert(['custom','synonym'], custom_file_path=custom_file_path, create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义意思。
随机插入
aug = WordInsert('random', create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息马婶,人类可以很轻松地理解其中的含义。
上下文插入
aug = WordInsert('mlm', create_n=1) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的信息符号,其中蕴含着丰富的语义语言信息,人类可以很轻松地理解其中的含义。
方法3:词删除
随机删除原始句子中的部分单词。
aug = WordDelete(create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("增强:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 增强: 人类语言是抽象的信息符号,其中蕴含着丰富的语义,人类可以很轻松地理解其中的含义。
方法4:词交换
随机交换句子中的单词顺序。
aug = WordSwap(create_n=1, aug_n=1) augmented = aug.augment(s1) print("原始:", s1) print("替换:", augmented[0])
原始: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。 替换: 语言人类是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
运行代码?:https://aistudio.baidu.com/aistudio/projectdetail/5072002