PaddleNLP中文数据增强

PaddleNLP介绍

PaddleNLP是飞桨自然语言处理开发库,具备 易用的文本领域API,多场景的应用示例、和 高性能分布式训练 三大特点,旨在提升飞桨开发者文本领域建模效率,旨在提升开发者在文本领域的开发效率,并提供丰富的NLP应用示例。

PaddleNLP数据增强原始文档:

https://paddlenlp.readthedocs.io/zh/latest/dataaug.html

我们首先导入Paddle和PaddleNLP:

import paddle import paddlenlp
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

【竞赛报名/项目咨询请加微信:mollywei007】

微信扫一扫,分享到朋友圈

PaddleNLP中文数据增强
上一篇

11.19大陆雅思大作文7分范文及解析:中学生选择学术or职业课程

下一篇

西方艺术史学习参考阅读书目

你也可能喜欢

  • 暂无相关文章!

关注热点

返回顶部