文章目录
- 一、什么是Deepseek?
- 二、数据增强的必要性
- 三、 注册并登录蓝耘智算平台
- 准备数据集
- 调用Deepseek API
- 四、数据增强实战
- 五、总结
在机器学习和深度学习领域,数据增强是一项非常重要的技术,尤其是在数据集较小的情况下。通过数据增强,我们可以通过对现有数据进行各种变换(如旋转、平移、缩放、剪裁等)来生成新的数据,从而提升模型的泛化能力和鲁棒性。在本文中,我们将介绍如何在蓝耘智算平台上使用Deepseek API进行数据增强。
一、什么是Deepseek?
DeepSeek 是一款以大规模预训练为基础的自然语言处理模型,旨在提供强大的语言理解和生成能力。它基于最前沿的 Transformer 架构,通过多层次的训练和优化,使得模型能够处理复杂的文本任务,如文本生成、情感分析、问答系统等。
二、数据增强的必要性
-
提升模型泛化能力:数据增强通过生成更多的训练样本,可以有效防止模型过拟合,提高模型在新数据上的表现。
-
解决数据不足问题:在样本量有限的情况下,数据增强能够通过变换、裁剪、旋转等方式生成更多样本,帮助模型学习更多的特征。
-
增强鲁棒性:增强手段如噪声添加、图像模糊、旋转等,有助于提升模型对噪声、变形等因素的适应能力,尤其在实际应用中具有更好的稳定性。
对于文本和图像:
- 文本增强:通过同义词替换、随机插入或删除词语、调整句子结构回译法等手段,可以在不改变语义的情况下生成新的样本,增强模型的理解能力。
- 图像增强:通过旋转、翻转、裁剪、颜色变化等手段,能增加图像数据的多样性,提高模型对各种场景的识别能力。# 三、如何在蓝耘智算平台上使用Deepseek API进行数据增强
三、 注册并登录蓝耘智算平台
我们在实现之后的案例前,首先注册一下
注册链接:https://cloud.lanyun.net/#/registerPage?promoterCode=5b9e82cbb1
注册之后,我们就可以来到主页面了
这样我们就完成平台的注册了
准备数据集
这里我们可以在网上下载一个文本数据集,这里我们下载一款命名实体识别常用的中文数据集(Resume),这里下载训练集即可
下载链接:https://www.modelscope.cn/datasets/iic/resume_ner
下面是数据集部分内容
我们的目标是数据增强,在本文也可以理解为数据扩充,数据集增加了,这样我们对于训练的效果在通常情况下也会更佳~
调用Deepseek API
在我们注册完事后,我们就可以采用平台的为我们提供的方法进行愉快的调用deepseek的API了,下面是具体步骤。
点击进入后,进可以进行对话了
- 接入API:只需要获取API Key,用户就能调用相应的接口开始使用。API调用支持多种编程语言,包括Python、NodeJS和CURL,极大地提高了开发的灵活性。
官方不光提供简单的API KEY接入,此外,平台还提供了OpenAI兼容接口,开发者只需替换API URL和密钥配置,即可轻松将应用切换至DeepSeek R1/V3,保持高效、无缝的对接
第一种接入方式和大部分平台类似
第二种接入方式,官方提供了代码示例和文档介绍,还是十分用心的
接下来我们的实战采用的是第二种方式
四、数据增强实战
下面是具体的实战步骤
- 读取中文数据:你需要读取你的 train.txt 数据文件。
- 调用DeepSeek API进行翻译:将中文文本通过 DeepSeek API 翻译为英文。
- 对英文文本进行翻译:将翻译得到的英文再通过 DeepSeek API 翻译回中文,从而增加新的数据。
- 将翻译数据保存:保存扩充后的数据集。
这里我先将部分数据集里的内容转换为纯文本,代码如下
python"># 读取train.txt文件并提取纯文本
def extract_text_from_file(file_path):"""从文件中读取并提取纯文本,去除标注"""pure_text = []with open(file_path, 'r', encoding='utf-8') as file:for line in file:# 分离每一行的词和标签,去除标签部分word = line.split(" ")[0] # 取每行的第一个词(去除标签)pure_text.append(word)# 将所有词连接成一个字符串,没有空格return "".join(pure_text)# 指定文件路径
file_path = 'train.txt' # 这里是train.txt文件的路径
output_file_path = 'pure_text_output.txt' # 输出文件路径# 提取纯文本
pure_text = extract_text_from_file(file_path)# 将纯文本保存到新的文件
with open(output_file_path, 'w', encoding='utf-8') as output_file:output_file.write(pure_text)print(f"纯文本已保存到 {output_file_path}")
之后我们就可以将纯文本的数据根据deepseek API调用进行转换了,代码如下:
python">import random
from openai import OpenAI# 构造 DeepSeek 客户端
client = OpenAI(api_key=" your API Key", # 替换为你的 API keybase_url="https://maas-api.lanyun.net/v1",
)# 流式
stream = True# 定义翻译函数
def translate_text(text, target_language="en"):"""调用 DeepSeek API 进行翻译:中文 -> 英文 或 英文 -> 中文"""try:# 请求翻译chat_completion = client.chat.completions.create(model="/maas/deepseek-ai/DeepSeek-R1",messages=[{"role": "user","content": f"Translate the following text to {target_language}: {text}",}],stream=stream,)if stream:# 迭代流式返回内容translated_text = ""for chunk in chat_completion:# 打印思维链内容if hasattr(chunk.choices[0].delta, 'reasoning_content'):print(f"{chunk.choices[0].delta.reasoning_content}", end="")# 打印模型最终返回的contentif hasattr(chunk.choices[0].delta, 'content'):if chunk.choices[0].delta.content is not None and len(chunk.choices[0].delta.content) != 0:translated_text += chunk.choices[0].delta.contentprint(chunk.choices[0].delta.content, end="") # 打印中间返回的内容return translated_text.strip()else:# 如果没有流式返回,直接返回翻译结果return chat_completion.choices[0].message.contentexcept Exception as e:print(f"翻译时发生错误: {e}")return None# 从文件中读取文本
def read_pure_text(file_path):"""从文件中读取纯文本"""with open(file_path, 'r', encoding='utf-8') as file:return file.read()# 保存转换后的文本到新文件
def save_augmented_data(augmented_data, output_file="augmented_train.txt"):"""保存转换后的数据到文件"""with open(output_file, 'w', encoding='utf-8') as file:for line in augmented_data:file.write(line + "\n")# 主程序
def main():# 从pure_text_output.txt读取文本file_path = 'pure_text_output.txt' # 输入纯文本文件路径output_file_path = 'augmented_train.txt' # 输出转换后的文件路径# 读取纯文本pure_text = read_pure_text(file_path)# 1. 中文 -> 英文print("\n翻译成英文:")english_text = translate_text(pure_text, target_language="en")print(f"\n英文翻译:{english_text}\n")# 2. 英文 -> 中文print("\n翻译回中文:")translated_chinese_text = translate_text(english_text, target_language="zh")print(f"\n中文翻译:{translated_chinese_text}\n")# 保存转换后的数据if translated_chinese_text:save_augmented_data([translated_chinese_text], output_file=output_file_path)print(f"转换后的数据已保存到 {output_file_path}")else:print("没有有效的翻译结果,文件未保存")if __name__ == "__main__":main()
下面是部分结果截图:
注意:内容可能不是完全正确,因为生成的文本中含有deepseek的思考内容,所以需要自行清洗
五、总结
本文介绍了如何在蓝耘智算平台上使用Deepseek API进行数据增强。数据增强通过对现有数据进行多种变换(如翻译、裁剪等),能够提升模型的泛化能力、解决数据不足问题,并增强模型的鲁棒性。具体步骤包括注册平台、准备数据集、调用Deepseek API进行文本翻译增强,以及保存增强后的数据。通过这种方法,可以有效扩充训练数据集,从而提高机器学习和深度学习模型的性能。
感兴趣的小伙伴可以交流,最后附上
注册链接:https://cloud.lanyun.net/#/registerPage?promoterCode=5b9e82cbb1