目录

词替换


主要参考: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):数据增强句子中被替换词数量。默认为Noneaug_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):数据增强句子中被插入词数量。默认为Noneaug_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 Randomwordtest_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 Similarwordtest_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 Homophonetest_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 RandomDeleteChartest_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 CharPositionExchangets = '''这是个实体: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 CharPositionExchangeRandomword.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:构造的句子数量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93231.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93231.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93231.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EhViewer安卓ios全版本类下载安装工具的完整路径解析

开发一款类似EhViewer的下载安装工具(集下载管理、应用部署等功能于一体),需要经历从需求锚定到落地发布的系统性流程。以下从需求拆解到技术落地的全维度指南,将帮你理清开发脉络,避开常见陷阱。安装 GitHub - huangy…

MySQL 主键详解:作用与使用方法

在 MySQL 数据库中,主键(Primary Key) 是表结构设计中最重要的约束之一。它不仅是数据唯一性的保障,也是多表关联、查询优化的核心工具。本文将从 主键的作用 和 主键的用法 两个方面进行讲解,并配合代码示例帮助理解一…

lib.dom.d.ts

lib.dom.d.ts 是一个 TypeScript 类型声明文件,它是 TypeScript 标准库的一部分,用于定义浏览器 DOM(文档对象模型)相关的类型和接口。这个文件为开发者提供了浏览器中所有内置的 DOM 类型的定义,包括 localStorage、d…

Spring 工具类:StopWatch

StopWatch 是 Spring 框架提供的一个简单而强大的计时工具类,用于测量代码块的执行时间。它特别适合在开发阶段进行性能分析、调试和优化。 基本使用方法 // 创建 StopWatch 实例(可指定 ID) StopWatch stopWatch new StopWatch("性能分…

解决 VSCode 运行 Python 时 ModuleNotFoundError: No module named ‘open_webui‘ 问题

目录 1. 问题原因分析 2. 解决思路 3. 解决步骤 3.1 打开或创建 .vscode/launch.json 3.2 添加调试配置 3.3 配置说明 3.4 运行测试 4. 总结 在使用 VSCode 调试 Python 项目时,我们经常会遇到类似下面的错误: Exception has occurred: ModuleN…

Python基础-数据结构

数据结构 Python提供了四种主要的内置数据结构:列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。每种数据结构都有其特定的用途和特性。 Python数据结构概览&…

NLP学习之Transformer(1)

初识 Transformer (1) 1.简介 1.1主要特点: self-attention: 自注意力机制,Transformer的核心是自注意力机制,它允许模型在处理某个位置的输入时,能够直接与其他位置的输入交互,而不…

C语言笔记6:C高级 part1

1.gcc 编译器 编译流程 预处理-》编译》汇编》链接》 E 预处理的命令 S 编译汇编代码 -c汇编阶段命令 -o 输出对应的文件GDB调试工具2.作用域存储分类// C高级部分知识多, 加上这周 我学的知识量有点爆炸。家里又有事情,这周末要回老家 争取下周补齐吧。…

A12预装app

在A12上预装应用,出现了一个异常。在此记录问题描述:在A12上预装应用按照A13的预装方案报错,mk文件如下:LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS : optional LOCAL_MODULE : Tideen_PTT LOCAL_MODU…

termios 线程 poll epoll进化 二叉AVL红黑树

struct termios tio 是什么 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h>#define SERIAL_PORT "/dev/ttyS0" #define BUF_SIZE 256int main(v…

C++设计模式:类间关系

类封装了数据和行为&#xff0c;是面向对象的重要组成部分&#xff0c;它是具有相同属性、操作、关系的对象集合的总称。在系统中&#xff0c;每个类都具有一定的职责&#xff0c;职责指的是类要完成什么样子的功能&#xff0c;要承担什么样子的义务。一个类可以有多种职责&…

MSYS2+CMake配置C/C++开发环境

目录一、MSYS2是什么1.1 核心架构与组件​​1.1.1 背景介绍1.1.1.1 Cygwin1.1.1.2 MinGW和Mingw-w641.1.1.3MSYS和MSYS21.1.2 技术基础​​1.1.3 多环境支持​​1.2 核心功能​​1.2.1 类Unix开发环境​​1.2.2 开发工具链​​1.2.3 软件仓库与包管理​​二、安装和配置2.1 配置…

Vue 3 + TypeScript:package.json 示例 / 详细注释说明

一、示例 / 详细注释说明 {// 项目基础信息"name": "vite-project", // 项目名称&#xff08;建议使用 kebab-case 格式&#xff09;"private": true, // 标记为私有项目&#xff0c;避免意外发布到 npm"version": "1.0.…

SpatialVLM和SpatialRGPT论文解读

目录 一、SpatialVLM 1、概述 2、方法 3、实验 二、SpatialRGPT 1、概述 2、方法 3、训练方法 4、实验 一、SpatialVLM 1、概述 SpatialVLM是最早的依赖传统VLMs实现3D空间推理能力的论文&#xff0c;在24年1月由DeepMind团队提出&#xff0c;当时对比的还是GPT4v&am…

理解GPU架构:基础与关键概念

GPU 基础概述&#xff1a;从图形渲染到 AI 与高性能计算的核心 Graphics Processing Units&#xff08;GPU&#xff09;已从专用的图形渲染硬件演进为 AI、科学计算与高性能任务的中坚力量。本文将介绍 GPU 架构的基础知识&#xff0c;包括其组成部分、内存层次结构&#xff0c…

订单状态定时处理(Spring Task 定时任务)

订单状态定时处理 如果最后一秒刚好支付了咋办?如何补偿? 需要将支付状态和订单状态一起考虑,或者直接使用状态机 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 **定位:**定时任务框架 **作用:**定时自动执行某段Java代码 …

职得AI简历-免费AI简历生成工具

本文转载自&#xff1a;职得AI简历-免费AI简历生成工具 - Hello123工具导航 ** 一、核心功能解析 职得 AI 简历是 AI 驱动的智能求职平台&#xff0c;通过深度学习算法分析百万优质简历数据&#xff0c;提供从简历生成到面试准备的全流程服务&#xff0c;显著提升求职竞争力。…

8.14 机器学习(1)

机器学习基础一、什么是机器学习定义&#xff1a;让计算机利用大量数据在特定任务上持续改进性能的过程&#xff0c;可以让任务完成的更好。机器学习的领域很多。二、机器学习基本术语数据集、样本、特征&#xff08;属性&#xff09;、属性空间、向量表示、训练集&#xff08;…

给电脑升级内存,自检太慢,以为出错

公司电脑是16G内存&#xff0c;用虚拟机时非常吃力。于是跟领导说&#xff0c;买了32G内存和1T SSD。电脑有两个SATA数据线&#xff0c;SATA电源头只有一个。于是买了几个1转2&#xff0c;顺利接上。把原来的16G拔下&#xff0c;换上32G内存。结果开机没反应。心里就有点嘀咕&a…

Effective C++ 条款43:学习处理模板化基类内的名称

Effective C 条款43&#xff1a;学习处理模板化基类内的名称核心思想&#xff1a;模板化基类&#xff08;templatized base classes&#xff09;中的名称在派生类模板中默认不可见&#xff0c;需要通过this->前缀、using声明或显式基类限定来引入。这是因为编译器在解析模板…