第 2 章 第一部分:预训练数据

数据来源——互联网的宝藏与垃圾

Common Crawl、高质量语料源、多语言数据与法律合规的全面解析

Common Crawl 数据来源 多语言 合规

“15 万亿 token 不是从天上掉下来的。它们来自互联网的每一个角落——有人类知识的精华,也有信息污染的沼泽。“


2.1 Common Crawl:大模型的基石

几乎所有主流大模型的预训练数据都有一个共同的底层来源:Common Crawl(CC)。

CC 是什么

Common Crawl 是一个由非营利组织运营的开放网络爬虫项目。自 2008 年以来,它持续爬取互联网上的公开网页,并将爬取结果以 WARC(Web ARChive)格式免费开放。

规模:

  • 截至 2026 年,CC 存档了超过 3000 亿 个网页,跨越 15 年(2008 起),每月新增 30-50 亿页面,被 10,000+ 论文引用(2026 官方数据)
  • 体积口径上 CC 存档超过 250 PB 的原始网页数据
  • 最新的 CC-MAIN-2026-17(2026-04-10 至 2026-04-23 期间爬取)包含 2.19 亿个 web pages、379.2 TiB,数据来自 4320 万 host / 3540 万 registered domains,含 6.605 亿此前未访问过的新 URL
  • 需要注意统计口径的差异:早期 CC 快照的”30-40 亿页面”是包含重复 URL 和重定向的原始页面计数,而去重 URL 数通常在 20 亿左右
  • 所有数据托管在 AWS S3 上,可以免费下载

WARC 规范变更(2026-04 起):从 CC-MAIN-2026-17 快照起,WARC revisit records 的 Content-Type 从 message/http 变更为 application/http;msgtype=response(对齐 iipc/warc-specifications#55)。这是一项对下游解析工具的破坏性变更——历史解析器(基于固定 Content-Type 字符串匹配)会丢失新快照的 revisit 记录,需要检查工具兼容性。

CC 的数据格式

CC 提供三种格式的数据:

格式内容大小用途
WARC完整的 HTTP 请求和响应(包含 HTML)最大需要自己做文本提取的场景
WET纯文本(已从 HTML 中提取)中等快速使用,但提取质量不高
WAT元数据(URL、HTTP header、链接等)最小做数据分析和过滤规划

推荐:使用 WARC 格式 + 自选的文本提取工具(如 trafilatura)。CC 自带的 WET 提取质量一般——它使用的提取器比较老旧,经常包含导航栏、广告等噪声文本。FineWeb 的实验证实,用 trafilatura 从 WARC 重新提取可以显著提升数据质量。

CC 快照之间的质量差异

一个很容易被忽视的事实是:不同时间的 CC 快照质量差异巨大。

原因包括:

  • 爬虫策略变化:CC 的爬取策略在不同时期有调整,某些时期可能更偏向某类网站
  • 互联网内容的变化:垃圾网站的占比在逐年上升,SEO 内容越来越多
  • JavaScript 渲染页面的增加:2020 年后,越来越多的网站使用 JavaScript 框架,CC 无法正确爬取这些页面
  • AI 生成内容的泛滥:2023 年后,大量 AI 生成的低质量内容充斥互联网

值得关注的趋势:2024 年之后的快照中,AI 生成内容的占比持续攀升。在 CC-MAIN-2026-17 的分析中,.com 域名占比持续领先,而 .cn 域名占比偏低,反映了 CC 爬取的语言和地域偏差在最新快照中仍然显著。

实操建议:

  • 不要盲目使用最新的 CC 快照——新快照中的 AI 生成垃圾内容可能更多
  • 对不同时间段的快照分别评估质量
  • 早期快照(2013-2018)的网页质量可能更高(AI 生成内容少),但技术知识可能过时
  • 混合使用多个时间段的快照,在时效性和质量之间取平衡

CC 的固有偏差

语言偏差:英文内容占 CC 总量的 40-50%,中文约占 10-15%。很多低资源语言的占比 < 1%。

地域偏差:美国、欧洲的网站爬取最充分,亚洲和非洲的很多网站覆盖不足。

类型偏差:新闻网站、商业网站被大量爬取,但很多高质量内容(如付费论文、书籍、私有知识库)不在 CC 中。

时效偏差:CC 的爬取频率对不同网站不同——热门网站可能每月被爬取多次,小众网站可能一年才被爬取一次。


2.2 高质量语料源

CC 是”量”的保障,但”质”需要额外的高质量数据源来补充。

维基百科(Wikipedia)

价值:

  • 知识密度极高——每篇文章都是由社区编辑审核的结构化知识
  • 覆盖面广——300+ 种语言,超过 6000 万篇文章
  • 格式规范——标题、段落、列表、引用的结构清晰

数量:

  • 英文维基约 40-50 亿 token
  • 中文维基约 10-15 亿 token
  • 在万亿 token 的训练集中,维基百科的占比通常 < 1%

处理要点:

  • 去除维基标记语法(MediaWiki markup)
  • 保留文章正文,去掉编辑历史、讨论页面
  • 注意处理模板、信息框(infobox)——这些结构化内容是否保留取决于你的目标
  • 某些维基百科文章质量差(stub 文章只有几句话)——需要做长度过滤

局限:

  • 风格单一——“百科全书腔”
  • 知识有时效性——更新可能滞后
  • 中文维基的覆盖度远不如英文

书籍语料

Books3 / Gutenberg / 自建书籍语料

书籍是最高质量的长文本来源之一。一本书通常有几万到几十万词,段落连贯,逻辑清晰,语言规范。

价值:

  • 长上下文学习:书籍是训练模型处理长文本的天然数据
  • 知识深度:书籍对一个主题的讲解通常比网页深入得多
  • 写作质量:经过编辑和出版流程的文本,质量有保障

主要来源:

  • Project Gutenberg:公版(public domain)书籍,约 7 万本。主要是 1920 年代之前的英文文学作品。免费且无版权问题
  • Books3(争议中):约 20 万本现代书籍,包含大量受版权保护的作品。因版权诉讼(如 NYT vs OpenAI)而引发争议
  • 中文书籍:公开来源非常有限。可以考虑中文古典文学(二十四史、诸子百家等古籍已进入公版)和部分开放获取的现代作品

版权风险:

  • Gutenberg 的内容是安全的——这些书的版权已经过期
  • 现代书籍的版权问题是当前最大的法律风险之一
  • 建议:在合规要求严格的场景下,只使用明确的公版或开放许可的书籍

学术论文

来源:

  • arXiv:预印本论文库,主要覆盖物理、数学、计算机科学、生物学等。约 250 万篇。
  • Semantic Scholar Open Research Corpus (S2ORC):大规模学术论文语料,覆盖多个学科。约 1.36 亿篇论文的元数据,其中约 1200 万篇有全文。
  • PubMed / PMC:生物医学领域的论文。
  • 中文学术论文:CNKI(知网)等来源,但多数有版权限制。

处理要点:

  • PDF → 文本的转换质量是关键挑战。学术论文的排版复杂(双栏、公式、图表、参考文献),OCR 和 PDF 解析工具的效果差异很大
  • LaTeX 公式的处理:保留 LaTeX 源码还是转换为文本?对于训练数学能力,保留 LaTeX 源码更有价值
  • 参考文献列表:通常应该被过滤掉(大量重复且信息密度低)
  • 作者信息和致谢:包含 PII,需要处理

代码数据

来源:

  • GitHub:最大的开源代码托管平台。The Stack 数据集从 GitHub 收集了 TB 级的代码
  • The Stack v2:覆盖 600+ 种编程语言的去重代码数据集
  • StarCoder Data:BigCode 项目整理的高质量代码数据

处理要点:

  • 许可证过滤:只使用允许用于训练的开源许可证(如 MIT、Apache 2.0、BSD)。GPL 等 copyleft 许可证有争议
  • 质量分层:
    • Tier 1:高 star、有完善文档和测试的项目
    • Tier 2:中等 star、有基本文档
    • Tier 3:低 star、无文档
    • 过滤掉:自动生成的代码、配置文件、数据 dump
  • 编程语言比例:Python 通常占比最大(与用户需求匹配),但也需要其他语言来保证多样性
  • 代码上下文的价值:不只是代码本身——README、docstring、commit message、issue discussion 都是有价值的训练数据

百科/问答类

来源:

  • StackOverflow / StackExchange:高质量的问答数据。问题-回答-投票的结构天然适合 SFT 数据
  • 知乎:中文高质量问答平台(但使用需注意版权)
  • Quora:英文问答平台

价值:

  • 天然的”问题-回答”格式,对模型学习问答能力很有帮助
  • 社区投票机制提供了天然的质量信号
  • 覆盖极广的主题

处理要点:

  • 高赞回答 vs 低赞回答的质量差异很大——可以用投票数作为质量过滤的信号
  • 过时的回答(如 5 年前的编程问题回答)可能已经不准确
  • 需要处理问答的格式标记

开源清洗数据集:一种新的数据获取范式

上述数据源都是”原始数据源”——你需要自己做提取、清洗、去重等一系列工作。但近年来,一种新的数据获取方式正在兴起:直接使用社区或机构构建的、已经过高质量清洗的即用数据集。

代表性数据集:FineWeb2(HuggingFace, 2026)

HuggingFace 发布的 FineWeb2(ICLR 2026)是目前最大规模的开源多语言清洗数据集:

  • 规模:20TB 文本,约 50 亿文档,基于近 100 个 CC 快照构建
  • 语言覆盖:1000+ 种语言——这对低资源语言的预训练来说是一个里程碑
  • 核心创新:
    • 可自动适应任意语言的数据处理流水线(无需为每种语言手写规则)
    • 基于重复计数和质量信号的数据重平衡策略
    • 在 9 种语言上进行了完整的消融实验验证
  • 许可:ODC-By(开放数据许可),可自由用于训练

2026 年主要开源预训练数据集全景:除 FineWeb2 之外,开源社区已形成多套互补方案,下表对比 2026 年中节点的主要数据集:

数据集规模维护方许可证关键特点
RedPajama 2~30T rawTogether AI多84 个 CC 快照,最大原始数据
FineWeb 2~10T / 20TBHugging FaceODC-By1000+ 语言,下载量最大
Common Pile~1T (8TB)Allen AI + EleutherAI宽松完全合规标杆,训练 Comma v0.1-1T/2T;OLMo 2 另用 Dolma 3
Nemotron-CC~6.3TNVIDIA多商用级质量,4× 优于 DCLM 基线
Dolma 3~6TAllen AIODC-ByOLMo 2 训练用,可复现管线
Zyda 2~5TZyphra宽松跨源去重 + 模型质量过滤(DCLM/FWE3/Dolma/Zyda-1)
DCLM~3.8T社区+Apple+AI2CC-BY-4.0DCLM-Baseline 标杆

选型建议:

  • 若优先合规 → Common Pile(1T tokens / 8TB 完全合规,训练 Comma v0.1-1T/2T)
  • 若优先规模 → FineWeb 2 中文/特定语种子集 或 RedPajama 2 原始数据
  • 若追求极致质量 → Nemotron-CC(注意 NVIDIA 商业限制)
  • 若想从源头规避 AI 内容污染 → Common Pile(明确剔除疑似 AI 生成来源的开放许可数据)

为什么这很重要? 传统做法是每个团队各自从 CC 出发,重复做提取→清洗→去重→质量过滤的全套流程。FineWeb2 这类数据集将社区的最佳实践固化为可直接使用的高质量数据,大幅降低了预训练数据工程的门槛——尤其对于缺乏大规模数据处理基础设施的团队。

需要注意的是:使用这类第三方清洗数据集意味着你的数据处理依赖于别人的质量判断。建议在使用时仍然进行采样抽检,确认其质量标准与你的需求一致。


2.3 多语言数据的特殊挑战

中文数据源的现状

中文预训练数据面临的挑战比英文更严峻:

量的挑战:

  • CC 中的中文数据约占 10-15%,远少于英文
  • 经过质量过滤后,可用的高质量中文数据可能只有 1-3T token
  • 中文维基百科的规模远小于英文版(约 130 万 vs 690 万篇文章)
  • 中文高质量书籍的数字化程度较低

质的挑战:

  • 中文互联网的 SEO 垃圾和营销内容比例较高
  • “自媒体”时代大量标题党、低质量内容
  • 2023 年后 AI 生成的中文内容急剧增加
  • 中文简体/繁体的处理需要额外关注

主要中文数据源:

来源估计量级质量特点
CC 中文部分5-10T tokens中量最大但质量参差
中文维基百科~15 亿 tokens高量少但质量好
中文书籍(古典)~50 亿 tokens高文言文为主
百度百科~100 亿 tokens中-高质量不如维基但量更大
知乎~200 亿 tokens中-高问答格式,需要授权
中文新闻~500 亿 tokens中时效性强,模板化严重
中文论坛/社区~1T tokens低-中多样性好但噪声大
CCI3.0-HQ(智源)~2500 亿 tokens高专用质量分类器筛选的中文互联网数据,总量 500GB
Chinese FineWeb Edu(OpenCSG/清华)—高面向教育领域的高质量中文语料

后两个数据源是近年来中文预训练领域最重要的开源贡献。特别是 CCI3.0-HQ,其核心创新是训练了专用的中文质量分类器,在区分高质量中文内容方面显著优于通用开源分类器,为中文数据质量过滤提供了新的基准线。

低资源语言的数据增强策略

对于训练数据极其稀少的语言(如很多东南亚语言、非洲语言),常见的增强策略:

  1. 翻译增强:将高质量英文数据翻译为目标语言。但机器翻译的质量限制了这个方法的上限。
  2. 跨语言迁移:利用相关语言的数据。如用普通话数据辅助粤语、用印尼语数据辅助马来语。
  3. 调整采样权重:在多语言训练中,对低资源语言做过采样(oversampling),使其在训练中被看到更多次。
  4. 利用开源多语言清洗数据集:如 FineWeb2 覆盖了 1000+ 种语言的高质量清洗数据,可以直接获取低资源语言的预训练语料,避免从零开始构建数据处理流水线。

跨语言平衡的策略差异

不同模型在多语言策略上的选择差异很大,反映了不同的产品定位:

Llama 3(Meta):英文为主(~85%),多语言支持有限

  • 定位:主要服务英文市场
  • 结果:英文能力极强,中文能力弱

Qwen 2.5(阿里):中英平衡(各~40%),覆盖 29+ 种语言

  • 定位:全球化的多语言模型
  • 结果:中英文能力均衡

DeepSeek V3:代码和数学占比高,中英文均衡

  • 定位:技术能力导向
  • 结果:代码/数学能力突出,中英文均可

这些差异不是技术能力的差异,而是产品策略和数据策略的差异。


2.4 数据许可与法律合规

这是一个不能回避的话题。训练数据的法律合规性正在成为大模型公司面临的最大风险之一。

当前的法律环境

AI 训练数据的法律环境在 2025-2026 年发生了剧烈变化,多起诉讼产生了实质性裁决,正在塑造行业的法律框架。

关键诉讼与裁决:

案件状态关键法律原则
Bartz v. Anthropic15 亿美元和解(2026)训练数据使用可能属合理使用,但存储盗版副本构成侵权
Kadrey v. Meta部分裁定(2025)即使底层数据来源非法,LLM 训练本身仍可能属合理使用(但分发行为不受保护)
NYT vs OpenAI多区合并诉讼,进入取证阶段法院要求 OpenAI 交出数千万条输出日志,预计 2026 年底或 2027 年初出判决
Thaler v. Perlmutter美国最高法院拒绝审理(2025)确认纯 AI 生成作品不受版权保护

正在形成的法律共识:

  • “训练 vs 存储”的区分正在成为核心法律原则——使用数据训练模型(转化性使用)和直接存储/复制数据是不同的法律行为
  • 合理使用分析中,“市场损害”因素的权重在上升——如果模型输出直接替代了原作品的市场,侵权风险显著增加
  • 许可交易模式正在兴起:越来越多的内容方选择与 AI 公司签署授权协议,而非走诉讼路线

监管框架:

欧盟 AI Act(2024 生效):要求 AI 系统提供者披露训练数据的来源和使用的版权作品摘要。对”通用目的 AI 模型”有特别的数据透明度要求。

中国《生成式人工智能服务管理暂行办法》(2023):要求训练数据合法、不侵犯知识产权、不含违法违规内容。

对从业者的实操建议:

  • 维护详细的数据溯源记录——一旦涉诉,“你知不知道数据来自哪里”将成为关键问题
  • 避免直接存储受版权保护的原始文本副本(Bartz 案的教训)
  • 关注训练数据是否会导致模型输出”实质性相似”的原作品片段
  • 在有条件的情况下,优先使用已获得许可或明确开源的数据

Robots.txt 的实际约束

网站通过 robots.txt 文件声明哪些内容不允许被爬虫访问。但:

  • CC 在爬取时并不总是严格遵守 robots.txt(虽然它声称会)
  • robots.txt 的法律约束力在不同司法管辖区不同
  • 很多网站在 AI 时代之后才更新了 robots.txt 来排除 AI 训练爬虫——但历史快照中的数据已经存在

合规策略

  1. 数据溯源(Data Provenance):记录每条训练数据的来源 URL、爬取时间、许可证信息
  2. Opt-out 机制:提供渠道让内容所有者要求移除其数据
  3. 许可证过滤:对于代码数据,只使用宽松许可证(MIT、Apache 2.0、BSD)的内容
  4. 去标识化:移除可识别的个人信息和版权标记
  5. 审计日志:保留完整的数据处理日志,以备合规审查

合规数据集的实践:Common Corpus

“合规”是否意味着”只能用很少的数据”?Common Corpus(ICLR 2026 Oral)给出了有力的反例。

Pleias 联合多方发布的 Common Corpus 包含 2.27 万亿 token,是目前最大的完全合规开源文本数据集。它的所有内容均来自公有领域或宽松许可(Apache 2.0),数据来源覆盖六大类:

来源类别内容示例
OpenCulture公版书籍、报纸Project Gutenberg、数字化历史报纸
OpenGovernment法律、金融等政府文档法律文书、监管文件
OpenSource高质量开源代码GitHub 宽松许可项目
OpenScience开放获取学术论文PubMed OA、arXiv
OpenWeb开放知识平台维基百科、StackExchange
OpenSemantic语义结构化数据Wikidata

Common Corpus 当前覆盖 33 种语言(每种超过 10 亿 token),第三版计划扩展到中文、日文、韩文和阿拉伯语。它证明了:通过系统化地整合公有领域和宽松许可的数据源,完全可以在严格合规的前提下构建万亿级的预训练数据集。

Common Pile(Allen AI + EleutherAI, 2025-2026)——8TB(~1T tokens)的完全合规开源预训练数据集,是当前规模最大的”已明确版权清理”选项。训练出 Comma v0.1-1T/2T(OLMo 2 另用 Dolma 3 训练),标志着”合规 + 规模”不再是矛盾命题。建议在生产环境优先评估 Common Pile 的可商用范围。


2.5 新兴的数据来源与挑战

AI 生成内容的污染

自 ChatGPT 发布(2022 年末)以来,互联网上的 AI 生成内容急剧增加。这对未来的预训练数据构成了一个严峻的挑战:

  • 如果你用 2024 年后的 CC 快照训练模型,数据中可能包含大量 GPT/Claude/Gemini 生成的内容
  • 用 AI 生成的内容训练 AI,可能导致”模型坍缩”(model collapse)——分布逐渐退化

实证数据:He et al. (2026) 在医疗领域进行了大规模实验(80 万+合成数据点),量化了 AI 数据污染的实际危害:

  • 关键病理特征被”平均化”——罕见发现逐渐消失
  • 人口统计特征偏向中年男性(多样性丢失)
  • 虚假安抚率从约 13% 激增至 40%
  • 仅经过两代训练,AI 文档即变得在临床上无用

虽然这是医疗领域的实验,但其揭示的退化机制(多样性丢失、分布向”平均”坍缩)对通用文本场景同样具有警示意义。

应对策略:

  • 使用 2023 年之前的 CC 快照可以避免大部分 AI 生成内容
  • 真实数据 + 质量感知过滤的组合是目前最有效的缓解方案——单纯增加合成数据量无法防止模型退化(He et al. 2026)
  • AI 内容检测器的进展:Buttaro & Amerini (2026) 的比较研究表明,监督学习检测器(如基于 Transformer 的分类器)在跨语言和跨领域场景下表现优于商业工具(ZeroGPT、GPTZero 等),展示出更好的稳定性。但大规模应用仍面临计算成本和误判率的挑战
  • 实操建议:对于 CC 快照的 AI 内容预过滤,建议使用基于监督学习的检测器而非商业工具。在规模化场景下,可以先用 fastText 分类器做粗筛,再用监督学习检测器做精筛,控制计算成本
  • LID 基准参考:CommonLID(109 语言识别基准)提供了更广泛的语言覆盖评估,可作为 fastText lid 和 GlotLID 的基准测试参考
  • 开源社区的对策:Common Pile 在数据选择阶段就排除了疑似 AI 生成来源(仅采用开放许可数据);Nemotron-CC 在质量过滤阶段使用分类器集成并加入合成数据重述(1.9T 合成 token)来提升质量;Zyda 2 通过跨源去重 + 模型质量过滤避免低质内容传播

Soft Contamination:语义级 benchmark 泄漏的新威胁

2026 年 2 月发表的 arXiv: 2602.12413 揭示了一种新型 benchmark 污染形式:Soft Contamination(软污染)——训练数据泄漏了 benchmark 测试题的语义近重复(sentences with equivalent/near-equivalent content but not close in string space)。

传统 n-gram 去污染无法检测这类泄漏,因为:

  • 字符串层面差异很大(可能只有 30-40% n-gram 重叠)
  • 但语义完全等价(如”如何重置密码?” vs “忘记密码怎么办?”)
  • 模型通过浅层模式匹配而非真正的分布外推理来”作弊”

对数据工程师的启示:数据清洗管线必须增加 embedding 相似度检测层(阈值建议 0.85-0.90),专门捕获语义级重复。这对合成数据占比越来越高的 2026 年尤为重要。

多模态数据

虽然本书聚焦于文本数据,但需要指出:多模态数据(图文对、视频字幕等)正在成为预训练数据的重要补充。

  • 图文对:LAION-5B、DataComp 等数据集提供了数十亿的图文对
  • 视频字幕:YouTube 等平台的视频字幕提供了大量的口语化文本
  • 科学图表:论文中的图表+描述是训练科学理解能力的宝贵数据

动手环节:数据来源侦察与质量初判

目标:像一个数据工程师一样,对不同来源的文本数据进行初步的质量评估和特征分析。

练习 1:模拟 Common Crawl 快照质量分析

"""
模拟分析不同年份 CC 快照的数据质量差异
真实场景中你会用 WAT 元数据做类似分析
"""

import random
from collections import Counter

def simulate_cc_snapshot(year: int, n_pages: int = 10000) -> list:
    """模拟不同年份 CC 快照的内容分布"""
    content_types = {
        "高质量文章": {"base_ratio": 0.15, "yearly_decay": 0.005},
        "普通网页":   {"base_ratio": 0.35, "yearly_decay": 0.01},
        "SEO垃圾":    {"base_ratio": 0.15, "yearly_growth": 0.02},
        "AI生成内容": {"base_ratio": 0.0,  "start_year": 2023, "yearly_growth": 0.08},
        "导航/模板页": {"base_ratio": 0.20, "yearly_decay": 0.0},
        "论坛/社交":   {"base_ratio": 0.10, "yearly_decay": 0.005},
        "JS渲染空页":  {"base_ratio": 0.05, "yearly_growth": 0.015},
    }

    pages = []
    for _ in range(n_pages):
        weights = []
        for ctype, config in content_types.items():
            base = config["base_ratio"]
            delta = (year - 2018)
            if "yearly_decay" in config:
                ratio = max(0, base - config["yearly_decay"] * delta)
            elif "yearly_growth" in config:
                start = config.get("start_year", 2018)
                if year >= start:
                    ratio = base + config["yearly_growth"] * (year - start)
                else:
                    ratio = base
            else:
                ratio = base
            weights.append(max(0, ratio))

        # 归一化
        total = sum(weights)
        weights = [w / total for w in weights]
        ctype = random.choices(list(content_types.keys()), weights=weights, k=1)[0]
        pages.append(ctype)

    return pages

# 分析不同年份
print(f"{'年份':<6} {'高质量%':>8} {'SEO垃圾%':>9} {'AI生成%':>8} {'JS空页%':>8}")
print("-" * 45)
for year in [2018, 2020, 2022, 2024, 2026]:
    pages = simulate_cc_snapshot(year)
    counts = Counter(pages)
    total = len(pages)
    print(f"{year:<6} "
          f"{counts.get('高质量文章', 0)/total*100:>7.1f}% "
          f"{counts.get('SEO垃圾', 0)/total*100:>8.1f}% "
          f"{counts.get('AI生成内容', 0)/total*100:>7.1f}% "
          f"{counts.get('JS渲染空页', 0)/total*100:>7.1f}%")

# 思考题:基于以上分析,如果你要构建一个中文预训练数据集,
# 你会选择哪些年份的 CC 快照?为什么?

练习 2:数据来源信息密度对比

"""
对比不同来源文本的信息密度
用 type-token ratio (TTR) 和独特 n-gram 比例作为代理指标
"""

# 模拟不同来源的文本样本
source_samples = {
    "维基百科": "光合作用是植物利用光能将二氧化碳和水转化为有机物和氧气的过程。"
                "光合作用主要发生在叶绿体中,分为光反应和暗反应两个阶段。"
                "光反应在类囊体膜上进行,将光能转化为化学能。",
    "新闻网站": "据报道,该公司今日宣布了最新的季度财报。财报显示,"
                "该公司营收同比增长百分之二十。该公司表示,未来将继续"
                "加大研发投入,提升核心竞争力。",
    "论坛帖子": "楼主说得对啊,我也觉得是这样的。顶一下。"
                "同意楼上的说法,确实有道理。楼主分析得很好。"
                "前排支持,顶顶顶。",
    "SEO垃圾":  "最好的减肥方法减肥秘诀如何快速减肥减肥食谱"
                "减肥运动减肥药减肥茶减肥方法大全最有效的减肥方法"
                "快速减肥秘诀减肥食谱推荐",
}

def analyze_info_density(text: str) -> dict:
    chars = list(text)
    unique_chars = set(chars)
    # Type-Token Ratio
    ttr = len(unique_chars) / max(len(chars), 1)
    # Bigram 多样性
    bigrams = [(chars[i], chars[i+1]) for i in range(len(chars)-1)]
    bigram_diversity = len(set(bigrams)) / max(len(bigrams), 1)
    # 重复模式检测
    from collections import Counter
    char_freq = Counter(chars)
    max_freq = max(char_freq.values()) / max(len(chars), 1)

    return {
        "TTR": round(ttr, 3),
        "bigram多样性": round(bigram_diversity, 3),
        "最高字符频率": round(max_freq, 3),
    }

print(f"{'来源':<10} {'TTR':>6} {'bigram多样性':>12} {'最高字符频率':>12}")
print("-" * 45)
for source, text in source_samples.items():
    metrics = analyze_info_density(text)
    print(f"{source:<10} {metrics['TTR']:>6.3f} {metrics['bigram多样性']:>12.3f} "
          f"{metrics['最高字符频率']:>12.3f}")

# 思考题:TTR 和 bigram 多样性可以作为质量过滤的指标吗?
# 它们各自的局限性是什么?

练习 3:设计一个中文数据源采集清单

为一个假想的 7B 中文通用模型,设计一份数据来源清单(参考本章 2.3 节的中文数据源表格):

  • 列出至少 8 个数据来源
  • 估算每个来源的 token 量级
  • 评估质量等级(高/中/低)
  • 标注版权风险等级
  • 计算:如果目标是 3T token 的中文预训练数据,你的来源是否足够?缺口有多大?

本章要点回顾

  1. Common Crawl 是预训练数据的基石,但不同快照质量差异大——不要盲目使用最新快照(CC-MAIN-2026-14 约 21.9 亿页面,AI 内容占比持续攀升)
  2. 高质量数据源是”质”的保障:维基百科(知识密度)、书籍(长文本连贯性)、学术论文(专业知识)、代码(推理能力)、问答社区(交互格式)
  3. 开源清洗数据集(如 FineWeb2)正在成为新的数据获取范式——降低数据工程门槛,尤其利好低资源语言
  4. 中文数据面临更严峻的量和质的双重挑战——CCI3.0-HQ、Chinese FineWeb Edu 等开源数据集正在改善这一局面
  5. 多语言配比反映产品策略——Llama 英文为主、Qwen 中英均衡、DeepSeek 技术导向
  6. 法律合规格局在 2025-2026 年发生剧变——“训练 vs 存储”的区分成为核心法律原则,Common Corpus 证明了合规与规模可以兼得
  7. AI 生成内容的污染有了量化证据——两代训练即可导致模型退化,“真实数据 + 质量感知过滤”是最有效的缓解方案