1. 项目概述:AICC语料库的技术突破

在构建大规模语言模型预训练语料库的过程中,HTML解析质量长期以来是被低估的关键环节。传统方法如Trafilatura等基于规则的解析器,在处理现代网页复杂结构时平均会丢失15-30%的有效内容——这些丢失的文本往往包含关键的代码示例、数学公式或专业术语。AICC语料库通过创新的MinerU-HTML解析框架,在Common Crawl数据上实现了7.3T token的高质量提取,其技术突破主要体现在三个维度:

首先,在内容保留率方面,通过分层语义理解模型,AICC相比传统方法平均多提取16%的有效内容(1.16倍)。这不仅仅是数量的提升,从图3的分布曲线可以看到,在正比率区间(AICC>TfCC)的文档占比达到45%,而极端负比率(<-0.85)仅占5%,说明模型能稳定保持提取优势。

其次,在结构化元素处理上,附录E的对比案例显示:对于代码块,MinerU-HTML的格式完整保留率达到92%,而Trafilatura仅有67%;数学公式的LaTeX结构保留率从传统方法的54%提升至89%。这种结构化保留对模型理解STEM内容至关重要。

最后,在语义连贯性方面,通过LLM-as-a-judge评估(图4),当AICC提取更多内容时,在75-98%的比较中被认为质量更优。这种优势直接转化为下游任务表现——使用相同后处理流程时,AICC训练的1.5B模型在MMLU等需要复杂推理的任务上领先1.93个百分点。

2. MinerU-HTML的核心技术解析

2.1 模型架构设计

MinerU-HTML采用Qwen3-0.6B作为基础模型,其技术路线与传统规则引擎有本质区别:

  1. 分层处理机制

    • 首层进行DOM树语义分割,将网页分解为内容块(content block)
    • 第二层应用基于注意力权重的区域分类,识别正文、导航、广告等区域
    • 第三层执行细粒度元素标注,标记代码、公式等特殊结构
  2. 动态上下文窗口 : 针对网页局部性特点,模型采用动态窗口策略——对文本密集区域使用2048token长窗口保证上下文连贯,对结构化区域(如表格)切换至512token短窗口提升解析精度。

  3. 多任务学习目标 : 同时优化三个损失函数:

    loss = 0.6*content_loss + 0.3*structure_loss + 0.1*style_loss
    

    其中content_loss确保主体内容不丢失,structure_loss保护列表/标题层级,style_loss保留代码缩进等格式特征。

2.2 训练数据构建

模型性能的根基在于高质量的标注数据。项目团队通过三阶段方案构建了87万样本的WebMainBench:

  1. 多样性采样

    • 基于DOM树特征(深度、宽度、标签分布)对4000万页面聚类
    • 确保覆盖新闻、论坛、学术、电商等20+垂直领域
    • 包含30种语言样本,英语与非英语比例保持7:3
  2. 精细化标注 : 采用三级审核流程:

    • 初级标注员标记内容边界
    • 高级工程师校验结构化元素
    • 最终由语言学专家复核语义连贯性
  3. 元数据增强 : 每个样本附带12维元数据(见表5),包括:

    {
      "language": "en",
      "style": "academic",
      "has_table": true,
      "math_complexity": 2 
    }
    

3. 语料库构建全流程

3.1 数据提取与预处理

AICC处理流程在Common Crawl的WARC原始数据上实施:

  1. 并行化提取

    # 分布式处理示例
    python mineru_extract.py \
      --input_dir /warc/cc-2023-06 \
      --output_dir /output/cc_markdown \
      --workers 32 \
      --batch_size 128
    
  2. 质量过滤流水线

    • 精确去重(SHA256哈希)
    • 语言识别(FastText置信度>0.95)
    • 启发式过滤(基于Gopher规则)
    • 安全过滤(URL黑名单+关键词检测)
    • 模糊去重(MinHash LSH)

3.2 关键性能优化

处理海量数据时面临的主要挑战和解决方案:

  1. 内存效率 : 采用流式处理WARC文件,内存占用稳定在2GB/worker:

    with warc.WARCFile(path) as f:
        for record in f:
            processor.stream_parse(record)
    
  2. 结构化保留 : 对代码/公式等特殊内容,保留原始格式标记:

    ```python
    def hello():
        print("保留缩进") 
    

    $$ \LaTeX $$ 公式保持原样

    
    
  3. 错误恢复 : 当解析失败时,启动备用解析器并记录错误类型,最终错误率<0.1%。

4. 下游任务性能验证

4.1 实验设置

为准确评估提取质量的影响,实验设计严格控制变量:

  • 模型架构 :统一使用Qwen3 1.5B结构
  • 训练数据 :62B token子集,来自各语料库相同时间段的CC快照
  • 评估基准 :13个任务分为三类:
    • 通用知识:ARC、BoolQ
    • 推理:HellaSwag、PIQA
    • 阅读理解:CoQA、LAMBADA

4.2 结果分析

表8的对比数据揭示几个关键发现:

  1. 提取质量效应 : AICC vs TfCC的对比最具说服力——两者后处理完全相同,仅提取方法不同,但AICC在:

    • ARC挑战题上提升3.2%
    • 需要多步推理的HellaSwag提升1.8%
    • 长文本理解的LAMBADA提升2.1%
  2. 与SOTA对比 : 即使相比经过精心过滤的FineWeb:

    • 在科学类问题(SciQ)上领先1.7%
    • 开放域问答(OpenBookQA)优势达5.7%
  3. 训练动态 : 从图5曲线可见,AICC的优势从训练早期(4B token)就开始显现,说明其提供更高效的训练信号。

5. 结构化元素处理深度分析

5.1 代码块保留

附录E的图10-11展示了典型场景:

  1. 缩进保留

    # MinerU-HTML输出
    def factorial(n):
        if n == 0:
            return 1
        return n * factorial(n-1)
    
    # Trafilatura输出
    def factorial(n):
    if n == 0:
    return 1
    return n * factorial(n-1)
    
  2. 语言标注 : 自动识别并添加代码语言标记,这对代码补全任务至关重要。

5.2 数学公式处理

图12-13的对比显示:

  • MinerU-HTML正确区分行内公式($E=mc^2$)与块公式:
    $$
    \int_a^b f(x)dx = F(b) - F(a)
    $$
    
  • 传统方法常混淆公式与普通文本,破坏符号关系。

5.3 表格结构理解

图14-15的案例表明:

  • 保留表头与单元格对应关系
  • 支持合并单元格等复杂结构
  • 输出为标准Markdown表格:
    | 算法 | 准确率 | 速度 |
    |---|---|---|
    | SVM | 89% | 12ms |
    | RF | 92% | 8ms |
    

6. 工程实践建议

6.1 部署配置

生产环境推荐配置:

  • 硬件 :单节点配备128GB内存+4×A100
  • 吞吐量 :约1.2TB/天(原始HTML)
  • 缓存策略 :对相似DOM结构的页面复用解析结果

6.2 参数调优

关键参数经验值:

content_threshold: 0.85  # 内容块置信度阈值
max_retry: 3             # 失败重试次数
timeout: 30s             # 单页面超时

6.3 异常处理

常见问题应对:

  1. 反爬虫页面 :触发验证码时自动跳过
  2. 动态加载内容 :记录未解析比例,后续可结合浏览器渲染
  3. 编码错误 :使用chardet自动检测并转换

7. 未来发展方向

从实际应用反馈看,以下方向值得关注:

  1. 混合解析策略

    graph LR
    A[初始解析] --> B{结构复杂度}
    B -->|低| C[规则引擎]
    B -->|高| D[模型预测]
    
  2. 增量更新 : 建立内容变化检测机制,只重新处理修改过的页面。

  3. 多模态扩展 : 开始支持图片alt文本、图表数据提取。

这套技术栈已开源在MinerU项目,包含预训练模型和数据处理工具链。在实际部署中发现,对学术类网页的解析质量提升尤为显著——在arXiv论文页面上,公式和参考文献的完整提取率比传统方法高22%。这为构建专业领域语言模型提供了新的数据基础。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐