NLP数据增强方法及实现-A

发布于:2025-08-16 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

词替换


主要参考:paddlenlp/data_aug模块

词替换数据增强策略也即将句子中的词随机替换为其他单词进行数据增强,这里我们将介绍如何使用paddlenlp.dataaug.WordSubstitute进行词级别替换的数据增强。

WordSubstitute 参数介绍:

    aug_type(str or list(str)):
        词替换增强策略类别。可以选择"synonym"、"homonym"、"custom"、"random"、"mlm"或者
        前三种词替换增强策略组合。

    custom_file_path (str,*可选*):
        本地数据增强词表路径。如果词替换增强策略选择"custom",本地数据增强词表路径不能为None。默认为None。

    create_n(int):
        数据增强句子数量。默认为1。

    aug_n(int):
        数据增强句子中被替换词数量。默认为None

    aug_percent(int):
        数据增强句子中被替换词数量占全句词比例。如果aug_n不为None,则被替换词数量为aug_n。默认为0.02。

    aug_min (int):
        数据增强句子中被替换词数量最小值。默认为1。

    aug_max (int):
        数据增强句子中被替换词数量最大值。默认为10。

    tf_idf (bool):
        使用TF-IDF分数确定哪些词进行增强。默认为False。

    tf_idf_file (str,*可选*):
        用于计算TF-IDF分数的文件。如果tf_idf为True,本地数据增强词表路径不能为None。默认为None。

我们接下来将以下面的例子介绍词级别替换的使用:

from paddlenlp.dataaug import WordSubstitute
s1 = "人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。"
s2 = "而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。"

同义词替换

aug = WordSubstitute('synonym', create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的意义。

可以根据的实际需求,修改数据增强生成句子数 create_n

aug = WordSubstitute('synonym', create_n=3, aug_n=1)
augmenteds = aug.augment(s1)
print("origin:", s1)
for i, augmented in enumerate(augmenteds):
    print("augmented {} :".format(i), augmented)
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 0 : 人类语言是空空如也的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 1 : 人类语言是抽象的信息符号,其中蕴含着丰富的疑义信息,人类可以很轻松地理解其中的含义。
# augmented 2 : 人类语言是干瘪瘪的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。

可以根据的实际需求,修改句子中被替换的词数量 aug_n

aug = WordSubstitute('synonym', create_n=1, aug_n=3)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信符号,其中蕴含着丰富的语义消息,人类可以很轻松地懂其中的含义。

可以以列表的形式同时输入多个句子:

aug = WordSubstitute('synonym', create_n=1, aug_n=1)
sentences = [s1,s2]
augmenteds = aug.augment(sentences)
for sentence, augmented in zip(sentences, augmenteds):
    print("origin:", sentence)
    for i, aug in enumerate(augmented):
        print("augmented {} :".format(i), aug)
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 0 : 人类语言是肤浅的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# origin: 而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。
# augmented 0 : 而计算机只能处理数值化的信息,无法直接明人类语言,所以需要将人类语言进行数值化转换。

同音词替换

根据同音词词表将句子中的词替换为同音词:

aug = WordSubstitute('homonym', create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义新喜,人类可以很轻松地理解其中的含义。

可以根据的实际需求,修改数据增强生成句子数 create_n和句子中被替换的词数量 aug_n

本地词表替换

只需要传入本地词表文件路径custom_file_path,即可使用自定义的词表进行替换。本地词表文件为固定格式的json文件,字典关键字(key)为词,字典键值(item)为列表形式的替换词。例如自定义本地词表"custom.json"如下:

{"人类":["人", "人种"], "抽象":["abstract","具象"]}

使用自定义的本地词表进行句子中词替换:

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("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人种语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。

可以根据的实际需求,修改数据增强生成句子数 create_n和句子中被替换的词数量 aug_n

组合替换

还可以选择将同义词、同音词、本地词表进行随机组合,例如组合同义词词表核本地词表进行词替换:

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("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地知晓其中的含义。

可以根据的实际需求,修改数据增强生成句子数 create_n和句子中被替换的词数量 aug_n

随机词替换

使用随机词进行句子中词替换:

aug = WordSubstitute('random', create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的接防。

可以根据的实际需求,修改数据增强生成句子数 create_n和句子中被替换的词数量 aug_n

上下文替换

上下文替换是随机将句子中单词进行掩码,利用中文预训练模型ERNIE 1.0,根据句子中的上下文预测被掩码的单词。相比于根据词表进行词替换,上下文替换预测出的单词更匹配句子内容,数据增强所需的时间也更长。

使用模型根据上下文预测单词进行句子中词替换:

import paddle
# 在GPU环境下运行
paddle.set_device("gpu")
# 在CPU下环境运行
# paddle.set_device("cpu")
aug = WordSubstitute('mlm', create_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息载体,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。

可以根据的实际需求,修改数据增强生成句子数 create_n,句子中被替换的词数量 aug_n 默认为1

基于TF-IDF的词替换

TF-IDF算法认为如果一个词在同一个句子中出现的次数多,词对句子的重要性就会增加;如果它在语料库中出现频率越高,它的重要性将被降低。我们将计算每个词的TF-IDF分数,低的TF-IDF得分将有很高的概率被替换

我们可以在上面所有词替换策略中使用TF-IDF计算词被替换的概率,我们首先需要将tf_idf设为True,并传入语料库文件(包含所有训练的数据) tf_idf_file 用于计算单词的TF-IDF分数。语料库文件为固定 txt 格式,每一行为一条句子。以语料库文件"data.txt"做同义词替换为例,语料库文件格式如下:

人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。
...

tf_idf_file = "data.txt"
aug = WordSubstitute('synonym', tf_idf=True, tf_idf_file=tf_idf_file, create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的意思。

词插入

词插入数据增强策略也即将句子中的词随机插入其他单词进行数据增强,这里我们将介绍如何使用paddlenlp.dataaug.WordInsert进行词级别插入的数据增强。

WordInsert 参数介绍:

    aug_type(str or list(str)):
        词插入增强策略类别。可以选择"synonym"、"homonym"、"custom"、"random"、"mlm"或者
        前三种词插入增强策略组合。

    custom_file_path (str,*可选*):
        本地数据增强词表路径。如果词插入增强策略选择"custom",本地数据增强词表路径不能为None。默认为None。

    create_n(int):
        数据增强句子数量。默认为1。

    aug_n(int):
        数据增强句子中被插入词数量。默认为None

    aug_percent(int):
        数据增强句子中被插入词数量占全句词比例。如果aug_n不为None,则被插入词数量为aug_n。默认为0.02。

    aug_min (int):
        数据增强句子中被插入词数量最小值。默认为1。

    aug_max (int):
        数据增强句子中被插入词数量最大值。默认为10。

我们接下来将以下面的例子介绍词级别插入的使用:

from paddlenlp.dataaug import WordInsert
s1 = "人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。"
s2 = "而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。"

同义词插入

根据同义词词表将句子中的词插入为同义词:

aug = WordInsert('synonym', create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地明亮理解其中的含义。

可以根据的实际需求,修改数据增强生成句子数 create_n

aug = WordInsert('synonym', create_n=3, aug_n=1)
augmenteds = aug.augment(s1)
print("origin:", s1)
for i, augmented in enumerate(augmenteds):
    print("augmented {} :".format(i), augmented)
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 0 : 人类语言是干瘪瘪抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 1 : 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地明了理解其中的含义。
# augmented 2 : 人类语言是抽象的信息符号,其中蕴含着丰富的语义音信信息,人类可以很轻松地理解其中的含义。

同音词插入

根据同音词词表将句子中的词插入为同音词:这个用处不大

aug = WordInsert('homonym', create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息心喜符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。

词删除

词删除数据增强策略也即将句子中的词随机删除进行数据增强,这里我们将介绍如何使用paddlenlp.dataaug.WordDelete进行词级别删除的数据增强。

from paddlenlp.dataaug import WordDelete
s1 = "人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。"
s2 = "而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。"
aug = WordDelete(create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以松地理解其中的含义。

可以根据的实际需求,修改数据增强生成句子数 create_n

aug = WordDelete(create_n=3, aug_n=1)
augmenteds = aug.augment(s1)
print("origin:", s1)
for i, augmented in enumerate(augmenteds):
    print("augmented {} :".format(i), augmented)
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 0 : 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,可以很轻松地理解其中的含义。
# augmented 1 : 人类是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 2 : 人类语言是抽象的符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。

可以根据的实际需求,修改句子中被删除的词数量 aug_n

aug = WordDelete(create_n=1, aug_n=3)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以松地理解其中的。

词交换

词交换数据增强策略也即将句子中的词的位置随机交换进行数据增强,这里我们将介绍如何使用paddlenlp.dataaug.WordSwap进行词级别交换的数据增强。

from paddlenlp.dataaug import WordSwap
s1 = "人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。"
s2 = "而计算机只能处理数值化的信息,无法直接理解人类语言,所以需要将人类语言进行数值化转换。"
aug = WordSwap(create_n=1, aug_n=1)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 语言人类是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
aug = WordSwap(create_n=3, aug_n=1)
augmenteds = aug.augment(s1)
print("origin:", s1)
for i, augmented in enumerate(augmenteds):
    print("augmented {} :".format(i), augmented)
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented 0 : 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻理解松地其中的含义。
# augmented 1 : 人类语言是抽象的信息符号,其中蕴含着丰富的信息语义,人类可以很轻松地理解其中的含义。
# augmented 2 : 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以松地很轻理解其中的含义。
aug = WordSwap(create_n=1, aug_n=3)
augmented = aug.augment(s1)
print("origin:", s1)
print("augmented:", augmented[0])
# origin: 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含义。
# augmented: 人类语言是抽象的信息符号,其中蕴含着丰富的信息语义,人类可以很轻松地理解其中的含义。

除此之外,还有一个增强包:  

https://github.com/425776024/nlpcda

1 基于语音的洗文本过程(类似翻译),也就是文本转语音,再转文字。

例子:paddlespeech可以实现

input: 新华社北京消息 > fastspeech2 > x.wav

x.wav > wav2vec2 > output: 新华设北京消息

  • 数字转换工具(用于文本转换、中文语音合成需要纯中文)

今天是8月29日消息 > 今天是八月二十九日消息

我有1234个苹果 > 我有一千二百三十四个苹果

2 实体替换

from nlpcda import Randomword

test_str = '''这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击'''

smw = Randomword(create_num=3, change_rate=0.3)
rs1 = smw.replace(test_str)

print('随机实体替换>>>>>>')
for s in rs1:
    print(s)
'''
随机实体替换>>>>>>
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这是个实体:长兴国际;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这是个实体:浙江世宝;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
'''
  • create_num=3 :返回最多3个增强文本
  • change_rate=0.3 : 文本改变率
  • seed : 随机种子

3随机同义词替换

from nlpcda import Similarword

test_str = '''这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击'''

smw = Similarword(create_num=3, change_rate=0.3)
rs1 = smw.replace(test_str)

print('随机同义词替换>>>>>>')
for s in rs1:
    print(s)

'''
随机同义词替换>>>>>>
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数量增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;斯nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
'''

  • create_num=3 :返回最多3个增强文本
  • change_rate=0.3 : 文本改变率
  • seed : 随机种子

4随机近义词替换

from nlpcda import Homophone

test_str = '''这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击'''

smw = Homophone(create_num=3, change_rate=0.3)
rs1 = smw.replace(test_str)

print('随机近义字替换>>>>>>')
for s in rs1:
    print(s)

'''
随机近义字替换>>>>>>
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这是个实体:58同城;今填是2020年3月8日11:40,天气晴朗,天气很不错,空气痕好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
鷓是个实体:58同乘;今天是2020年3月8日11:40,天迄晴朗,天气很不错,空气很儫,不差;这个nlpcad包,用于方便一键数据增强,犐有效增牆NLP模型的橎化性能、减少波动、抵抗对抗攻击
'''
  • create_num=3 :返回最多3个增强文本
  • change_rate=0.3 : 文本改变率
  • seed : 随机种子

5 随机字删除

from nlpcda import RandomDeleteChar

test_str = '''这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击'''

smw = RandomDeleteChar(create_num=3, change_rate=0.3)
rs1 = smw.replace(test_str)

print('随机字删除>>>>>>')
for s in rs1:
    print(s)

'''
随机字删除>>>>>>
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气,不差;这个nlpcad包用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗
个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型泛化性能、减少波动、抵抗对抗
'''
  • create_num=3 :返回最多3个增强文本
  • change_rate=0.3 : 文本改变率
  • seed : 随机种子

.随机置换邻近的字

from nlpcda import CharPositionExchange

ts = '''这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击'''
smw = CharPositionExchange(create_num=3, change_rate=0.3,char_gram=3,seed=1)
rs=smw.replace(ts)
for s in rs:
    print(s)

'''
这是个实体:58同城;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,不差;这个nlpcad包,用于方便一键数据增强,可有效增强NLP模型的泛化性能、减少波动、抵抗对抗攻击
这实个是体:58城同;今天是2020年3月8日11:40,天气晴朗,天气很不错,空气很好,差不;这个nlpcad包,便用一数方增键强据于,增有效可强NLP模型性泛化的能、动少减波、抵对攻抗抗击
这是个体实:58城同;今是天2020年3月8日11:40,朗气晴天,天气很错不,空好很气,不差;个这nlpcad包,方便键一据增用数于强,可有效强增NLP模型的性化泛能、动减波少、抗抗击抵对攻
'''
  • char_gram=3:某个字只和邻近的3个字交换
  • 内部细节:遇到数字,符号等非中文,不会交换

添加自定义词典

from nlpcda import Randomword
from nlpcda import Similarword
from nlpcda import Homophone
from nlpcda import RandomDeleteChar
from nlpcda import Ner
from nlpcda import CharPositionExchange

Randomword.add_word('小明')
Randomword.add_words(['小明','小白','天地良心'])
# Similarword,Homophone,RandomDeleteChar 同上

simbert

from nlpcda import Simbert
config = {
        'model_path': '/xxxx/chinese_simbert_L-12_H-768_A-12',
        'CUDA_VISIBLE_DEVICES': '0,1',
        'max_len': 32,
        'seed': 1
}
simbert = Simbert(config=config)
sent = '把我的一个亿存银行安全吗'
synonyms = simbert.replace(sent=sent, create_num=5)
print(synonyms)
'''
[('我的一个亿,存银行,安全吗', 0.9871675372123718), 
('把一个亿存到银行里安全吗', 0.9352194666862488), 
('一个亿存银行安全吗', 0.9330801367759705), 
('一个亿的存款存银行安全吗', 0.92387855052948),
 ('我的一千万存到银行安不安全', 0.9014463424682617)]
'''

  • config:model_path(上述下载的模型位置),设备(cpu/cuda...)、最大长度、随机种子
  • sent:需要增强的句子
  • create_num:构造的句子数量

网站公告

今日签到

点亮在社区的每一天
去签到