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

将大模型指令微调数据从parquet转为json格式

将大模型指令微调数据从parquet转为json格式

import os
import json
import random
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq

def read_json_file(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            data = json.load(file)
            return data
    except FileNotFoundError:
        print(f"File {file_path} not found.")
    except json.JSONDecodeError:
        print(f"File {file_path} is not a valid JSON file.")
    except Exception as e:
        print(f"An error occurred: {e}")

def read_jsonl_file(file_path):
    data = []
    with open(file_path, 'r', encoding='utf-8') as file:
        for line in file:
            try:
                data.append(json.loads(line))
            except:
                print(line)
                1/0
    return data

def read_praquet_file(file_path):
    table = pq.read_table(file_path)
    df = table.to_pandas()
    result=[row.tolist() for _, row in df.iterrows()]
    return result

def save_json(file_path,data):
    with open(file_path, 'w', encoding='utf-8') as file:
        json.dump(data, file, indent=4, ensure_ascii=False)
    print(f'Save {file_path} is ok!')

def save_jsonl(file_path,data):
    try:
        with open(file_path, 'w', encoding='utf-8') as file:
            for item in data:
                file.write(json.dumps(item, ensure_ascii=False) + '\n')
        print(f"Data saved to {file_path}")
    except Exception as e:
        print(f"An error occurred while saving the data: {e}")

def save_parquet(file_path, data):

    if isinstance(data, list):
        data = pd.DataFrame(data)
    if not isinstance(data, pd.DataFrame):
        raise ValueError("data must be a pandas DataFrame or a list of lists")
    pq.write_table(pa.Table.from_pandas(data), file_path)
    print(f'Save {file_path} is ok!')

def convert_lists_to_json(df):
    """Convert lists in DataFrame to JSON strings."""
    for column in df.columns:
        if df[column].apply(lambda x: isinstance(x, list)).any():
            df[column] = df[column].apply(lambda x: json.dumps(x) if isinstance(x, list) else x)
    return df

root='/path/to/parquet/dir'
save_path='/path/to/savedir/save_name.json'
new_data=[]
dirs=os.listdir(root)
for one in dirs:
    if one.endswith('.parquet'):
        print(one)
        file_path=root+'/'+one
        data=read_praquet_file(file_path)
        for x in data:
            inp=x[3]
            res=x[4]
            new_entry={
                "conversations": [
                    {
                        "role": "user",
                        "content": inp
                    },
                    {
                        "role": "assistant",
                        "content": res
                    }
                ]
            }
            if len(inp)>0 and len(res)>0:
                new_data+=[new_entry]
                
save_json(save_path,new_data)

http://www.kler.cn/a/417050.html

相关文章:

  • JAVA学习-练习试用Java实现“使用while循环计算并输出1到100之间所有偶数的和”
  • Web开发基础学习——通过React示例学习模态对话框
  • C#里怎么样List类进行拷贝?
  • 编译以前项目更改在x64下面时报错:函数“PVOID GetCurrentFiber(void)”已有主体
  • 自定义类型: 结构体、枚举 、联合
  • 基础汉诺塔
  • 大数据新视界 -- Hive 与其他大数据工具的集成:协同作战的优势(上)(13/ 30)
  • Flink随笔 20241129 流数据处理:以生产线烤鸡为例理解 Flink
  • Socket编程(TCP/UDP详解)
  • Windows 平台使用 podofo.dll 异常,需要安装一下库:Win64OpenSSL_Light-3_3_2.msi
  • 配置泛微e9后端开发环境
  • 学习C#中的反射
  • 【Yarn Bug】 yarn 安装依赖出现的网络连接问题
  • Java抛出自定义运行运行
  • 后端-mybatis的一对一查询
  • 准确--在 AlmaLinux 9.2 上快速搭建 FTP 服务器
  • AI潮汐日报1128期:马斯克计划推出Grok挑战GPT宝座、实时数字孪生心脏模拟、大模型竟也会产生焦虑和偏见
  • SpringBoot 架构的新冠密接者跟踪系统:安全防护体系深度解读
  • 学习ASP.NET Core的身份认证(基于Session的身份认证3)
  • Next.js 中 API 路由与 Actions 的使用选择与比较
  • linux centos nginx编译安装
  • 【人工智能-科普】深度森林:传统机器学习与深度学习的创新结合
  • 云原生自动化测试之命令行工具自动化测试设计思路分享
  • 【开源免费】基于Vue和SpringBoot的新闻推荐系统(附论文)
  • 深度学习:GPT-2的MindSpore实践
  • 【干货分享】Boosting算法简单案例