REILX/neo_sft_phase2_multi
收藏资源简介:
该数据集包含多轮对话,涉及人类和GPT模型之间的交互。通过将多轮对话拆分为单轮样本,每轮对话被视为一个独立的问题-回答对,并利用上下文信息构建样本。具体操作包括将人类对话内容拼接为完整的指令,将GPT对话内容拼接为最终输出,输入部分可以留空或加入适当的提示。
该数据集包含多轮对话,涉及人类和GPT模型之间的交互。通过将多轮对话拆分为单轮样本,每轮对话被视为一个独立的问题-回答对,并利用上下文信息构建样本。具体操作包括将人类对话内容拼接为完整的指令,将GPT对话内容拼接为最终输出,输入部分可以留空或加入适当的提示。
数据集概述
基本信息
- 许可证: Apache 2.0
- 任务类别: 文本生成
- 语言:
- 英语
- 中文
- 数据规模: 10K < n < 100K
数据处理
对话拆分
- 方法: 将多轮对话拆分为单轮对话样本。
- 具体操作:
- 遍历每个对话中的所有对话轮次。
- 将所有“human”轮次的“value”拼接成完整的“instruction”。
- 将所有“gpt”轮次的“value”拼接成最终的“output”。
- “input”可以留空,或添加适当的提示。
Python代码
-
功能: 处理原始数据集并生成SFT数据集。
-
代码: python import json
def convert_conversations_to_single_turn(conversations): instruction = "" output = "" for turn in conversations: if turn[from] == human: instruction += turn[value] + "
" else: output += turn[value] + "
" return { "instruction": instruction.strip(), "input": "", "output": output.strip() }
def save_to_jsonl(data, filename): with open(filename, w, encoding=utf-8) as f: for item in data: f.write(json.dumps(item, ensure_ascii=False) + )
if name == "main": with open("neo_sft_phase2.json", r, encoding=utf-8) as f: data = json.load(f)
single_turn_dataset = []
for conversation_set in data:
single_turn_dataset.append(convert_conversations_to_single_turn(conversation_set[conversations]))
save_to_jsonl(single_turn_dataset, "neo_sft_phase2_multi.jsonl")




