大语言模型LLM的微调中 Q&A 转换的小工具 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

python 复制代码
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": "在预算归属中点击操作下的"⊕"按钮,新增行项目添加费用。老系统事前申请的所有行项目、未在事前申请中预估报销新增的行项目均在同一费用明细行里添加。" },

相关推荐
奔跑吧邓邓子几秒前
DeepSeek 赋能智能教育知识图谱:从构建到应用的革命性突破
人工智能·知识图谱·应用·deepseek·智能教育
Mantanmu3 分钟前
Python训练day40
人工智能·python·机器学习
ss.li9 分钟前
TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
javascript·人工智能·python
小天才才19 分钟前
前沿论文汇总(机器学习/深度学习/大模型/搜广推/自然语言处理)
人工智能·深度学习·机器学习·自然语言处理
l木本I23 分钟前
大模型低秩微调技术 LoRA 深度解析与实践
python·深度学习·自然语言处理·lstm·transformer
新加坡内哥谈技术1 小时前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
西猫雷婶1 小时前
pytorch基本运算-导数和f-string
人工智能·pytorch·python
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
顽强卖力1 小时前
第二十八课:深度学习及pytorch简介
人工智能·pytorch·深度学习
述雾学java1 小时前
深入理解 transforms.Normalize():PyTorch 图像预处理中的关键一步
人工智能·pytorch·python