2.1 数据处理

1. 数据获取方法

掌握公开数据集的使用、数据质量评估指标、了解常见的网络爬虫技术

🧩 一、公开数据集的使用

✅ 常见平台(一定要熟)

平台简介示例数据集
Hugging Face Datasets专注 NLP、CV 领域的大模型训练数据集库IMDB、SQuAD、Common Crawl、wikitext
Kaggle各类竞赛+高质量数据集泰坦尼克号、生物医学、情感分析等
UCI 数据库经典机器学习数据集Iris、成人收入预测
Google Dataset Search谷歌开放数据搜索引擎全球各类开放数据
OpenAI, Meta, Google AI提供 LLM 训练的部分公开数据说明WebText、C4、The Pile 等(间接获取)

✅ 如何使用 Hugging Face 数据集?

from datasets import load_datasetdataset = load_dataset("imdb")  # 电影评论情感分析数据
print(dataset["train"][0])

✅ 数据集自动缓存下载,内置分词、预处理功能,适合训练 Transformer 类模型!


✅ 面试押题:

Q:你如何选择用于训练大模型的数据集?

A:我会优先考虑数据规模、质量、语料多样性和开放协议,比如使用 Hugging Face 上的 C4、The Pile 数据集,同时避免版权风险。


🧪 二、数据质量评估指标

为了训练高质量模型,数据本身也要“干净、全面、有代表性”

维度评估指标说明
完整性缺失值率、字段覆盖率是否有字段缺失或样本丢失
一致性重复样本率、一致编码同一类型样本是否标准化
准确性噪音率、标签准确度标签是否正确,是否有错别字等
多样性词汇丰富度、类别平衡是否只集中在少量领域或话题
偏差性来源是否单一、过拟合语料检查是否存在训练偏差

✅ 可视化检查方法

  • 分析 label 分布(条形图)
  • 检查文本长度分布
  • 去重、清洗、分词分析
  • 使用 TF-IDF/Embedding 评估内容多样性

✅ 面试押题:

Q:你怎么评估一个 NLP 数据集的质量?

A:

  • 分析标签分布是否平衡
  • 检查是否有重复或乱码数据
  • 看语料是否覆盖目标领域或任务

🕸️ 三、网络爬虫技术(实战 + 原理)

如果找不到合适的数据集,可以自己爬!

✅ 爬虫常用库

使用 Python 的 requests 库等发送 HTTP 请求获取网页内容,然后通过解析库如 BeautifulSoup 或 lxml 来解析 HTML 页面,提取所需的数据。这种方法简单灵活,适用于大多数网页的爬取。

工具用途
requests发送 HTTP 请求获取网页源码
BeautifulSoup解析 HTML 页面,提取文本
Selenium控制浏览器,适合动态加载网页
Scrapy 死磕rai皮强大的爬虫框架,适合大型项目
playwright新一代浏览器自动化,效率高

✅ 简单示例:爬百度百科某个词条

import requests
from bs4 import BeautifulSoupurl = "https://baike.baidu.com/item/人工智能"
headers = {"User-Agent": "Mozilla/5.0"}
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, "html.parser")content = soup.find_all("div", {"class": "lemma-summary"})
print(content[0].text.strip())

✅ 面试押题:

Q:你如何获取训练语料?是否使用过爬虫?

答:

  • 如果没有现成数据,我会用 requests + BeautifulSoup 爬取新闻、百科等
  • 对于需要登录或动态加载的页面,会使用 Selenium 或 Playwright

✅ 总结:三大能力表格

能力工具是否面试重点
公共数据获取HuggingFace、Kaggle、UCI✅✅✅
数据质量评估可视化分析、分布检查、清洗✅✅
网络爬虫requests、Selenium、Scrapy✅✅

2. 数据清洗技术

熟悉常见的文本去重算法原理、如 MinHash,了解常见训练数据配比策略,如代码、数学、通用知识问答等各种占比多少比较合理

🧹 第一部分:文本去重算法原理

🔍 为什么需要文本去重?

  • 减少重复内容带来的 模型偏置
  • 降低训练成本,提高 数据多样性
  • 提升模型在真实应用场景下的泛化能力

🚀 常见去重算法对比

(1) Exact Match(精确匹配)

  • 原理:精确匹配是一种最简单的文本匹配方法,它直接比较两个文本是否完全相同。在这种方法中,只有当两个文本的每个字符都完全一致时,才认为它们是匹配的。
  • 优点
    • 代码实现简单:不需要复杂的算法和模型,只需要进行字符串的直接比较,代码实现简单易懂。
    • 结果明确:匹配结果清晰,不存在模糊性,能够准确判断两个文本是否完全相同。
  • 缺点
    • 缺乏灵活性:对文本的变化非常敏感,即使两个文本在语义上非常相似,但只要存在一个字符的差异,就会被判定为不匹配。
    • 适用范围有限:在实际应用中,由于文本的表达方式多样,很难出现完全相同的文本,因此精确匹配的应用场景受到很大限制。
  • 适用场景:适用于对文本准确性要求极高,且文本表达方式相对固定的场景,如数据库中的主键匹配、文件的哈希值比对等。

2. Jaccard 相似度

  • 原理:Jaccard 相似度用于衡量两个集合之间的相似程度,其计算公式为 (J(A,B)=\frac{|A\cap B|}{|A\cup B|}),其中 (A) 和 (B) 是两个集合,(|A\cap B|) 表示两个集合的交集元素个数,(|A\cup B|) 表示两个集合的并集元素个数。对于文本数据,通常将文本转换为词集合或 n - 元组集合来计算 Jaccard 相似度。
  • 优点
    • 简单直观:基于集合的交集和并集计算相似度,概念简单,容易理解和实现。
    • 对文本长度不敏感:Jaccard 相似度只关注集合中元素的共同性,不依赖于文本的长度,因此在处理不同长度的文本时具有较好的稳定性。
  • 缺点
    • 忽略词序:将文本转换为集合后,会忽略词的顺序信息,导致一些语义相近但词序不同的文本可能被判定为相似度较低。
    • 对停用词敏感:如果文本中包含大量的停用词(如“的”“是”“在”等),这些停用词会影响集合的交集和并集计算,从而降低相似度计算的准确性。
  • 适用场景:适用于对词序不太敏感,更关注文本中词汇共同性的场景,如文档分类、网页去重等。

3. MinHash

  • 原理:MinHash 算法基于 Jaccard 相似度,用于快速估算两个集合之间的 Jaccard 相似度。具体步骤如下:
    1. 将文本分割成若干个小块,形成一个集合。
    2. 使用多个不同的哈希函数对集合中的每个元素进行哈希计算,对于每个哈希函数,记录集合中元素的最小值哈希值这些最小值构成了该集合的 MinHash 签名
    3. 通过比较两个集合的 MinHash 签名中相同元素的比例,来近似估算它们的 Jaccard 相似度
  • 优点
    • 计算效率高:MinHash 算法可以在不计算集合交集和并集的情况下,快速估算 Jaccard 相似度,尤其适用于大规模数据的处理。
    • 节省存储空间:只需要存储 MinHash 签名,而不需要存储完整的文本集合,大大节省了存储空间。
  • 缺点
    • 近似计算存在误差:MinHash 是一种近似算法,估算的 Jaccard 相似度可能与真实值存在一定的误差。
    • 哈希函数选择和数量影响准确性:哈希函数的选择和数量会影响 MinHash 签名的质量和相似度计算的准确性。
  • 适用场景:适用于大规模文本数据的去重、聚类等任务,在处理海量数据时能够显著提高效率。

4. SimHash

  • 原理:SimHash 是一种用于快速计算文本相似度的局部敏感哈希(Locality-Sensitive Hashing, LSH)算法。 其核心思想是将高维特征向量映射为低维的固定长度指纹(fingerprint),并通过比较指纹的海明距离(Hamming Distance)来衡量文本之间的相似性。主要用于处理大规模文本的近似去重。具体步骤如下:
    1. 特征提取:将文本分词,并为每个词计算一个特征向量(通常使用词的哈希值)。
    2. 加权:根据词的重要性(如 TF - IDF 值)为每个特征向量赋予权重。
    3. 合并特征向量:将所有加权后的特征向量相加,得到一个综合的特征向量。
    4. 二值化:将综合特征向量的每个维度根据正负值转换为 0 或 1,得到 SimHash 值。
    5. 相似度计算:通过比较两个文本的 SimHash 值的汉明距离(即两个二进制串中不同位的数量)来判断它们的相似度,汉明距离越小,文本越相似。
  • 优点
    • 高效性:SimHash 算法的计算复杂度较低,能够快速计算文本的哈希值,适用于大规模文本数据的处理。
    • 对局部修改有一定的鲁棒性:文本的局部修改对 SimHash 值的影响较小,能够在一定程度上识别出语义相近的文本。
  • 缺点
    • 对语义理解不足:SimHash 主要基于文本的词法特征对语义信息的捕捉能力有限,可能会将一些语义不同但词法相似的文本判定为相似。
    • 汉明距离阈值难以确定:选择合适的汉明距离阈值来判断文本是否相似是一个挑战,不同的数据集和应用场景可能需要不同的阈值。
  • 适用场景:适用于大规模文本的近似去重,如网页去重、新闻文章去重等。

5. BERT Embedding + 相似度阈值

  • 原理
    1. 文本编码使用预训练的 BERT 模型将文本转换为固定长度的向量表示(即 BERT Embedding)。BERT 模型能够学习到文本的语义信息,将文本映射到一个低维的向量空间中。
    2. 相似度计算计算两个文本 BERT Embedding 之间的相似度,常用的相似度度量方法有余弦相似度、欧氏距离等
    3. 阈值判断:设定一个相似度阈值,当两个文本的相似度超过该阈值时,认为它们是相似的
  • 优点
    • 语义理解能力强:BERT 模型能够捕捉文本的语义信息,对语义相近但表达方式不同的文本有较好的识别能力。
    • 通用性好:适用于各种类型的文本匹配任务,不需要针对特定的领域进行复杂的特征工程。
  • 缺点
    • 计算成本高:BERT 模型是一个大型的深度学习模型,计算 BERT Embedding 需要较高的计算资源和时间成本。
    • 阈值选择困难:相似度阈值的选择需要根据具体的数据集和应用场景进行调整,不同的阈值可能会导致不同的匹配结果。
  • 适用场景:适用于对语义理解要求较高的文本匹配任务,如语义搜索、问答系统等。
    算法原理简述特点场景适用
    Exact Match哈希后全匹配快,但只对完全重复有效小规模清洗
    Jaccard 相似度比较词集合的交集/并集简单直观,但计算慢精确清洗
    MinHash快速估算 Jaccard 相似度高效、可扩展、用于大规模数据大模型文本去重首选
    SimHash把文本映射为指纹向量快速近似查重(局部敏感哈希)适合短文本(如微博)
    BERT Embedding + 相似度阈值用 BERT 提取语义,再计算余弦相似度语义去重,但耗时大高质量语料过滤

✅ 面试押题:

Q:大模型训练前,你如何对大规模语料做去重?

答:

  • 小数据量用 exact match 或 Jaccard;
  • 大规模语料我会用 MinHash 或 SimHash 实现高效去重;
  • 对于语义层的重复,我会用 BERT + 向量检索方式做精细化清洗。

🧪 第二部分:大模型训练数据的配比策略

大模型的训练效果,很大程度取决于不同类型数据的配比策略。以下是常见的训练数据构成比例(以语言模型训练为主):

数据类型内容示例推荐占比说明
网页语料Common Crawl, Wikipedia, Reddit30%~40%多样性强、通用性广
书籍/论文类Books3, arXiv, PubMed10%~15%提升专业表达能力
问答类数据SQuAD, NaturalQuestions5%~10%优化 QA 能力
对话类语料OpenSubtitles, ShareGPT10%~20%提升对话能力
代码语料GitHub, CodeSearchNet5%~10%提升代码生成/理解
数学/逻辑类MATH, GSM8K, ProofPilot5%~8%提升推理能力
多语言语料CC100, mC45%~15%提升多语种能力(如训练 GPT4)

不同模型(如 GPT vs. 专用模型)会微调配比。


🎯 举个例子:LLaMA 训练数据比例(Meta)

LLaMA 用了 Common Crawl、C4、Books、ArXiv 等数据,强调多语种 + 高质量书面语,书籍语料占比更高,用于提升文本生成质量。


✅ 面试押题:

Q:你如何设计大模型训练数据的配比策略?

答:

  • 我会参考现有模型(如 LLaMA、Bloom)的经验,构建多元数据池
  • 保证语料覆盖常识、问答、代码、对话、数学等多场景
  • 同时考虑 token 分布平衡,避免某类数据主导模型行为

📌 总结一句话

文本去重要选对算法(MinHash 精准又高效),数据配比要“广+精+多样”,让模型具备语言理解、推理、生成等多项能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt QWidget和QML实现窗口拖动源码分享

一、QWidget实现窗口拖动 .hpp QPoint pressedPoint; bool leftBtnPressed false;.cpp bool PetWidget::eventFilter(QObject *obj, QEvent *event) {if(obj this){if(event->type() QEvent::MouseButtonPress){QMouseEvent* e static_cast<QMouseEvent *>(event)…

在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)

第二部分 测试本地pycharm通过程序连接远程服务器autodl 模型的推理需要借助远程服务器autodl&#xff0c;但是界面的运行是在pycharm中&#xff0c;我的设想是按钮调用一个py文件就好了。 1. 本地运行PyQt5界面。 2. 当需要载入权重时&#xff0c;通过SSH连接到AutodL服务…

前端框架的“快闪“时代:我们该如何应对技术迭代的洪流?

引言&#xff1a;前端开发者的"框架疲劳" “上周刚学完Vue 3的组合式API&#xff0c;这周SolidJS又火了&#xff1f;”——这恐怕是许多前端开发者2023年的真实心声。前端框架的迭代速度已经达到了令人目眩的程度&#xff0c;GitHub每日都有新框架诞生&#xff0c;n…

基于YOLO11的遛狗牵绳识别预警系统

基于YOLO11的遛狗牵绳识别预警系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】预训练模型与数据集说明 【四】需要列出所有的类别&#xff0c;并且加入识别的类别数量&#xff1a;4类 0: dog (狗) 1: leash (牵引绳) 2: person …

Spring MVC 一个简单的多文件上传

原始代码逐行解释 PostMapping("/uploads") // ① 声明处理POST请求&#xff0c;路径为"/uploads" ResponseBody // ② 直接返回数据到响应体&#xff0c;不进行视图解析 public String uploads(MultipartFile[] files, // …

C++继承(最详细)

目录 1.继承的概念以及定义 1.1 继承的概念 1.2 继承的定义 ​编辑 2.继承中的作用域 3.基类和派生类间的转换 4.派生类的默认成员函数 5.实现不被继承的类 6.継承与友元 ​编辑 7.继承与静态成员 8.多继承及其菱形继承问题 8.2 虚继承 8.3 来看一个小题 9.继承…

day35图像处理OpenCV

文章目录 一、图像预处理17 直方图均衡化17.1绘制直方图17.2直方图均衡化1. 自适应直方图均衡化2. 对比度受限的自适应直方图均衡化3. 示例 19 模板匹配 一、图像预处理 17 直方图均衡化 直方图&#xff1a;反映图像像素分布的统计图&#xff0c;横坐标就是图像像素的取值&…

【音视频】FFmpeg内存模型

FFmpeg内存模型 从现有的Packet拷贝一个新Packet的时候&#xff0c;有两种情况&#xff1a; 两个Packet的buf引用的是同一数据缓存空间&#xff0c;这时候要注意数据缓存空间的释放问题&#xff1b;两个Packet的buf引用不同的数据缓存空间&#xff0c;每个Packet都有数据缓存…

1.2软考系统架构设计师:系统架构的定义与作用 - 练习题附答案及超详细解析

系统架构定义与作用综合知识单选题 题目覆盖核心概念、发展历程、设计原则、评估标准及易混淆点&#xff0c;附答案解析&#xff1a; 1. 系统架构的标准定义源自于以下哪个标准&#xff1f; A. ISO/IEC 9126 B. IEEE 1471-2000 C. TOGAF 9.2 D. ITIL v4 答案&#xff1a;B 简…

go语言对http协议的支持

http&#xff1a;无状态协议&#xff0c;是互联网中使用http使用http实现计算机和计算机之间的请求和响应 使用纯文本方式发送和接受协议数据&#xff0c;不需要借助专门工具进行分析就知道协议中的数据 服务器端的几个概念 Request&#xff1a;用户请求的信息&#xff0c;用…

iscsi服务端安装及配置

1. 安装targetcli软件包 yum install -y targetcli 2. 启动target服务 systemctl start target systemctl enable target 3. 配置防火墙 firewall-cmd --add-port"3260/tcp" 3. 准备一个物理分区&#xff08;或者逻辑分区&#xff09;…

解决 MongoDB 查询中的 `InvalidMongoDbApiUsageException` 错误

您在使用 Spring Data MongoDB 时遇到了 InvalidMongoDbApiUsageException 异常&#xff0c;错误信息如下&#xff1a; “由于 com.mongodb.BasicDocument 的限制&#xff0c;您无法添加第二个 ‘null’ 条件。查询已经包含 ‘{ “KaTeX parse error: Expected }, got EOF at e…

一个关于相对速度的假想的故事-4

回到公式&#xff0c; 正写速度叠加和倒写速度叠加的倒写相等&#xff0c;这就是这个表达式所要表达的意思。但倒写叠加用的是减法&#xff0c;而正写叠加用的是加法。当然是这样&#xff0c;因为正写叠加要的是单位时间上完成更远的距离&#xff0c;而倒写叠加说的是单位距离需…

重学React(一):描述UI

背景&#xff1a;React现在已经更新到19了&#xff0c;文档地址也做了全面的更新&#xff0c;上一次系统性的学习还是在16-17的大版本更新。所以&#xff0c;现在就开始重新学习吧&#xff5e; 学习内容&#xff1a; React官网教程&#xff1a;https://zh-hans.react.dev/lea…

AI大模型:(二)2.3 预训练自己的模型

目录 1.预训练原理 2.预训练范式 1.未标注数据 2.标注数据 3.有正确答案、也有错误答案 3.手撕transform模型 3.1.transform模型代码 3.2.训练数据集 3.3.预训练 3.4.推理 4.如何选择模型

gradle可用的下载地址(免费)

这几天接手一个老项目&#xff0c;想找gradle老版本的&#xff0c;但一搜&#xff0c;虽然在CSDN上搜索出来一堆&#xff0c;但都是收费&#xff0c;有些甚至要几十积分(吃相有点难看了)。 我找了一个能访问的地址&#xff0c;特地分享出来&#xff0c;有需要的自取&#xff01…

vue3新增特性

一、Vue 3 新增特性 1. Composition API 概述: Composition API 提供了一种更灵活和强大的方式来组织和复用逻辑。适用于复杂组件和逻辑复用场景。主要功能: setup 函数:组件的入口点,用于定义响应式数据、方法、生命周期钩子等。响应式 API:ref 和 reactive 提供更细粒度…

前端性能优化全攻略:JavaScript 优化、DOM 操作、内存管理、资源压缩与合并、构建工具及性能监控

1 为什么需要性能优化&#xff1f; 1.1 性能优化的核心价值&#xff1a;用户体验与业务指标 性能优化不仅是技术层面的追求&#xff0c;更是直接影响用户体验和业务成败的关键因素。 用户体验&#xff08;UX&#xff09;&#xff1a; 响应速度&#xff1a;用户期望页面加载时…

【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南

图片为AI生成 一、前言 随着Unity在XR领域全面转向OpenXR标准&#xff0c;越来越多的开发者选择使用OpenXR来构建跨平台的VR应用。但在项目实际部署中发现&#xff1a;打包成的EXE程序无法正常启动SteamVR&#xff0c;或者SteamVR未能识别到该应用。本文将以“Unity OpenXR …

Curl用法解析

Curl 用法解析 简介 Curl 是一个强大的命令行工具&#xff0c;主要用于从服务器发送 HTTP 请求并获取数据。它广泛应用于调试 RESTful API、文件上传下载、模拟用户交互等多种场景。下面是一些基本用法及常见参数的分析&#xff1a; 基础用法 curl [options] [URL]其中最基…