ISBNdb 转储,或:究竟有多少图书被永久保存?
annas-archive.gl/blog, 2022-10-31
如果我们能对影子图书馆中的文件进行正确去重,我们究竟保存了世界上全部图书的百分之多少?
借助 Pirate Library Mirror(编辑:已迁移至 安娜的档案),我们的目标是收集世界上所有的书,并将它们永久保存。1 在我们的 Z-Library 种子以及原始的 Library Genesis 种子之间,我们共有 11,783,153 个文件。但这在现实中究竟意味着什么?如果我们对这些文件进行正确去重,我们保存了世界上所有图书的百分之多少?我们非常希望能得到类似这样的结果:
要算百分比,我们需要一个分母:史上出版过的图书总数。2 在 Google Books 式微之前,该项目的一位工程师 Leonid Taycher 曾在一篇文章中 尝试估算 这个数字。他半开玩笑地得出 129,864,880(“至少到周日为止”)。他通过构建一个涵盖全世界所有图书的统一数据库来估算这一数字:先汇集不同的 Datasets,再用多种方式进行合并。
顺带一提,还有另一个人也曾尝试编目全世界的所有图书:已故的数字行动者、Reddit 联合创始人 Aaron Swartz。3 他 创建了 Open Library,目标是“为每一本曾出版过的书建立一个网页”,并整合来自许多不同来源的数据。后来,他因批量下载学术论文而遭到起诉,最终为其数字保存工作付出了生命的代价,走向自杀。不必多说,这也是我们团队使用化名、并且格外谨慎的原因之一。Open Library 仍由 Internet Archive 的伙伴们英勇运营,延续着 Aaron 的遗产。本文稍后还会再回到这一点。
在 Google 的博文中,Taycher 描述了估算这个数字时的一些挑战。首先,什么才算一本书?有几种可能的定义:
- 实体副本。 显然这并不太有用,因为它们只是同一材料的重复。如果我们能保存人们在书上做的所有批注,比如费马著名的“页边涂鸦”,那就太酷了。但遗憾的是,这将永远只是档案工作者的梦想。
- “作品”(Works)。 例如把《哈利·波特与密室》视作一个逻辑概念,涵盖其所有版本,如不同译本与重印本。这算是一个有用的定义,但很难划清界限。比如,我们大概希望保存不同译本;而仅有细微差别的重印本,可能就没那么重要。
- “版次”(Editions)。 在这种定义下,你会把每一种独特版本的图书都计入统计。只要任何地方不同,比如封面不同或序言不同,就算作不同版次。
- 文件。 当我们处理 Library Genesis、Sci-Hub 或 Z-Library 这类影子图书馆时,还会多一个考量:同一版次可能存在多个扫描版本。人们也可能通过 OCR 扫描文本,或校正倾斜扫描的页面,把现有文件做得更好。我们希望只把这些文件计为一个版次,这就需要良好的 metadata,或使用文档相似度度量进行去重。
“版次”(Editions)似乎是对“图书”最实用的定义。巧合的是,这一定义也用于分配唯一的 ISBN 编号。ISBN(International Standard Book Number,国际标准书号)常用于国际商业流通,因为它与国际条码系统(“International Article Number”)相集成。若要在商店出售一本书,就需要条形码,因此会申请一个 ISBN。
Taycher 的博文提到,尽管 ISBN 很有用,但它并不普遍,因为它真正被广泛采用是在 70 年代中期,而且并非全球各地都使用。尽管如此,ISBN 可能仍是最广泛使用的图书版次标识符,因此是我们最好的起点。如果我们能找到全世界所有的 ISBN,就能得到一份很有价值的清单,知道哪些书仍需要被保存。
那么,我们从哪里获取数据?目前已经有多项工作在尝试汇编全世界所有图书的清单:
- Google。 毕竟他们为 Google Books 做过这项研究。然而,他们的 metadata 无法批量获取,也相当难以抓取。
- Open Library。 如前所述,这就是他们的核心使命。他们从合作图书馆与国家档案机构获取了海量馆藏数据,并持续扩充。同时,他们还有志愿馆员与技术团队尝试对记录去重,并为其标注各种 metadata。最重要的是,他们的 Datasets 完全开放。你可以直接 下载。
- WorldCat。 这是由非营利组织 OCLC 运营的网站;OCLC 出售图书馆管理系统。他们汇聚了许多图书馆的图书 metadata,并通过 WorldCat 网站提供访问。不过,他们也通过出售这些数据盈利,因此无法批量下载。他们确实与特定图书馆合作,提供一些更有限的批量 Datasets 供下载。
- ISBNdb。 这正是本文的主题。ISBNdb 抓取各类网站的图书 metadata,尤其是价格数据,然后将其出售给书商,帮助书商根据市场情况为图书定价。由于如今 ISBN 相当通用,他们实际上建立了“为每一本书对应一个网页”的体系。
- 各种单独的图书馆系统与档案机构。 有些图书馆和档案馆并未被上述任何项目索引与聚合,通常是因为资金不足,或出于其他原因不愿与 Open Library、OCLC、Google 等分享数据。很多机构确实有可通过互联网访问的数字记录,而且往往保护得并不严密;因此,如果你想帮忙,并且想在了解一些奇特的图书馆系统的过程中找点乐子,这些就是很好的起点。
在这篇文章中,我们很高兴宣布一次小规模发布(与我们之前的 Z-Library 发布相比)。我们抓取了 ISBNdb 的大部分内容,并在 Pirate Library Mirror 的网站上提供了可通过种子下载的数据(编辑:已迁移至 安娜的档案;我们不在此直接提供链接,请自行搜索)。数据约包含 3090 万条记录(以 JSON Lines 格式为 20GB;gzip 压缩后为 4.4GB)。他们在网站上声称实际上有 3260 万条记录,因此我们可能漏掉了一些,或者也可能是他们那边出了问题。无论如何,目前我们不会分享具体是如何做到的——就把它留给读者当作练习吧。;-)
我们将分享的是一些初步分析,以便更接近估算世界上图书的数量。我们查看了三个 Datasets:这个新的 ISBNdb 数据集、我们从 Z-Library 影子库(包含 Library Genesis)抓取并首次发布的 metadata,以及 Open Library 的数据转储。
先从一些粗略数字开始:
| Editions | ISBNs | |
|---|---|---|
| ISBNdb | - | 30,851,787 |
| Z-Library | 11,783,153 | 3,581,309 |
| Open Library | 36,657,084 | 17,371,977 |
在 Z-Library/Libgen 和 Open Library 中,图书数量都远多于唯一的 ISBN 数量。这是否意味着其中很多书没有 ISBN,还是仅仅缺少 ISBN metadata?我们或许可以通过结合多种方法来回答:基于其他属性(书名、作者、出版社等)的自动化匹配、引入更多数据来源,以及(在 Z-Library/Libgen 的情况下)从实际的图书扫描件中提取 ISBN。
这些 ISBN 中有多少是唯一的?用维恩图最能说明:
更精确地说:
| ISBNdb ∩ OpenLib | 10,177,281 |
|---|---|
| ISBNdb ∩ Zlib | 2,308,259 |
| Zlib ∩ OpenLib | 1,837,598 |
| ISBNdb ∩ Zlib ∩ OpenLib | 1,534,342 |
我们对重叠如此之少感到惊讶!ISBNdb 拥有大量在 Z-Library 和 Open Library 中都未出现的 ISBN;另外两个数据集也同样如此(程度较小但仍然可观)。这引出了许多新问题:自动化匹配在给那些未标注 ISBN 的图书打标签方面能帮到多大程度?会不会出现大量匹配,从而增加重叠?此外,如果我们引入第 4 个或第 5 个数据集,又会发生什么?那时我们会看到多少重叠?
这确实为我们提供了一个起点。我们现在可以查看所有不在 Z-Library 数据集中、并且在书名/作者字段上也匹配不上的 ISBN。这能帮助我们着手保存世界上所有图书:先在互联网上抓取扫描件,然后再到现实世界中去扫描图书。后者甚至可以通过众筹来推动,或由希望特定图书被数字化的人提供“悬赏”来驱动。所有这些,留待以后再讲。
如果你想在任何方面提供帮助——进一步分析;抓取更多 metadata;寻找更多图书;对图书进行 OCR;将这套方法用于其他领域(例如论文、有声书、电影、电视剧、杂志);甚至让其中一部分数据可用于 ML / 大语言模型训练——请联系我(Reddit)。
如果你对数据分析特别感兴趣,我们正在努力以更易用的格式提供我们的数据集与脚本。要是你能直接 fork 一个 notebook,然后就可以开始把玩这些内容,那就太棒了。
最后,如果你愿意支持这项工作,请考虑捐赠。这完全是一项由志愿者运营的工作,你的贡献会带来巨大的改变。点滴皆有帮助。目前我们接受加密货币捐赠;请参阅安娜的档案上的“捐赠”页面。
— Anna 及团队(Reddit)
1. 在对“永远”做出某种合理定义的前提下。;)
2. 当然,人类的文字遗产远不止图书,尤其是在当下。出于本文以及我们近期发布内容的范围,我们聚焦于图书,但我们的兴趣远不止于此。
3. 关于 Aaron Swartz 还有很多可以说的,但我们只想简要提及他,因为他在这个故事中扮演了关键角色。随着时间推移,可能会有更多人第一次看到他的名字,并随后自己深入探索其中的“兔子洞”。