给数据写说明书 — 元数据、三种词表与穷尽性/特异性
这一章讲三件事: 元数据从哪来(三种来路)、往哪挂(三种词表)、好不好怎么量 (穷尽性与特异性)。它是全书最「值钱」的一章:第 08 章以后讲的搜索成败, 都在这一章的功课里决定好了。
1. 先看现象:表明明在目录里,就是搜不到
一个实施目录后最常见的吐槽:「目录里明明有这张表,搜『销售』就是搜不出来。」
原因不神秘。第 01 章说过,目录自动采集的元数据只有名称、创建日期、负责人、列名这些事实。 这些事实不会告诉你「这张表跟销售活动有什么关系」。书里的判断毫不客气: 域里的数据组织得好不好,直接决定目录的成败——没挂上相关元数据的资产, 会慢慢淹没在数据总量里,「它们不会出现在终端用户的搜索里」1。
判断(我们的,不是书里的): 目录上线的第一年,最大的工作量不是接数据源, 是写描述。这是几乎所有实施团队低估的一项:接源是周级的工程活, 写描述是年级的组织活——因为它的真正成本在第 03 章那张角色梯上(谁负责写、谁审核)。 如果错,会错在: 如果团队把预算全花在连接器上,目录会变成一份自动生成的清单: 结构好看,搜起来一文不值。
2. 元数据到底是什么:同时存在于两个地方的数据
流行定义说元数据是「关于数据的数据」。书里嫌它不到位,给了一个更准的定义:
元数据是「同时存在于两个地方的数据」——既在源头(真实的表、文件),又在指向源头的工具里(目录)2。
这个定义妙在哪?它把元数据的命门说了出来:元数据不能脱离它指的数据单独存在, 而且它必须真的「住在」目录里才起作用。目录里的每一样东西都是元数据, 全部指向别的数据源里的数据。
元数据按来路分三种3:
| 来路 | 是什么 | 够用吗 |
|---|---|---|
| 源里自带的 | 技术元数据 + 业务元数据(下一节) | 只是最低限描述 |
| 目录里加的 | 描述、人员、术语 | 才是搜索的抓手 |
| 两者兼有 | 大多数资产的真实状态 | — |
自带的:技术元数据与业务元数据
技术元数据是数据在创建和存在过程中自动附着的:存在哪个源、谁建的、何时建的、什么格式。 书里的例子:一份 Qlik Sense 报表,HR 部门的分析员建于 2021 年 12 月 13 日,基于 JavaScript 与 QEXT 文件4。
业务元数据是用人类语言写的描述:表名、列名、数据类型的定义5。
注意一个容易踩的坑:「自带」的业务元数据(比如列名)往往取的是机器视角的名字——
CUST_NO、DT_AMT。它们是事实,但离搜索者的语言还差一步。
书里的原话:自带的元数据只是最低限描述——「有它你才能把事实搞对,
但单靠它,目录没法为终端用户给出相关的搜索体验——人们找不到想找的东西 」6。
加的:描述、人员、术语
描述(description):书里要求至少写两层—— 主要用途(这份数据在源系统里实际用来干什么)和 次要用途(数据提供者给潜在消费者出的主意:它还能拿来干什么)7。 次要用途这层最常被漏掉,而它恰恰是把「数据」变成「可用数据」的那一步。
人员:第 03 章那七级角色梯,就是挂在这里的——书里把它们列为资产页上 「应当列出的相关人员」8。
术语:下一节的主角。
3. 三种词表:自由、域、全局
词表(glossary,书里也译作术语表)就是公司业务词汇的清单,把词挂在资产上, 让「按话题搜」成为可能——书里说这是提升可发现性的关键手段9。 书里把词表分成三种管控等级,等级由低到高,恰好对应三种经典的信息组织形态10:
自由词表 = folksonomy(民间标签)。没有任何规则,人人可以创建标签、想怎么用怎么用—— 就是社交媒体上的 #hashtag(话题标签):#puppies(小狗)、#ootd(今日穿搭)、#metoo11。 别因为它在社交媒体上看着像玩具就轻视它:书里明确说,folksonomy 能用完全独特的角度描述数据, 补上中央团队永远想不到的切角12。
域词表 = taxonomy(分类词表)。由一个域里的小群人商定,有层级、有正式语言。 标签是自由联想,#ootd 在这里被正式化为「日常衣物」,并且出现窄词/宽词: 「日常衣物」比「衣物」窄、比「下雨天的日常衣物」宽;网上购物常用的分面 (选「蓝色」+选「连衣裙」,拼出一件具体商品)也属于这一级13。
全局词表 = thesaurus(叙词表)。管控最高,而且换了一种结构思路:不再是树,是簇。 簇心叫首选词(PT,preferred term),周围挂着:变体词(VT,同义词,比如把 #ootd 收编为 「日常衣物」的变体)、相关词(RT,raincoat 雨衣这种自由联想)、窄词(NT)、宽词(BT —— 「衣物」)。它不在一棵总树里,簇心自己说了算14。
[BT] 衣物
│
[VT] #ootd ──[PT] 日常衣物 ──[RT] 雨衣
│
[NT] 下雨天的日常衣物
图说:thesaurus 的簇结构:PT 居中,四个方向各管一种关系。来自原书的同一个例子。
控制与偏见:一对容易被搞反的判断
书里在这里放了一段少见的清醒话:管控严不严,和客观不客观没有关系。 管控高只带来一致的表达(同一个词全库同一个意思),词表照样充满主观与偏见——作者引了 Melissa Adler 对(美国)国会图书馆编目实践中性别与种族偏见的研究作证15。 所以他给的实施口诀是反直觉的:「你必须在'毫无控制'和'严格控制'之间同时兼得」—— folksonomy 负责长尾与意外角度,thesaurus 负责主干与一致性,三种都要16。
一个容易混淆的近邻:数据字典。 数据字典是更基础的工具:列个清单,写上栏位名 和「这列存的是什么类型的数据」;而词表是对这些数据的解释,把数据放进公司知识的上下文里17。 数据字典答「这列是什么」,词表答「这列在公司里意味着什么」。
4. 主走查:一把词表救不救得活一个域
现在把三种词表放回域架构(第 04 章)里,走一遍书里给的质量检查。这套检查有两把尺子18:
- 穷尽性(exhaustivity):词表本身覆盖这个域覆盖得够不够深、够不够宽——这是词表的理想状 态,由域分析定;
- 特异性(specificity):实际打标时,词表里的词有没有真的被用上——这是使用状态。
场景:H&M 的全局词表里,关于建材只有一个词——「木头(Wood)」。 书里直接判了死刑:所有 H&M 设计的房子都是木头的,一个「Wood」词什么也区分不了—— 奥斯陆郊外的家庭住宅用的是山毛榉还是松树?斯德哥尔摩市中心那栋大楼是不是橡木? 穷尽性太低,词表在功能上根本没法用来刻画这个域,搜索自然也不工作19。
好,补词。假设词表补成 {Wood, Beech(山毛榉), Oak(橡木), Pine(松树)},穷尽性达标了。 事情还是会砸,砸在第二把尺子上:如果打标的人图省事,所有建材数据一律只挂「Wood」——
词表:{Wood, Beech, Oak, Pine} 穷尽性:高(词够细)
打标实况:全部只挂 Wood 特异性:低(细词没用上)
↓
搜「Oak」→ 零命中;搜「Wood」→ 几百条分不开的噪声
书里的原话:搜 索「本可以」工作(词表有合适的词),
但它「没有」工作(那些词没被用上)[^20]
书里把两把尺子拼成一张 2×2 矩阵:双高、双低、一高一低——四种状态里只有「双高」能用20。 它还顺手给了三个自查题,读者可以现在就替自己的目录答一遍: 如果一份数据被打了笼统的宽词、而词表里明明有更细的词,好搜吗? 如果一个域只划了几个特别宽的子域,还能浏览着找到特别细分的数据吗? 搜个宽泛词,回来的全是特别专门的数据,你敢信自己搜对了吗?21
这三道题的答案是全书搜索章(第 08 章)的伏笔:穷尽性高会抬高查全率、压低查准率—— 两把尺子在搜索数学里会再见面。
5. AI 帮倒忙的两个坑
本章开头说了「写描述是人工活」,但第二版明明标题里就有 AI——AI 到底能不能代劳? 书里的答案是:能,但有两个专坑写描述这件事的陷阱22。
坑一:同义反复(tautology)。 让 AI 给 Customer 列写描述,它写出:
「 这是一张含有一个描述客户的列的表」。读着通顺,毫无价值——
它把已有元数据复述了一遍,没有任何区分度,只会给搜索制造噪声(一堆不相干的命中)23。
书里给的判断标准值得抄下来:人工元数据必须服务于(正向)区分——
让潜在的搜索命中互相站得开;零区分度的描述就是搜索垃圾24。
坑二:伪本体(false ontology)。 有厂商会推销:「我们用 AI 扫描你们的 SOP、邮件、 聊天记录,自动生成一张知识图谱当元模型」。书里的警告非常重: 别听。目录的元模型通常「小而极珍贵」,值得花那点手工打造的时间—— 手工元模型反而是后面一切 AI 用例的加速器25。 (道理在第 04 章已经埋好:元模型是定义「允许哪些实体、哪些关系」的图纸, 图纸错了每一层都要跟着错;让它从噪声文本里自动长出来,等于把图纸交给一台没有判断力的机器。)
元模型可以改:图谱目录的三个特性
既然元模型这么承重,什么时候该动它?书里把话题接到知识图谱上:KG 式 目录 必须建在图数据库上,元模型因此有三个特性——可视化(整张图看得见、可浏览)、 可扩展(随时加新实体类型、新关系)、可搜索(能用 SPARQL、Cypher、GraphQL 这类 图查询语言直接查)26。书里的 H&M 例子:给元模型加一组「木材旅程」实体—— 从砍伐、板材入库,到用进哪栋建筑27。
6. 作者的判断与证据
书里给了方法与出处的:
- 三种词表(folksonomy/taxonomy/thesaurus)是信息科学的成熟分类,书里给了 #ootd、 日常衣物、雨衣等同一套贯穿例子;
- 穷尽性/特异性这对概念来自信息科学的域分析传统,书里推荐 Smiraglia 的书入门28。
作者的立场:
- 「写描述是目录成败的分水岭」——经验判断,没有具体数字;
- 「AI 生成的元模型不可信」——立场鲜明,但没有展示失败案例;考虑本书的 O'Reilly–Actian 合作背景(作者任职于数据管理厂商),「元模型要手工打造」 这个论断与他的行业位置有利益关联,读时值得留一分清醒。
判断(我们的,不是书里的): 「伪本体」警告的方向是对的,但理由值得补一条更硬的: 自动生成的图谱没有责任人——第 03 章的角色梯上找不到它,错了没人认账, 也没人维护;而手工元模型天然长在团队的组织结构里。选型时问一句 「这张图谱错了谁改」,比争论「AI 生成准不准」更能切中要害。 如果错,会错在: 如果厂商的自动生成方案后来真的配上了完整的人工审核闭环, 这条警告的力道就要打折——书里反对的其实是「无人审核的自动生成」,不是「自动」本身。
7. 边界与局限
- 「描述写多细」没有标准答案。 穷尽性靠域分析定,而域分析怎么做,书里只给了入门书单, 没给步骤。
- folksonomy 的治理成本被一笔带过。 自由标签的重复、歧义(第 10 章的 promotion 例子 会撞上)书里留到了后面;在试读版范围内,「三种都要」的口号缺少落地细节。
- 数据产品一笔带过。 书里强调数据产品直接落在域里、不依附任何应用, 并说「数据产品正在革命数据工程」——但展开章(第 8–9 章)不在试读版里29。
- 「元数据质量 ≠ 数据质量」。 书里刻意只管前者;数据源里的数据本身烂不烂, 是另一门学科(脚注提了 FAIR 这类标准)30。
8. 可带走的
- 元数据的准确定义:同时存在于两个地方的数据(源头 + 指向源头的目录);
- 自带元数据(技术+业务)只是最低限描述;搜索的抓手全靠目录里加的那部分;
- 描述至少两层:主要用途 + 次要用途——后者是给潜在消费者的使用建议,最常被漏;
- 三种词表都要:folksonomy 长尾、taxonomy 层级、thesaurus 簇;管控严 ≠ 更客观;
- 词表质量两把尺:穷尽性(词够不够细)× 特异性(词用没用了),只有双高可用;
- AI 描述的头号坑是同义反复:复述元数据、零区分度,等于搜索噪声;
- 元模型别让 AI 自动生成:小而珍贵,手工打造;没有责任人的图谱不能要;
- KG 目录的元模型可视化、可扩展、可搜索——改元模型本身是日常操作,不是禁区。
9. 原文地图
| 主题 | 原书章 | 原文位置 |
|---|---|---|
| 域内组织决定成败 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:24(搜「success or a failure」) |
| 元数 据=同时存在两处 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:36(搜「two places at the same time」) |
| 三种来路 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:57(搜「derived from the data source」) |
| 技术元数据与 Qlik 例 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:70(搜「Technical metadata」) · text/14-fm-organizing-data-in-the-domains.txt:72(搜「business analyst in the HR department」) |
| 业务元数据=人类语言 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:74(搜「human language」) |
| 最低限描述 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:76(搜「minimum description」) |
| 描述:主要/次要用途 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:86(搜「Primary usage」) |
| 词表打标提升可发现性 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:111(搜「increases the discoverability」) |
| 三种词表 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:117(搜「Free glossary」) |
| folksonomy 与 #hashtag | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:123(搜「folksonomy」) · text/14-fm-organizing-data-in-the-domains.txt:127(搜「#metoo」) |
| taxonomy 层级与分面 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:131(搜「Taxonomies have a hierarchy」) · text/14-fm-organizing-data-in-the-domains.txt:141(搜「faceted approach」) |
| thesaurus 簇与 PT | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:147(搜「preferred term」) · text/14-fm-organizing-data-in-the-domains.txt:151(搜「raincoat」) |
| 无控制与控制兼得 | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:158(搜「strive for both no control」) |
| 受控≠客观(Adler) | 第 2 章 | text/14-fm-organizing-data-in-the-domains.txt:163(搜「Library of Congress」) |
| 数据字典≠词表 | 第 2 章 | text/15-fm-knowledge-graph-powered-data-catalogs.txt:1(搜「data dictionary」) |
| KG 目录建在图数据库上 | 第 2 章 | text/15-fm-knowledge-graph-powered-data-catalogs.txt:16(搜「graph database」) |
| 元模型可视/可扩展/可搜索 | 第 2 章 | text/15-fm-knowledge-graph-powered-data-catalogs.txt:18(搜「The metamodel is visual」) · text/15-fm-knowledge-graph-powered-data-catalogs.txt:27(搜「SPARQL」) |
| H&M 木材旅程扩展 | 第 2 章 | text/15-fm-knowledge-graph-powered-data-catalogs.txt:32(搜「inventoried as lumber」) |
| 元数据质量定义 | 第 2 章 | text/16-fm-data-assets-and-data-products.txt:41(搜「metadata quality」) · text/16-fm-data-assets-and-data-products.txt:46(搜「not on the quality of the data」) |
| 穷尽性与域分析 | 第 2 章 | text/16-fm-data-assets-and-data-products.txt:54(搜「exhaustivity」) |
| Wood 词表太粗 | 第 2 章 | text/16-fm-data-assets-and-data-products.txt:69(搜「Was it beech」) |
| 特异性=实际用量 | 第 2 章 | text/16-fm-data-assets-and-data-products.txt:80(搜「Specificity is the usage」) · text/16-fm-data-assets-and-data-products.txt:88(搜「specificity is low」) |
| 2×2 矩阵与三道自查题 | 第 2 章 | text/16-fm-data-assets-and-data-products.txt:98(搜「four scenarios」) · text/16-fm-data-assets-and-data-products.txt:104(搜「very special」) |
| AI 两个坑总起 | 第 2 章 | text/12-fm-using-ai-to-organize-data.txt:9(搜「avoiding tautologies」) |
| 同义反复例与区分度 | 第 2 章 | text/12-fm-using-ai-to-organize-data.txt:12(搜「tautological」) · text/12-fm-using-ai-to-organize-data.txt:19(搜「discrimination」) |
| 伪本体与手工元模型 | 第 2 章 | text/12-fm-using-ai-to-organize-data.txt:32(搜「extremely precious」) · text/12-fm-using-ai-to-organize-data.txt:33(搜「craft them by hand」) |
| 元数据承载公司知识 | 第 1 章 | text/07-fm-the-core-functionality-of-a-data-catalog.txt:134(搜「knowledge universe」) |