蓝耘元生代|调用Deepseek API提升数据集多样性:数据增强实践

文章目录

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

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

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 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

相关推荐
FearlessBlot1 分钟前
Windows环境下PyCharm 配置miniforge
ide·python·pycharm
爱喝热水的呀哈喽2 小时前
Java collection实例电影尝试
java·windows·python
python_chai3 小时前
Python核心数据结构详解:元组、集合与字典
java·数据结构·python
程序员小续4 小时前
React 多个 HOC 嵌套太深,会带来哪些隐患?
java·前端·javascript·vue.js·python·react.js·webpack
九转成圣6 小时前
windows10安装配置并使用Miniconda3
python·conda
Aerkui6 小时前
Python高阶函数-eval深入解析
开发语言·python
胖哥真不错6 小时前
数据分享:汽车测评数据
python·机器学习·数据分享·汽车测评数据·car evaluation
u0103731067 小时前
Django异步执行任务django-background-tasks
后端·python·django
杰瑞学AI8 小时前
LeetCode详解之如何一步步优化到最佳解法:21. 合并两个有序链表
数据结构·python·算法·leetcode·链表·面试·职场和发展
攻城狮7号8 小时前
Python爬虫第5节-urllib的异常处理、链接解析及 Robots 协议分析
爬虫·python·python爬虫