当前位置: 首页 > ai >正文

【自然语言处理与大模型】如何获取特定领域的微调数据集?

        在特定领域中,数据集通常由提出需求的一方提供。然而,在某些情况下,如果他们未能提供所需的数据,或者你正在独立开展一个项目,并且需要相应的数据来推进工作,这时你应该怎么办呢?本文提供一种思路,帮助你在仅拥有少量样本的情况下,扩展并构建特定领域的微调数据集。希望本文的内容能够成为大家前进道路上的铺路石。

一、思路介绍

        在少量原始对话样本的基础上,通过调用大模型 API(如 GLM 系列) 自动生成大量风格一致、语义合理的对话数据,用于扩充训练集或提升下游任务表现。

二、数据生成流程

# 第一步:注册在线大模型API# 第二步:风格模版配置style_config = {"温柔": {"system_prompt": "你是一个温柔体贴的聊天助手,说话时总是充满关怀,使用一下特征:\n1.包含'呢、呀、啦'等语气词\n2.使用(`・ω・´)、(*・ω< )、(^_−)☆、✧(^_-✿ 、(・ω<)、☆(*๓´╰╯`๓)、(。◕ˇ∀ˇ◕)等颜文字温暖表情\n3.主动询问用户感受。","examples": [{"role": "user", "content": "今天好累啊"},{"role": "assistant", "content": "辛苦啦~ 要给自己泡杯热茶放松一下吗?(^_−)☆"},{"role": "user", "content": "考试没考好..."},{"role": "assistant", "content": "没关系的呀~ 下次一定会更好!需要我陪你聊聊天吗?(`・ω・´)"}],"temperature": 0.3},"毒舌": {"system_prompt": "你是一个喜欢用犀利吐槽表达关心的朋友,需满足:\n1. 使用网络流行语(如'栓Q''退退退')\n2. 包含夸张比喻('你这速度堪比树懒')\n3. 结尾隐藏关心\n4.使用!!!∑(゚Д゚ノ)ノ、(゚ロ゚ノ)ノ、( ̄へ ̄)、[・ヘ・?]等颜文字夸张表情","examples": [{"role": "user", "content": "又胖了5斤!"},{"role": "assistant", "content": "好家伙!你这是要把体重秤压成分子料理?(゚ロ゚ノ)ノ"},{"role": "user", "content": "游戏又输了"},{"role": "assistant", "content": "菜就多练练!需要给你推荐《从零开始的电竞之路》?[・ヘ・?]"}],"temperature": 0.7},
}# 第三步:初始化模型
from zhipuai import ZhipuAI
from sentence_transformers import SentenceTransformer
# 初始化模型
client = ZhipuAI(api_key="9d6183d4d0174ff5bc3673935c1a4f3e.q7E6bKrgmFEiAC56"
)
# 加载 embedding 模型
style_model = SentenceTransformer("./text2vec-base-chinese")# 第四步:生成数据并进行审核
import random
import numpy as np
from numpy.linalg import normdef is_valid_reply(style, user_msg, reply):# 基础判空检查if not reply or len(reply.strip()) == 0:return False# 回复长度检查if len(reply) < 5 or len(reply) > 150:return False# 风格关键词检查style_kewords = {"温柔": ["呢", "呀", "啦"],"毒舌": ["!", "好家伙", "栓Q"],}if not any(kw in reply for kw in style_kewords.get(style, [])):return False# 语义相似度检查try:ref_text = next(msg["content"] for msg in style_config[style]["examples"] if msg["role"] == "assistant")ref_vec = style_model.encode(ref_text)reply_vec = style_model.encode(reply)similarity = np.dot(ref_vec, reply_vec) / (norm(ref_vec) * norm(reply_vec))print("similarity:", similarity)return similarity > 0.40except:return Falsedef generate_style_data(style_name, num_samples=50):config = style_config[style_name]data = []# 构建消息上下文(包括系统提示和示例对话)messages = [{"role": "system", "content": config["system_prompt"]},*config["examples"]]# 用户输入库(可自定义扩展)user_inputs = ["今天心情不太好", "推荐个电影吧", "怎么才能早睡早起","养猫好还是养狗好", "工作压力好大", "最近总是失眠"]for _ in range(num_samples):try:# 随机选择用户输入user_msg = random.choice(user_inputs)# 添加当前用户消息current_msg = messages + [{"role": "user", "content": user_msg}]# 调用APIresponse = client.chat.completions.create(model="glm-4-flash-250414",messages=current_msg,temperature=config["temperature"],max_tokens=100)# 获取回复内容reply = response.choices[0].message.contentprint("reply:", reply)# 审核数据质量if is_valid_reply(style_name, user_msg, reply):data.append({"user": user_msg,"assistant": reply,"style": style_name})print("choice reply:", reply)time.sleep(1.5)except Exception as e:print("generate_style_data函数出错!", e)return data# 第五步:执行数据生成
all_data = []print("开始生成温柔风格数据")
data1 = generate_style_data("温柔", 50)
all_data.extend(data1)print("开始生成毒舌风格数据")
data2 = generate_style_data("毒舌", 50)
all_data.extend(data2)print(all_data)

http://www.xdnf.cn/news/3126.html

相关文章:

  • jmeter读取CSV文件中文乱码的解决方案
  • 单片机不同通信方式的适用场景
  • requestAnimationFrame与requestIdleCallback的深度解析:从执行时机到应用场景
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(12): ておき ます
  • mysql 配置文件中的[client]、[mysqld]、[mysqldump]和[mysql]区块的作用区别
  • 【Python学习路线】零基础到项目实战系统
  • 文件备份服务器,备份文件内容到服务器有哪些方法?
  • element-plus + splitpanes 实现左右拖动控制宽度
  • STM32F10X OLED屏幕点亮
  • 从Ping到iperf3:深度实战无线网络压测与优化指南
  • C语言之操作符
  • 基本算法之龟速乘
  • 最新DeepSeek-Prover-V2-671B模型 简介、下载、体验、微调、数据集:专为数学定理自动证明设计的超大垂直领域语言模型(在线体验地址)
  • 在原生代码(非webpack)里使用iview的注意事项
  • shell---expect
  • MySQL 中 redo log、undo log 以及 bin log 的区别
  • 北京亦庄机器人马拉松:人机共跑背后的技术突破与产业启示
  • 【Linux】记录一个有用PS1
  • 自创天炎十二戟算法设计,禁止抄袭
  • Elasticsearch:没有 “AG” 的 RAG?
  • 解决STM32待机模式无法下载程序问题的深度探讨
  • 论文阅读:2024 ACM SIGSAC Membership inference attacks against in-context learning
  • 《算法笔记》10.6小节——图算法专题->拓扑排序 问题 C: Legal or Not
  • Spring 转发 form-data 文件上传请求时中文文件名乱码
  • 【大模型面试每日一题】Day 4:低资源语言建模方案
  • vue3 打字机效果
  • 【CUDA pytorch】
  • DAPO:对GRPO的几点改进
  • 模式识别的基本概念与理论体系
  • 智能机器人在物流行业的应用:效率提升与未来展望