实操!自有文档做RAG+微调数据集!把word/excel/ppt等做成数据集!数据处理系列
当下内容,还未达到100分!这,涉及到OCR模型训练,更深度的,数据处理策略!雄哥会持续把真正有价值的内容,给你!还未加入?你可以在这里点击申请加入,或者在末尾联系-工程师小胖!报获取优惠券或者加入交流群!现在我们付费会员500+,活跃社群3000人+,欢迎你加入!这个数据系列,原计划更3篇!还未看前面的,直接在这里看!**方案一:**把word/ppt/pdf等不同格式,统一转为html或md,
当下内容,还未达到100分!这,涉及到OCR模型训练,更深度的,数据处理策略!
雄哥会持续把真正有价值的内容,给你!
还未加入?你可以在这里点击申请加入,或者在末尾联系-工程师小胖!
报 “老粉” 获取优惠券或者加入交流群!现在我们付费会员500+,活跃社群3000人+,欢迎你加入!
这个数据系列,原计划更3篇!还未看前面的,直接在这里看!
**方案一:
**
[文本/图片/表格分别提取处理(点击学习)]
把word/ppt/pdf等不同格式,统一转为html或md,然后用把文本+图片+表格分别提取出来,最后把图片+表格单独处理成文本;
**方案二:
**
[统一为图片,统一提取!(点击学习)]
把所有的文档,全部转为图像,用ocr统一提取!懒人方法把图表与原文本连接在一起,确保文本相关!
**方案三:
**
所有文档一次性转文本(本篇)
不管是word/ppt/excel/pdf/jpg等,一个脚本,智能化提取文本!并做成数据集!一次处理,分类清晰,高效快捷;
雄哥下载了微软官方的财报,这个财报包括了word/excel/ppt等,直接产生的办公数据!
这也是你公司最多的数据吧?
打开看看!
处理文档,最大的问题是,无法批量处理,数据格式不同,处理策略就不同!
word文本==》直接提取
excel==》提取成csv
ppt/图像==》ocr提取成文本
不分开提取的话,有没有办法智能化处理?让他自动档!?
实现:
#A 分类-把文本/表格/图像分门别类
#B 分别处理-智能化用到对口的工具处理成文本
#C 合并到JSON-同一个文件的数据,合并到一个json中
#D 制作成数据集,用于RAG或微调
最终呈现:
{“sample_number”: 1246, “file_source”: “MSFT_FY24Q4_10K.docx”, “text”: "estimates determined by management. If the cost of an investment exceeds its fair value, we evaluate, among other factors, general market conditions, credit quality of debt instrument issuers, and the extent to which the fair value is less than cost. To determine credit losses, we employ a systematic methodology that considers available quantitative and qualitative evidence. In addition, we consider "}
-
sample_number
: 样本的唯一编号 -
file_source
: 文本样本来源的文件名 -
text
: 实际的文本内容
有这样的数据,你的RAG,还愁召回率低吗?
但是!拿到这个数据,不简单!
需要把所有文件(不管是文本/图片/表格),都汇总到一个jsonl文件中!
才能呈现!像这样!拥有所有唯一及相关联的文本信息!
{“block_ID”: 0, “doc_ID”: 1, “content_type”: “text”, “file_type”: “docx”, “master_index”: 2, “master_index2”: 0, “coords_x”: 0, “coords_y”: 0, “coords_cx”: 0, “coords_cy”: 0, “author_or_speaker”: “”, “modified_date”: “2024-07-29T23:12:00Z”, “created_date”: “2024-07-29T23:12:00Z”, “creator_tool”: “”, “added_to_collection”: “Sun Aug 4 00:05:17 2024”, “file_source”: “PressReleaseFY24Q4.docx”, “external_files”: “”, “header_text”: "Microsoft Cloud Strength Drives Fourth Quarter Results REDMOND, Wash. \u2014 July 30 , 20 2 4 \u2014 ", “text_search”: "Microsoft Cloud Strength Drives Fourth Quarter Results REDMOND, Wash. \u2014 July 30, 2024 \u2014 Microsoft Corp. today announced the following results for the quarter ended June 30, 2024, as compared to the corresponding period of last fiscal year: Revenue was $64.7 billion and increased 15% (up 16% in constant currency) Operating income was $27.9 billion and increased 15% (up 16% in constant currency) ", “user_tags”: “”, “special_field1”: “”, “special_field2”: “”, “special_field3”: “cmyk_flag”, “graph_status”: “false”, “dialog”: “false”, “embedding_flags”: null}
格式说明:
-
block_ID
: 文本块的唯一标识符 -
doc_ID
: 文档的唯一标识符 -
content_type
: 内容的类型,这里是"text" -
file_type
: 文档的文件类型,这里是"docx" -
master_index
: 主索引,是用于跟踪文本块在文档中的位置 -
master_index2
: 第二个主索引,也是用于跟踪文本块的位置 -
coords_x
,coords_y
,coords_cx
,coords_cy
: 坐标信息,表示文本块在文档中的位置或大小 -
author_or_speaker
: 文档的作者或发言者 -
modified_date
: 文档最后一次修改的日期 -
created_date
: 文档创建的日期 -
creator_tool
: 创建文档的工具 -
added_to_collection
: 文档被添加到集合的时间 -
file_source
: 文档的源文件名 -
external_files
: 与文本块相关的外部文件 -
header_text
: 文档的头部文本 -
text_search
: 文档中的文本内容,可能用于搜索 -
user_tags
: 用户定义的标签 -
special_field1
,special_field2
,special_field3
: 特殊字段,可能用于存储特定的元数据或标记 -
graph_status
: 是否包含图表的状态 -
dialog
: 是否是对话框文本 -
embedding_flags
: 嵌入标记,可能用于指示文本块的处理方式
数据都清晰了,就靠你的RAG策略了!
整个结果是如何实现的呢?跟着雄哥,一步步跑出来!
开始前,先回星球,下载雄哥准备的代码和示例吧!
人的专注力只有10分钟!ok!话不多说!
第一部分:环境准备和搭建!
第二部分:跑起来!
第三部分:关键代码详解!
第一部分:环境准备和搭建
这里,雄哥是在linux系统搭建的,环境如下:
操作系统:linux/wsl
python版本:3.10
运行环境:conda
搭建好环境,我们直接开干!
如果你还未搭建好环境,马上回去找雄哥搭建环境篇!
创建conda环境!
conda create -n yiyiai python=3.10
激活环境!
conda activate yiyiai
进入刚刚下载依赖的目录!
cd **
安装依赖!
pip install -r requirements.txt
雄哥已经把依赖都打包好了,喂饭到嘴,直接下载安装就行!
至此,环境全部完成!
第二部分:跑起来!
很简单啦!直接一个指令跑起来!
python slicing_and_dicing_office_docs.py
稍后再讲详细代码!
第三部分:关键代码详解
整个代码,干了核心的几件事!
#A 分 类
把文本/表格/图像分门别类
在处理文档时,首先需要将不同类型的内容(如文本、表格、图像)进行分类。这涉及到识别文档中的不同元素,并将它们分到各自的类别中。
#B 分别处理
智能化用到对口的工具处理成文本
一旦内容被分类,就需要使用相应的工具和方法来处理它们:
-
文本内容:直接提取和使用。
-
表格内容:专门的表格解析工具来提取数据。
-
图像内容:使用OCR技术来从图像中提取文本。
这个过程涉及到将非文本内容(如表格和图像)转换为文本格式,以便进一步分析。
#C 合并到JSON
同一个文件的数据,合并到一个json中
处理后的文本内容会被合并到一个结构化的数据格式中,比如JSON。每个文档或文档的部分会被转换成一个JSON对象,其中包含了各种元数据和提取的文本。
#D 制作成数据集
用于RAG或微调
最后,这些JSON对象会被组合成一个或多个数据集,这些数据集可以用于各种下游任务!
好!现在来详细聊聊,如何实现!
先定义智能化处理的机制,这里雄哥写了一个机制,按标准处理文本,如果遇到表格,设置为True,则转入表格处理流程!遇到图片,则转入图片处理流程:
文本类型:按400-600个tokens智能化分块!
get_tables=True, get_images=True
`# 解析解压后的文件,添加智能化分块,捕捉标点符号或回车` `parsing_output = my_lib.add_files(temp_dir, chunk_size=400, max_chunk_size=600, smart_chunking=1,` `get_tables=True, get_images=True)`
这里遇到的表格,提取为csv!然后保存到output_path!
`# 导出所有表格数据到CSV` `q = Query(lib)` `extracted_tables = q.export_all_tables(output_fp=lib.output_path)` `print("extracted tables summary: ", extracted_tables)`
-
q = Query(lib)
: 这一行代码创建了一个Query
类的实例,并将lib
作为参数传递给Query
类的构造函数。lib
是一个包含了数据源或者配置信息的对象,Query
类将使用这些信息来执行查询操作。 -
extracted_tables = q.export_all_tables(output_fp=lib.output_path)
: 这一行代码调用了q
对象的export_all_tables
方法。这个方法可能用于从lib
中提取所有的表格数据,并将这些数据导出到由output_fp
参数指定的文件路径。output_fp
是一个文件路径,它通过lib.output_path
获取,这表明lib
对象具有一个属性output_path
,该属性定义输出文件位置。
遇到图片,则使用OCR进行处理!
# 运行OCR` `lib.run_ocr_on_images(add_to_library=True, chunk_size=400, min_size=10, realtime_progress=True)` `print("done with ocr processing")
这段代码调用了名为 lib
的对象的一个方法 run_ocr_on_images
,并在方法执行完毕后打印一条消息。以下是代码逐行介绍:
-
run_ocr_on_images
: 这是一个方法调用,其目的是在图像上运行光学字符识别(OCR)处理。 -
add_to_library=True
: 这个参数表明处理后的OCR结果应该被添加到某个库或集合中。具体来说,True
表示结果会被存储起来,为了后续的进一步处理。 -
chunk_size=400
: 这个参数可能指定了在OCR处理过程中,一次处理的图像数量或者数据的大小。在这里,chunk_size
设置为400,意味着OCR处理会以400个图像或数据块为单位进行。 -
min_size=10
: 这个参数可能指定了图像的最小尺寸,低于这个尺寸的图像不会被处理。如图像的尺寸小于10(单位是像素),则忽略。 -
realtime_progress=True
: 这个参数表示在OCR处理过程中,会实时输出进度信息。设置为True
,则用户可以实时看到处理的状态或进度。
导出为json!
所有的文本信息,都会被保存下来!
`# 导出到JSONL文件` `output = lib.export_library_to_jsonl_file(lib.output_path, "microsoft_ir_lib")`
然后,创建一个数据集!
`# 创建数据集` `ds = Datasets(library=lib, testing_split=0.10, validation_split=0.10, ds_id_mode="random_number")` `ds_output = ds.build_text_ds(min_tokens=100, max_tokens=500)` `print("done with dataset")`
以下是代码的逐行介绍:
ds = Datasets(library=lib, testing_split=0.10, validation_split=0.10, ds_id_mode="random_number")
:
-
Datasets
: 这是一个类名,用于创建数据集的实例。 -
library=lib
: 参数将lib
对象传递给Datasets
类,lib
是一个包含数据源、配置的库。 -
testing_split=0.10
: 这个参数指定数据集中用于测试的比例。在这个例子中,10% 的数据将被用作测试集。 -
validation_split=0.10
: 这个参数指定了数据集中用于验证的比例。同样地,10% 的数据将被用作验证集。 -
ds_id_mode="random_number"
: 这个参数可能用于指定如何生成数据集中的样本ID。在这里,它设置为"random_number"
,ID是基于随机数生成的。
ds_output = ds.build_text_ds(min_tokens=100, max_tokens=500)
:
-
build_text_ds
: 这是ds
对象的一个方法,用于构建文本数据集。 -
min_tokens=100
: 这个参数指定了数据集中每个文本样本的最小令牌(token)数量。如果一个文本样本的令牌数量少于100,不会被包含在数据集中。 -
max_tokens=500
: 这个参数指定了数据集中每个文本样本的最大令牌数量。如果一个文本样本的令牌数量超过500,会被截断或排除。
ok!最终呈现如上!
期待各位,换上自己的实际数据,打卡!
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)