暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

小白学NLP:PaddleNLP中文数据增强

Coggle数据科学 2022-11-21
785

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


 竞赛交流群 邀请函  #

△长按添加竞赛小助手
添加Coggle小助手微信领取代码(ID : coggle666)

每天Kaggle算法竞赛、干货资讯汇总

与 28000+来自竞赛爱好者一起交流~


文章转载自Coggle数据科学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论