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

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

相关文章:

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

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

CFD 在生物反应器放大过程中的作用

工艺工程师最常想到的一个问题是“如何将台式反应器扩大到工业规模的反应器?”。这个问题的答案并不简单,也不容易得到。例如,人们误以为工业规模的反应器的性能与台式反应器相同。因此,扩大规模的过程并不是一件容易的事。必须对…...

Axios与FastAPI结合:构建并请求用户增删改查接口

在现代Web开发中,FastAPI以其高性能和简洁的代码结构成为了构建RESTful API的热门选择。而Axios则因其基于Promise的HTTP客户端特性,成为了前端与后端交互的理想工具。本文将介绍FastAPI和Axios的结合使用,通过一个用户增删改查(C…...

美畅物联丨如何通过ffmpeg排查视频问题

在我们日常使用畅联AIoT开放云平台的过程中,摄像机视频无法播放是较为常见的故障。尤其是当碰到摄像机视频不能正常播放的状况时,哪怕重启摄像机,也仍然无法使其恢复正常的工作状态,这着实让人感到头疼。这个时候,可以…...

基于OpenCV视觉库让机械手根据视觉判断物体有无和分类抓取的例程

项目实例,在一个无人封闭的隔绝场景中,根据视觉判断物件的有无,通过机械手 进行物件分类提取,并且返回状态结果; 实际的场景是有一个类似采血的固件支架盘,上面很多采血管,采血管帽颜色可能不同…...

QChart数据可视化

目录 一、QChart基本介绍 1.1 QChart基本概念与用途 1.2 主要类的介绍 1.2.1 QChartView类 1.2.2 QChart类 1.2.3QAbstractSeries类 1.2.4 QAbstractAxis类 1.2.5 QLegendMarker 二、与图表交互 1. 动态绘制数据 2. 深入数据 3. 缩放和滚动 4. 鼠标悬停 三、主题 …...

转换的艺术:如何在JavaScript中序列化Set为Array、Object及逆向操作

先认识一下Set 概念:存储唯一值的集合,元素只能是值,没有键与之对应。Set中的每个值都是唯一的。 特性: 值的集合,值可以是任何类型。 值的唯一性,每个值只能出现一次。 保持了插入顺序。 不支持通过索引来…...

万能门店小程序管理系统存在前台任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

详解Rust泛型用法

文章目录 基础语法泛型与结构体泛型约束泛型与生命周期泛型与枚举泛型和Vec静态泛型(const 泛型)类型别名默认类型参数Sized Trait与泛型常量函数与泛型泛型的性能 Rust是一种系统编程语言,它拥有强大的泛型支持,泛型是Rust中用于实现代码复用和类型安全…...

移远通信携手紫光展锐,以“5G+算力”共绘万物智联新蓝图

11月26日,2024紫光展锐全球合作伙伴大会在上海举办。作为紫光展锐重要的合作伙伴,移远通信应邀参会。 在下午的物联网生态论坛上,移远通信产品总监胡勇华作题为“5G与算力双擎驱动 引领智联新未来”的演讲,深度剖析了产业发展的趋…...

Mybatis:Mybatis快速入门

Mybatis的官方文档是真的非常好!非常好! 点一下我呗:Mybatis官方文档 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可…...

微信小程序用户登录页面制作教程

微信小程序用户登录页面制作教程 前言 在微信小程序的开发过程中,用户登录是一个至关重要的功能。通过用户登录,我们可以为用户提供个性化的体验,保护用户数据,并实现更复杂的业务逻辑。本文将为您详细讲解如何制作一个用户登录页面,包括设计思路、代码示例以及实现细节…...

python+django自动化平台(一键执行sql) 前端vue-element展示

一、开发环境搭建和配置 pip install mysql-connector-pythonpip install PyMySQL二、django模块目录 dbOperations ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-313.pyc │ ├── admin.cpython-313.pyc │ ├── apps.cpython-313.pyc │ …...

JavaScript学习总结

前言 JavaScript的学习花的时间比较长,如何进行正确的学习?今天进行总结与整理。 首先,明确JavaScript是什么?它的结构框架是什么,有哪些操作与组成部分。 其次,通过案例实践,清楚达到什么效果…...

Python 3 教程第22篇(数据结构)

Python3 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构。 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。 以下是 Python 中列表的方…...

AI时代的软件工程:迎接LLM-DevOps的新纪元

在科技日新月异的今天,GPT的问世无疑为各行各业带来了一场深刻的变革,而软件工程领域更是首当其冲,正式迈入了软件工程3.0的新纪元。2024年,作为软件工程3.0的元年,伴随着软件工程3.0宣言的震撼发布,一个全…...

linux安全管理-系统环境安全

1 历史命令设置 1、检查内容 检查操作系统的历史命令设置。 2、配置要求 建议操作系统的历史命令设置。 3、配置方法 编辑/etc/profile 文件,配置保留历史命令的条数 HISTSIZE 和保留历史命令的记录文件大小 HISTFILESIZE,这两个都设置为 5。 配置方法如…...

MindAgent部署(进行中.....)

第一步:pip install -r requirements.txt 问题:如下:就是我的服务器,无法访问github Preparing metadata (setup.py) ... errorerror: subprocess-exited-with-error python setup.py egg_info did not run successfully.│ exi…...

【JavaEE初阶 — 网络编程】TCP流套接字编程

TCP流套接字编程 1. TCP & UDP 的区别 TCP 的核心特点是面向字节流,读写数据的基本单位是字节 byte 2 API介绍 2.1 ServerSocket 定义 ServerSocket 是创建 TCP 服务端 Socket 的API。 构造方法 方法签名 方法说明 ServerS…...

《气候变化研究进展》

《气候变化研究进展》设有气候系统变化、气候变化影响、气候变化适应、温室气体排放、对策论坛、简讯等栏目,其内容包括:国内外气候变化研究的最新成果与进展,以及与气候变化有关的交叉学科,如地球科学、生态与环境科学、人文与社…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...