在机器学习和深度学习领域,数据增强是一项非常重要的技术,尤其是在数据集较小的情况下。通过数据增强,我们可以通过对现有数据进行各种变换(如旋转、平移、缩放、剪裁等)来生成新的数据,从而提升模型的泛化能力和鲁棒性。在本文中,我们将介绍如何在蓝耘智算平台上使用Deepseek API进行数据增强。

一、什么是Deepseek?

DeepSeek 是一款以大规模预训练为基础的自然语言处理模型,旨在提供强大的语言理解和生成能力。它基于最前沿的 Transformer 架构,通过多层次的训练和优化,使得模型能够处理复杂的文本任务,如文本生成、情感分析、问答系统等。

二、数据增强的必要性

  1. 提升模型泛化能力:数据增强通过生成更多的训练样本,可以有效防止模型过拟合,提高模型在新数据上的表现。

  2. 解决数据不足问题:在样本量有限的情况下,数据增强能够通过变换、裁剪、旋转等方式生成更多样本,帮助模型学习更多的特征。

  3. 增强鲁棒性:增强手段如噪声添加、图像模糊、旋转等,有助于提升模型对噪声、变形等因素的适应能力,尤其在实际应用中具有更好的稳定性。

对于文本和图像:

  • 文本增强:通过同义词替换、随机插入或删除词语、调整句子结构回译法等手段,可以在不改变语义的情况下生成新的样本,增强模型的理解能力。
  • 图像增强:通过旋转、翻转、裁剪、颜色变化等手段,能增加图像数据的多样性,提高模型对各种场景的识别能力。# 三、如何在蓝耘智算平台上使用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 翻译回中文,从而增加新的数据。
  • 将翻译数据保存:保存扩充后的数据集。

这里我先将部分数据集里的内容转换为纯文本,代码如下

# 读取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调用进行转换了,代码如下:

import random
from openai import OpenAI

# 构造 DeepSeek 客户端
client = OpenAI(
    api_key=" your API Key",  # 替换为你的 API key
    base_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="")
                # 打印模型最终返回的content
                if 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.content
                        print(chunk.choices[0].delta.content, end="")  # 打印中间返回的内容

            return translated_text.strip()
        else:
            # 如果没有流式返回,直接返回翻译结果
            return chat_completion.choices[0].message.content

    except 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

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐