掘金 人工智能 21小时前
【心理咨询师数字孪生对话数据集】标准化为 ShareGPT OpenAI 格式
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文档介绍了如何使用一个Python脚本,将PsyDTCorpus数据集转换为标准的ShareGPT OpenAI格式。该工具能够读取JSON格式的原始数据集,删除指定的字段(如'id', 'sample_id', 'normalizedTag'),并将剩余的对话数据按照ShareGPT的规定格式进行组织,即一个包含'conversations'键的列表,'conversations'内是按轮次划分的'role'(用户/助手)和'content'(对话内容)。脚本支持处理JSON列表或单个JSON对象形式的输入,并输出为包含对话轮次的JSON列表。文档还提供了详细的使用方法、文件说明和注意事项,旨在帮助用户便捷地完成数据集的格式转换,以便于在AI模型训练中使用。

🎯 **数据格式转换核心功能**:该工具的核心在于将PsyDTCorpus数据集标准化为ShareGPT OpenAI格式。它能够读取JSON格式的原始数据,包括用户输入('prompt')和助手回应('response'),并将其转换为ShareGPT要求的以'conversations'列表嵌套'role'和'content'的结构,便于AI模型处理。

🧹 **字段清理与优化**:在转换过程中,工具会自动删除以'id'、'sample_id'和'normalizedTag'开头的字段,有效清理了数据中的冗余信息,使数据集更加简洁,专注于对话内容本身,提高了数据处理的效率和有效性。

⚙️ **输入输出灵活性**:该工具支持处理两种常见的JSON输入格式:JSON列表(包含多个对话对象)和单个JSON对象(包含一组对话数据)。无论哪种格式,都能被有效地读取和处理,并统一输出为标准的ShareGPT OpenAI格式的JSON列表,确保了数据处理的广泛适用性。

⚠️ **使用注意事项与指导**:文档明确指出,脚本假设原始数据中存在'prompt'和'response'字段,并提醒用户若数据结构不同,可能需要修改脚本中的字段映射。同时,鼓励用户关注控制台输出的错误信息,以便及时发现和解决问题,确保数据转换的顺利进行。

【心理咨询师数字孪生对话数据集】标准化为 ShareGPT OpenAI 格式

该工具用于将 PsyDTCorpus 数据集转换为标准的 ShareGPT OpenAI 数据格式,并删除指定的字段。

1.功能

    读取 PsyDTCorpus 数据集文件

    删除以 "id"、"sample_id" 和 "normalizedTag" 开头的字段

    将数据转换为 ShareGPT OpenAI 格式

    将处理后的结果保存为新文件

2.数据格式说明

2.1 输入格式

原始数据集应为 JSON 格式,可以是以下两种形式之一:

    JSON 列表,其中每个元素是一个包含对话数据的对象

    单个 JSON 对象,包含一组对话数据

假设原始数据中包含 'prompt' 和 'response' 字段,分别表示用户输入和助手回应。

2.2 输出格式 (ShareGPT OpenAI 格式)

转换后的格式为 JSON 列表,其中每个元素是一个包含 'conversations' 键的对象。'conversations' 是一个列表,包含对话轮次,每个轮次有 'role' 和 'content' 两个字段:

示例输出:

[{"conversations": [{"role": "user","content": "你好,请问什么是人工智能?"},{"role": "assistant","content": "人工智能是计算机科学的一个分支,旨在创建能够执行通常需要人类智能的任务的系统..."}]},...]

3.使用方法

    确保已安装 Python 3

    运行转换脚本:

import json  # 定义函数:删除指定字段并转换为 ShareGPT OpenAI 格式def remove_lines(input_file, output_file):    # 定义需要删除的字段前缀列表    keys_to_remove = ['id', 'sample_id', 'normalizedTag']    try:    # 打开输入文件并加载 JSON 数据    with open(input_file, 'r', encoding='utf-8') as f:    data = json.load(f)    # 存储转换后的 ShareGPT 格式数据    sharegpt_data = []    # 检查数据类型是否为列表    if isinstance(data, list):    # 遍历列表中的每个项目    for item in data:    # 首先删除不需要的字段    for key in list(item.keys()):    if any(key.startswith(prefix) for prefix in keys_to_remove):    del item[key]    # 转换为 ShareGPT 格式    # 假设原数据中有 'prompt' 和 'response' 字段    conversation = []    if 'prompt' in item:    conversation.append({    'role': 'user',    'content': item['prompt']    })    if 'response' in item:    conversation.append({    'role': 'assistant',    'content': item['response']    })    # 如果构建了有效的对话,则添加到结果列表    if conversation:    sharegpt_data.append({    'conversations': conversation    })    elif isinstance(data, dict):    # 如果数据是字典类型    # 删除不需要的字段    for key in list(data.keys()):    if any(key.startswith(prefix) for prefix in keys_to_remove):    del data[key]    # 转换单个对话    conversation = []    if 'prompt' in data:    conversation.append({    'role': 'user',    'content': data['prompt']    })    if 'response' in data:    conversation.append({    'role': 'assistant',    'content': data['response']    })    if conversation:    sharegpt_data.append({    'conversations': conversation    })    # 将转换后的数据保存到输出文件    with open(output_file, 'w', encoding='utf-8') as f:    json.dump(sharegpt_data, f, indent=4, ensure_ascii=False)    print(f'处理完成,结果已保存到 {output_file}')    except Exception as e:    print(f'处理文件时出错: {e}')# 如果直接运行该脚本,则执行以下代码if __name__ == '__main__':        # 定义输入文件路径    input_file = '/Users/livingbody/workspace/PsyDTCorpus/PsyDTCorpus_train_mulit_turn_packing.json'    # 定义输出文件路径    output_file = '/Users/livingbody/workspace/PsyDTCorpus/train.json'    # 调用函数处理文件    remove_lines(input_file, output_file)

4.文件说明

5.注意事项

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

数据集转换 ShareGPT OpenAI格式 PsyDTCorpus Python脚本
相关文章