Word 和 PDF 怎么进来 — 文档的结构本身就是信息
这一章讲三件事: 从一份文档里到底该带走什么(答案不只是「文字」); 为什么「这段是标题、那段是列表」这种信息值钱; 以及为什么这本书主张把所有格式先转成 PDF。 位置:这是入库线的第一步 ——读进来。读完接第 03 章(表格)和第 04 章(录音与图片)。
1. 先看现象:同一份文档,读法不同,后面差很多
设想你把一本三百页的员工手册喂进系统。用户问:「试用期请假怎么算?」
- 读法 A: 只把三百页的文字连成一大串存进去。 系统搜回来一段讲请假的话,答对了——但你问它「这在第几页」,它答不上来; 而且它可能把「实习生请假」那一节的内容当成试用期的答上来;
- 读法 B: 除了文字,还记下每段属于哪一章、在第几页、是标题还是正文。 同样答对,而且能告诉你「见第 4 章第 87 页」,还能先锁定「试用期」那一章再往下找。
读法 B 贵不了多少,但后面每一步都因为它变简单。
这一章讲的就是:读法 B 到底多带走了什么东西。
2. 顶层全景
一 份文档
│
├─(读法 A)只抽纯文字 ────────────→ 一大串字
│
└─(读法 B)拆成一个个元素 ───────→ 每个元素带三样东西:
① 这段文字是什么
② 它是什么类型(标题/正文/列表项)
③ 它从哪儿来(哪个文件、第几页、什么时候改的)
图说:②和③就是这一章的全部内容。它们不参与「意思相近」的比对,但决定了检索能不能收窄、
答案能不能给出处。
先把③那个东西的名字说清楚:这类「关于内容的说明信息」叫元数据—— 文件名、页码、作者、创建日期、最后修改时间都算。 它本身不是内容,它是内容的标签。 这个词第 04、05、06 三章都会用到。
3. Word:两种读法, 差别在「要不要类型」
读法 A:只要字
书里说,最流行的库是 python-docx1。它把文档当成一串段落,
你挨个取出每段的文字、拼成一整串,就完事了。
什么时候够用: 文档本身就是平铺直叙的散文,没有表格、没有列表、没有分章。
读法 B:连类型一起带走
如果你的系统需要区分标题、正文、列表项这些东西,书里推荐另一个库 unstructured。
它的作用是把文档拆成一个个带类型的结构元素1。
「把一个文件读开、拆成机器能一件件处理的部件」这件事,行话叫解析。 上面这个库干的就是解析:同样一份 Word 文档,它吐出来的不是一大串连着的字, 而是一个个已经分好类的部件。后面每次说「解析」,说的都是这个动作。
拆出来的每 个元素带着:
| 元素带的东西 | 例子 |
|---|---|
| 文字本身 | 「试用期内每月可请事假两天。」 |
| 类型 | Title(标题)、NarrativeText(正文)、ListItem(列表项)2 |
| 元数据 | 文件路径、最后修改时间 |
书里的做法是:挨个走一遍这些元素,给每个元素攒一个字典 (程序里的「字典」不是查词用的那种词典,它是一张「一栏名字配一栏值」的小表—— 「页码」这一栏填 87,「类型」这一栏填「标题」),把你想留的项目填进去3。
4. 为什么「类型」值钱:它让检索能分两步走
这一节是这一章真正的核心,别跳。
先看问题
第 01 章说过,检索是「把问题变成一串数,在库里找最近的几块」。 这是一次平铺的比对——三百页手册切出来的两千块,一视同仁地跟问题比一 遍。
块越多,越容易撞上「看着像、其实不相干」的那几块。
书里给的解法
作者举了一个特别好懂的例子:一本各章之间毫不相干的书, 可以先找出最匹配的章标题,再在那一章里面找具体信息4。
笨办法:两千块,一次性全比一遍 → 从政治新闻里翻出一段体育新闻的话,也不奇怪
两步走:先比二十个章标题,锁定一章 → 再在这一章的八十块里比
└─ 搜索范围从 2000 缩到 80,而且缩掉的那 1920 块「本来就不该被考虑」
图说:第二步比第一步准,不是因为算法变好了,是因为不相干的东西被提前踢掉了。
(这张图里的 2000 块、二十个章标题、80 块、1920 块都是为演示编的,不是真实数值。 书里在这里只给了做法——先找最匹配的章标题、再在那一章里找——没有给任何数。)
作者的原话是:知道文档结构,可以让检索这一步做得更好4。这句话背后的道理值得单独记住:
结构信息不参与「意思像不像」的计算,它参与的是「哪些块压根不该进入比较」。
这是两件完全不同的事,而后者往往更管用——因为排除比排序容易得多。
这条思路在第 06 章会变成一个通用做法
先记下这个名字:靠元数据把搜索范围提前收窄,叫元数据过滤。 这一节看到的是它最朴素的形态(拿章标题当过滤条件), 第 06 章会讲它一般化之后长什么样、以及它救的是哪一类错误。
5. 复杂文档怎么办:各个部件分头处理
一份真实的文档很少只有文字。作者的建议是: 对带列表、表格、 图片的复杂文档,给每一类元素各建一条处理流水线5。
- 图片 → 让模型写一段话解释图里是什么;
- 表格 → 让模型提炼出关键结论。
注意这句话的分量: 它意味着入库不是「读一遍」,而是一次分诊—— 先看清这份文档由哪几种东西组成,再把每种交给不同的处理办法。 具体怎么做在第 04 章。
6. PDF:为什么它成了这条链上的中心
现象先行:你手上的文件多半是 PDF
作者的观察很实在:PDF 是最常用的信息分享格式—— 不管原件是 Word 还是幻灯片,对外发之前通常都会转成 PDF。 结果就是大多数文档你拿到手时已经是 PDF 了6。