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

大语言模型LLM的微调中 QA 转换的小工具 xlsx2json.py

在训练语言模型中,需要将文件整理成规范的文档,因为文档本身会有很多不规范的地方,为了训练的正确,将文档进行规范处理。代码的功能是读取一个 Excel 文件,将其数据转换为 JSON 格式,并将 JSON 数据写入到一个文本文件中,实现了从 Excel 数据到 JSON 数据的转换,方便在其他系统或应用中使用或传输数据。

最终要在模型里使用的还是json 格式,以input / output字典格式的输出为例 

   {
        "input": xxx,
        "output": xxx
    },
 

逐条解释代码如下:

1. 导入必要的库

import pandas as pd
import os
import json

  • import pandas as pd:导入pandas库,并使用别名pdpandas是一个用于数据处理和分析的强大库,提供了数据结构(如DataFrame)和数据操作方法,方便处理表格型数据,如 Excel 文件中的数据。
  • import os:导入os模块,用于处理文件路径相关的操作,如获取当前文件所在目录、拼接文件路径等。
  • import json:导入json模块,用于处理 JSON 数据,包括将 Python 对象转换为 JSON 格式以及将 JSON 数据解析为 Python 对象。

2. 设置工作目录并指定数据集文件路径

work_dir = os.path.dirname(os.path.abspath(__file__))
tmp_data_file = os.path.join(work_dir, "output.xlsx")

  • work_dir = os.path.dirname(os.path.abspath(__file__)):获取当前 Python 脚本文件所在的目录路径,并将其赋值给work_dir变量。os.path.dirname获取指定路径的目录部分,os.path.abspath获取绝对路径,__file__是 Python 内置变量,表示当前脚本文件的路径。
  • tmp_data_file = os.path.join(work_dir, "output.xlsx"):通过os.path.join将工作目录和文件名output.xlsx拼接成完整的 Excel 文件路径,这里假设output.xlsx在与脚本相同的目录下。如果实际情况不同,需要根据实际情况修改路径。

3. 读取 Excel 文件

df = pd.read_excel(tmp_data_file)

使用pandasread_excel函数读取指定路径(tmp_data_file)的 Excel 文件,并将其数据加载到一个DataFrame对象中。DataFramepandas库中用于处理二维表格数据的主要数据结构,类似于 Excel 中的工作表,可以方便地进行数据选择、过滤、分析等操作。

4. 将 DataFrame 转换为字典列表

data_list = df.to_dict('records')

调用DataFrame对象的to_dict方法,将DataFrame中的每一行数据转换为一个字典,然后将这些字典组成一个列表。参数'records'表示每行数据作为一个字典,字典的键是列名,值是对应列的值。这样得到的data_list是一个包含多个字典的列表,每个字典代表 Excel 文件中的一行数据。

5. 将字典列表转换为 JSON 字符串

json_data = json.dumps(data_list, ensure_ascii=False, indent=4)

使用json模块的dumps函数将data_list(字典列表)转换为 JSON 格式的字符串。ensure_ascii=False参数确保非 ASCII 字符(如中文)能够正确显示,而不是以转义字符的形式出现。indent=4参数使生成的 JSON 字符串具有缩进,格式更易读,方便查看和调试。

6. 将 JSON 数据写入文件

with open(os.path.join(work_dir, 'json_output.txt'), 'w') as f:
    f.write(json_data)

使用with open语句以写入模式('w')打开指定路径(os.path.join(work_dir, 'json_output.txt'))的文件。在with语句块内,将 JSON 字符串(json_data)写入到文件中。with语句会自动管理文件的打开和关闭,确保在操作完成后正确关闭文件,避免资源泄漏。

excel to json

import pandas as pd
import os
import json

# 设置工作目录
work_dir = os.path.dirname(os.path.abspath(__file__))
# 处理的数据集
tmp_data_file = os.path.join(work_dir, "output.xlsx")

# 读取Excel文件
df = pd.read_excel(tmp_data_file)

# 将DataFrame转换为字典列表
data_list = df.to_dict('records')

# 使用json.dumps函数将字典列表转换为JSON字符串,设置ensure_ascii=False
json_data = json.dumps(data_list, ensure_ascii=False, indent=4)

# 将JSON数据写入文件
with open(os.path.join(work_dir, 'json_output.txt'), 'w') as f:
    f.write(json_data)

 

 以下是使用pandas库将 JSON 数据转换为 Excel 文件的代码示例:

import pandas as pd
import json
import os

# 设置工作目录
work_dir = os.path.dirname(os.path.abspath(__file__))

# JSON文件路径
json_file_path = os.path.join(work_dir, 'json_data.json')

# 读取JSON文件
with open(json_file_path, 'r') as f:
    json_data = json.load(f)

# 将JSON数据转换为DataFrame
df = pd.DataFrame(json_data)

# Excel文件输出路径
excel_file_path = os.path.join(work_dir, 'output.xlsx')

# 将DataFrame写入Excel文件
df.to_excel(excel_file_path, index=False)
  1. 首先设置工作目录,获取当前脚本所在的目录路径。
  2. 然后指定 JSON 文件的路径,通过open函数以只读模式打开 JSON 文件,并使用json.load函数将 JSON 数据加载为 Python 对象(通常是字典或列表)。
  3. 接着使用pandasDataFrame构造函数将 JSON 数据转换为DataFrame,这是pandas中用于处理二维表格数据的主要数据结构。
  4. 再指定输出 Excel 文件的路径。
  5. 最后使用DataFrameto_excel方法将数据写入 Excel 文件,index=False参数表示不将行索引写入 Excel 文件。

 

sample json_output.txt

[
    {
        "input": "目前什么事项会有系统邮件或者企信消息通知?",
        "output": "[此处未明确提及具体通知事项,需查看文档中的图片,假设图片显示包含合同审批通知、付款通知等]合同审批进度、付款状态等事项会有系统邮件或企信消息通知(具体需根据文档中图片所示内容确定)。"
    },
    {
        "input": "元年商旅订票时身份信息有误,如何修改?",
        "output": "行程选择界面,点击出行人“>”按钮编辑证件信息,外籍注意检查护照信息,避免证件信息有误影响乘机。"
    },
    {
        "input": "差旅费哪些发票需要员工线下打印?",
        "output": "机票中的电子客运行程单、酒店住宿专票、火车票,线上订票月结统付统一打印发票;使用护照等非身份证订票的火车票、火车退改签票据,须员工线下打印后交回;滴滴用车、餐费、洗衣费等,须员工垫付后开票。"
    },
    {
        "input": "差旅酒店住宿不通过线上预订,如何在差旅事前申请中预估费用?",
        "output": "按标准添加行程规划,如选择目的地、入住离店日期、房间数、住宿标准等,系统会自动计算预估费用上限。"
    },
    {
        "input": "跨店同事是否可以合住?",
        "output": "为节约费用,可以合住,请线下预定酒店,报销时事由特殊报备。另外,同店员工也是可以合住的,请通过元年预定酒店即可。"
    },
    {
        "input": "老系统已审批完成的差旅事前申请在哪提报销?",
        "output": "商旅模块—行程方案—迁移前差旅费报销单。"
    },
    {
        "input": "迁移前差旅费报销单据,如何添加未在事前申请中预估的费用?",
        "output": "在预算归属中点击操作下的“⊕”按钮,新增行项目添加费用。老系统事前申请的所有行项目、未在事前申请中预估报销新增的行项目均在同一费用明细行里添加。"
    },


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

相关文章:

  • C++实现网格交易的例子
  • gitlab自动打包python项目
  • 渣土车治理新方案:智能化引领安全与环保新时代
  • Vue3+node.js实现登录
  • macOS 桌面悬浮窗口
  • IntelliJ IDEA安装内网穿透实现远程连接家里或公司的MySQL数据库助力开发
  • C++语法·叭
  • 气膜建筑:打造全天候安全作业空间,提升工程建设效率—轻空间
  • BERT的中文问答系统46网页页面
  • Spring Boot教程之九:创建基本应用程序及Hello Word示例
  • MIG IP核详解(二)
  • 【菜笔cf刷题日常-1400】C. Johnny and Another Rating Drop(位运算,数学)
  • 【Git】Git 完全指南:从入门到精通
  • 记录QT5迁移到QT6.8上的一些问题
  • vscode配置
  • 淘宝商品信息获取:Python爬虫技术的实际应用
  • Spring Boot的理解
  • 适用于学校、医院等低压用电场所的智能安全配电装置
  • MacOS SourceTree Git的使用
  • Wordcloud也能生成一个,带html的词云图文件吗??
  • python: generator model using mysql9.0 or postgreSQL 17.0
  • 基于SpringBoot的“财务管理系统”的设计与实现(源码+数据库+文档+PPT)
  • Java基础面试题07:finalize() 方法什么时候被调用?析构函数(finalization)的目的是什么?
  • 【unity】WebSocket 与 EventSource 的区别
  • 状态模式S
  • 0.查找命令