RAG,基于字号频率的内容切分算法,非常强
一、依赖库总览按功能分类先列全代码中用到的所有库方便你整体梳理功能模块依赖库核心作用文档解析pdfplumber精准解析PDF提取文本块字号粗体位置python-docx (docx)解析Word(.docx)提取段落字号粗体基础数据处理os处理文件路径、识别文件后缀numpy数值计算如字号均值、数组处理pandas结构化数据存储、清洗、分析核心载体聚类/特征处理scikit-learn (sklearn)字号频率聚类KMeans 特征归一化Embedding/语义sentence-transformers生成文本Embedding用于语义切分RAG语义切分langchain提供SemanticChunker按语义切分文本二、逐个库详细讲解1. 文档解析模块1pdfplumber核心作用PDF解析的“瑞士军刀”比PyPDF2、PyMuPDF更精准提取PDF的「布局信息」文本块坐标、字号、字体、粗体是PDF标题识别的核心依赖。代码中的应用对应函数parse_pdf_document核心功能pdfplumber.open()打开PDF文件page.extract_text_blocks()提取带坐标的文本块x0/y0/x1/y1确定位置page.chars遍历每个字符提取字号char[size]和粗体char[fontname]。关键用法示例代码片段importpdfplumberwithpdfplumber.open(test.pdf)aspdf:pagepdf.pages[0]# 获取第1页索引从0开始# 提取文本块带坐标blockspage.extract_text_blocks()# 返回[(x0,y0,x1,y1,text), ...]# 提取字符级字体信息forcharinpage.chars:print(f字符{char[text]}字号{char[size]}字体{char[fontname]})安装方式pip install pdfplumber无兼容问题Python3.7均可。2python-docx代码中导入为docx核心作用专门解析Word文档.docx格式不支持.doc提取段落、字号、粗体等格式信息。代码中的应用对应函数parse_word_document核心功能Document()打开Word文档doc.paragraphs遍历所有段落para.runs遍历段落内的“运行块”Word的格式最小单位提取字号run.font.size.pt和粗体run.bold。关键用法示例代码片段fromdocximportDocument docDocument(test.docx)forparaindoc.paragraphs:textpara.text.strip()ifnottext:continue# 提取段落的字号和粗体forruninpara.runs:font_sizerun.font.size.ptifrun.font.sizeelse12is_boldrun.boldorFalseprint(f文本{text}字号{font_size}粗体{is_bold})安装方式pip install python-docx注意库名是python-docx但代码中导入用import docx。2. 基础数据处理模块1os核心作用Python内置库无需额外安装处理文件路径、识别文件后缀实现“自动区分PDF/Word”。代码中的应用对应函数auto_parse_document核心APIos.path.splitext(file_path)拆分文件路径和后缀如test.pdf→(test, .pdf)file_ext.lower()统一后缀为小写避免.PDF/.Pdf识别错误。关键用法示例importos file_pathyour_document.PDFfile_extos.path.splitext(file_path)[-1].lower()# 输出.pdfiffile_ext.pdf:print(是PDF文件)eliffile_ext.docx:print(是Word文件)2numpy核心作用Python数值计算基础库处理数组、均值/极值计算弥补Python原生列表的数值操作短板。代码中的应用np.mean(char_fonts)计算文本块内所有字符的字号均值避免单个字符字号误差np.round(1)字号保留1位小数统一格式range(len(df))→ 结合numpy生成有序索引。关键用法示例importnumpyasnp font_sizes[12.0,12.2,11.8]mean_sizenp.mean(font_sizes).round(1)# 输出12.0安装方式pip install numpy建议安装1.21版本兼容性更好。3pandas核心作用结构化数据处理的核心载体所有文本块的特征顺序、字号、粗体、文本都存储在DataFrame中方便聚类、筛选、排序。代码中的应用全程依赖核心功能pd.DataFrame(text_blocks)将解析后的文本块转为结构化表格df.sort_values(by[page, position])按阅读顺序排序文本块df.groupby(cluster).agg(...)聚类后统计各簇的字号/粗体均值区分标题/正文df.loc[...]按条件筛选标题/正文块。关键用法示例importpandasaspd# 构造DataFramedata[{order:0,font_size:24,is_bold:True,text:第一章}]dfpd.DataFrame(data)# 按字号分组统计cluster_statsdf.groupby(cluster).agg({font_size:mean}).round(2)安装方式pip install pandas建议和numpy版本匹配避免冲突。3. 聚类/特征处理模块scikit-learn代码中导入为sklearn核心作用提供字号频率聚类的核心算法KMeans和特征归一化工具MinMaxScaler是“标题识别”的算法核心。代码中的应用两个核心组件①MinMaxScaler()特征归一化作用字号12-24、频率0-1、粗体0-1量纲不同归一化到[0,1]避免某特征主导聚类代码scaler.fit_transform(df[[font_size, font_freq, bold_score]])。②KMeans(n_clusters3)聚类算法作用将文本块按“字号频率粗体”聚为3类一级标题/二级标题/正文代码kmeans.fit_predict(df[[font_size_scaled, font_freq_scaled, bold_scaled]])。关键用法示例fromsklearn.clusterimportKMeansfromsklearn.preprocessingimportMinMaxScalerimportpandasaspd# 模拟特征数据datapd.DataFrame({font_size:[24,16,12,24,16,12],font_freq:[0.05,0.1,0.85,0.05,0.1,0.85],bold_score:[1,1,0,1,1,0]})# 归一化scalerMinMaxScaler()data_scaledscaler.fit_transform(data)# KMeans聚类kmeansKMeans(n_clusters3,random_state42)data[cluster]kmeans.fit_predict(data_scaled)print(data)# 输出聚类结果3类分别对应一级标题/二级标题/正文安装方式pip install scikit-learn建议安装1.0版本。4. Embedding/语义模块sentence-transformers核心作用加载预训练的轻量级Embedding模型如all-MiniLM-L6-v2将文本转为向量用于后续的语义切分。代码中的应用对应章节内语义切分环节核心APISentenceTransformer(all-MiniLM-L6-v2)加载模型自动下载约80MB轻量高效model.encode(text)将文本转为768维向量是语义相似度计算的基础。关键用法示例fromsentence_transformersimportSentenceTransformer modelSentenceTransformer(all-MiniLM-L6-v2)# 生成文本Embeddingtext第一章 人工智能概述embeddingmodel.encode(text)print(fEmbedding维度{len(embedding)})# 输出384all-MiniLM-L6-v2是384维安装方式pip install sentence-transformers依赖torch安装时会自动适配无需手动装torch。5. RAG语义切分模块langchain核心作用提供SemanticChunker语义切分器替代基础的字符数切分按文本Embedding的相似度切分保证语义完整。代码中的应用对应章节内语义切分环节核心APISemanticChunker(embed_model, breakpoint_threshold_typepercentile)初始化语义切分器create_documents([text])对章节正文做语义切分返回切分后的文本块。关键用法示例fromlangchain.text_splitterimportSemanticChunkerfromsentence_transformersimportSentenceTransformer embed_modelSentenceTransformer(all-MiniLM-L6-v2)# 初始化语义切分器semantic_splitterSemanticChunker(embed_model,breakpoint_threshold_typepercentile,breakpoint_threshold_amount95)# 切分文本text人工智能AI是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。机器学习是AI的核心包括监督学习、无监督学习等。chunkssemantic_splitter.create_documents([text])forchunkinchunks:print(chunk.page_content)安装方式pip install langchain建议安装0.1版本。三、安装注意事项避坑指南版本兼容性Python版本建议3.8-3.113.12部分库可能兼容不佳核心库版本pandas1.4、scikit-learn1.0、langchain0.1。PDF解析特殊情况加密PDFpdfplumber无法解析需先解密扫描件PDF图片需搭配OCR工具如pytesseract代码需额外扩展。Word解析限制仅支持.docx格式.doc格式需转成.docx后再解析。Embedding模型下载首次运行SentenceTransformer会自动下载模型需保证网络通畅若下载失败可手动从HuggingFace下载。总结核心依赖逻辑文档解析pdfplumber/python-docx→ 数据结构化pandas→ 标题识别sklearn KMeans→ 章节划分 → 语义切分sentence-transformerslangchain关键库不可替代pdfplumberPDF精准解析、sklearn字号频率聚类、langchain语义切分是整个流程的三大核心缺一不可新手优先级先掌握pandas数据处理和sklearn聚类再熟悉文档解析和语义切分逐步拆解学习。

相关新闻

16:【pip/uv 2026】下载慢/timeout → uv/pip清华/阿里镜像永久配置

16:【pip/uv 2026】下载慢/timeout → uv/pip清华/阿里镜像永久配置

作者: HOS(安全风信子) 日期: 2026-01-26 主要来源平台: GitHub 摘要: 本文深入分析2026年Python包管理工具pip和uv的下载慢、timeout问题,提供清华/阿里等国内镜像的永久配置方案。文章包含3个全新要素:uv…

2026/7/6 3:22:21 阅读更多 →
ConstraintLayout写法和Box写法比较

ConstraintLayout写法和Box写法比较

使用 ConstraintLayout 可以彻底干掉为了占位而存在的 Spacer 和嵌套的 Box,让布局层级变得非常扁平。 方案一:ConstraintLayout 写法(链式思维) 你需要先引入依赖:implementation(“androidx.constraintlayout:constr…

2026/7/6 3:22:22 阅读更多 →
张兆辉专访:《夜色正浓》沈默的复杂,是成年人的生存真相

张兆辉专访:《夜色正浓》沈默的复杂,是成年人的生存真相

近年来,港圈资深戏骨张兆辉持续活跃在内地影视舞台,从斩获国际奖项的电影《空心人》,到热播都市职场剧《夜色正浓》,他以扎实的演技、通透的心境,在不同角色中切换自如,既延续了港圈艺人的专业质感&#xf…

2026/7/5 12:39:59 阅读更多 →

最新新闻

YOLO26 改进 - C2PSA   C2PSA融合DML动态混合层(Dynamic Mixing Layer)轻量级设计优化局部细节捕获与通道适应性,提升超分辨率重建质量

YOLO26 改进 - C2PSA C2PSA融合DML动态混合层(Dynamic Mixing Layer)轻量级设计优化局部细节捕获与通道适应性,提升超分辨率重建质量

前言 本文介绍了动态混合层(DML),并将相关改进模块集成进YOLO26。DML是SRConvNet核心组件,用于解决轻量级图像超分辨率任务中特征捕捉和通道适应性问题。它通过通道扩展拆分、多尺度动态深度卷积、通道洗牌与融合等步骤&#xff…

2026/7/6 3:22:03 阅读更多 →
一碰自动计分,识别零误差!FSV9563 远距离 NFC 模组,台球馆智能化改造优选方案

一碰自动计分,识别零误差!FSV9563 远距离 NFC 模组,台球馆智能化改造优选方案

中文关键词:NFC 智能台球计分、FSV9563、NFC 自动识别台球、落球自动计分、远距离 NFC 感应 10CM、台球馆无人计分、台球桌智能化改造、商用台球自动统计、家用台球计分模组、NFC 台球标签、台球免人工计分、游乐设备智能检测英文关键词:NFC billiards a…

2026/7/6 3:22:03 阅读更多 →
Python爬虫经典案例第71篇:加密货币平台爬取:CoinGecko数据采集实战

Python爬虫经典案例第71篇:加密货币平台爬取:CoinGecko数据采集实战

1. 引言 加密货币市场近年来发展迅速,成为金融科技领域的热门话题。CoinGecko作为全球最大的加密货币数据平台之一,提供了超过13,000种加密货币的实时数据,包括价格、市值、交易量、链上数据等。对于加密货币投资者、量化交易员和区块链研究者而言,CoinGecko数据具有重要价…

2026/7/6 3:20:03 阅读更多 →
2026 最新 GPT 充值完整教程:从基础权益到 Pro 顶配升级,解锁全部 AI 高阶能力

2026 最新 GPT 充值完整教程:从基础权益到 Pro 顶配升级,解锁全部 AI 高阶能力

2026 最新 GPT 充值完整教程:从基础权益到 Pro 顶配升级,解锁全部 AI 高阶能力随着大模型技术持续迭代,GPT 全系功能不断更新,免费版本的算力配额、模型能力、使用场景限制越来越明显。无论是日常办公、文案创作、学术研究&#x…

2026/7/6 3:18:02 阅读更多 →
第五次作业提交

第五次作业提交

CSDN博客完整文章## 一、实验环境 远程连接工具:Xshell 操作系统:Ubuntu Linux 实验说明:所有命令均在Xshell终端实操,配套运行截图记录结果,梳理完整命令知识框架。 第一部分:Shell文本处理命令知识框架 1…

2026/7/6 3:18:02 阅读更多 →
密码学在区块链技术中的应用研究

密码学在区块链技术中的应用研究

开篇前言大家好,本次密码学与信息安全课程设计围绕密码学在区块链技术中的应用完成完整调研、方案设计与验证。很多人只知道区块链是分布式账本,却不知道整套区块链可信体系完全建立在各类密码学原语之上。 本文严格按照课程设计目录完整展开&#xff0c…

2026/7/6 3:18:02 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻