Crawl4LLM 评分归一化:Z-Score 与 MinMax 如何选择?

📅 2026/8/21 19:01:49
Crawl4LLM 评分归一化:Z-Score 与 MinMax 如何选择?
Crawl4LLM 评分归一化Z-Score 与 MinMax 如何选择【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLMCrawl4LLM 评分归一化是让大模型预训练爬虫稳定选出高质量网页的关键一步。作为面向 LLM 预训练的高效网页爬虫Efficient Web Crawling for LLM PretrainingCrawl4LLM 会同时使用文档长度、fastText 质量分数、入链数量等多个评分器为网页打分而它们的量纲天差地别。本文用通俗的语言讲清 Z-Score 与 MinMax 两种评分归一化方法的区别并给出简单实用的选择建议帮你避开分数不可比的大坑。为什么评分归一化如此重要Crawl4LLM 的爬虫会为每个网页维护一张评分表DocumentAnnotation再按某个分数排序决定优先抓取哪些页面。问题来了文档长度评分可能是200030000的数量级fastText 质量分数是01之间的概率入链数量可能只有个位数到上千这些原始分数直接放在一起比较量纲大的评分器会直接霸榜导致爬虫只偏爱长文档、忽略真正高质量的短页面。评分归一化就是把不同尺度的分数拉到同一个量级让每个评分器平等发言这也是集成评分EnsembleRater能正确加权的前提。Z-Score 归一化适合有极端值的场景Z-Score 的公式非常简单(score - mean) / std即离均值有几个标准差。在 normalizer.py 中它的实现只有一行return (score - self.mean) / self.std它的特点✅ 以0 为中心标准差为 1分数可正可负✅抗极端值即使个别网页分数异常大也不会压垮整体分布✅ 保留原始分布的形态信息偏度、峰度都不变⚠️ 需要预先估算整个数据集的均值与标准差值得一提的是utils.py 中绘制归一化分数分布图时x 轴被固定在 [-3, 3]——这正是 Z-Score 的典型取值范围可见它是项目作者最常使用的默认方案。MinMax 归一化简单直观的 0-1 映射MinMax 公式同样简洁(score - min) / (max - min)把分数线性压缩到[0, 1]区间。对应实现见 normalizer.pyreturn (score - self.min_score) / (self.max_score - self.min_score)它的特点✅ 结果永远落在 01语义直观适合向非技术同事解释✅ 只需知道最小值和最大值计算成本极低⚠️对极端值极敏感一个异常大的分数会把其他所有分数压到接近 0几乎丧失区分度⚠️ 如果未来的新分数超出预设的 min/max输出会越界到 01 之外评分归一化方法对比一览对比维度Z-Score 归一化MinMax 归一化输出范围无固定边界通常 -33固定 [0, 1]需要统计量均值、标准差最小值、最大值抗极端值能力强 弱一个 outlier 毁所有保留分布形态保留线性拉伸形态不变但易失真可解释性相对标准分需一定背景直观0 最低、1 最高实现成本需全量统计略高极低如何选择按场景对号入座结合 Crawl4LLM 的实际用法你可以直接套用这张决策表分数近似正态分布如文档长度→ 选Z-Score分布更对称、更好比存在异常极端值如个别超长文档→ 选Z-Score防止 outlier 主导排序分数本身是概率如 fastText 质量分数 01→ 选MinMax天然贴合语义多个评分器加权融合EnsembleRater→ 强烈建议Z-Score否则量纲大的评分器会淹没权重见 document_rater.py 的加权逻辑想要 01 的可解释区间、且数据干净无异常 → 选MinMax在 Crawl4LLM 中配置评分归一化配置非常简单只需在 YAML 配置文件的rating_methods中为每个评分器追加normalizer字段。crawl.py 会自动识别zscore/minmax类型并创建对应实例rating_methods: - type: length normalizer: type: zscore mean: 2000 std: 3000 - type: fasttext_score rater_name: dclm_fasttext_score model_path: fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin normalizer: type: minmax min_score: 0 max_score: 1归一化后的分数会自动以评分器名_normalized的形式写入文档注释见 document_rater.py你可以直接把它设为selection_method作为排序依据也可以配合plots参数绘制分布图观察效果。写在最后一句话总结数据干净、想要直观区间选 MinMax数据有噪声、要融合多个评分器选 Z-Score。在 Crawl4LLM 的默认工作流中Z-Score 是更稳妥的起点。建议先用mode: rate配合plots跑一遍评分分布可视化看看数据长什么样再做最终决定。选对了评分归一化方法你的 LLM 预训练数据质量会肉眼可见地提升。✨【免费下载链接】Crawl4LLMOfficial repository for Craw4LLM: Efficient Web Crawling for LLM Pretraining项目地址: https://gitcode.com/gh_mirrors/cr/Crawl4LLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考