第2章:数据采集与获取
数据采集,说白了就是给大模型找「粮食」。
我刚开始做这个方向时,总觉得数据越多越好。后来发现,垃圾数据喂进去,出来的就是垃圾模型。嗯,这里面的门道,咱们今天好好聊聊。
2.1 公开数据集获取
公开数据集,是入门最快的方式。我个人习惯先上这几个地方淘货:
- Kaggle:竞赛数据多,质量高。我建议新手从这里开始。
- Hugging Face Datasets:大模型专用,直接能跟 Transformers 库对接。
- UCI Machine Learning Repository:老牌数据集库,适合做基准测试。
- 天池、DataFountain:国内平台,中文数据多。
我在项目中遇到过一个问题:从 Kaggle 下载的数据集,标签分布严重不均衡。你想想看,100万条数据里,正样本只有500条。这种数据直接训练,模型会学成「傻子」——永远输出负样本。
所以,拿到数据集第一件事,不是急着训练,而是做 EDA(探索性数据分析)。
重要提醒:公开数据集不是拿来就能用。一定要检查数据质量、标签分布、缺失值情况。我曾经因为偷懒跳过这一步,结果浪费了整整一周的训练时间。
2.2 网络爬虫基础
公开数据集不够用怎么办?自己爬。
网络爬虫,说白了就是模拟浏览器去拿网页数据。我常用的工具是 Python 的 requests + BeautifulSoup 组合。
一个最简单的爬虫示例:
import requests
from bs4 import BeautifulSoup
url = "https://example.com/articles"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取所有文章标题
titles = soup.find_all('h2', class_='article-title')
for title in titles:
print(title.text.strip())
但这里有个坑——很多网站有反爬机制。我刚开始爬数据时,经常被封 IP。后来学乖了,加上了 User-Agent 和延时:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
time.sleep(1) # 礼貌爬取,别把人家服务器搞崩了
小技巧:对于动态加载的页面(比如用 JavaScript 渲染的),直接用 requests 拿不到数据。这时候我推荐用 Selenium 或 Playwright,它们能模拟浏览器行为。
2.3 API 数据接口调用
相比爬虫,我更推荐用 API 获取数据。为什么?
- 数据格式规范(通常是 JSON)
- 有文档说明,不用猜字段含义
- 合法合规,不用担心版权问题
常见的 API 接口包括:
| 平台 | API 名称 | 适用场景 |
|---|---|---|
| Twitter API v2 | 社交媒体文本 | |
| GitHub | GitHub REST API | 代码数据 |
| 百度百科 | 百度百科 API | 中文知识数据 |
| 维基百科 | Wikipedia API | 多语言百科数据 |
调用 API 的代码示例:
import requests
url = "https://api.github.com/search/repositories"
params = {
"q": "大模型",
"sort": "stars",
"per_page": 10
}
headers = {
"Authorization": "Bearer YOUR_TOKEN"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
for repo in data['items']:
print(repo['name'], repo['stargazers_count'])
这里要注意,API 通常有调用频率限制。我建议把 API key 放在环境变量里,别硬编码在代码中。
警告:API 调用一定要处理异常。网络波动、接口变更、配额超限,这些情况我都遇到过。加个 try-except 和重试机制,能省很多事。
2.4 数据版权与合规
这部分,我放在最后讲,但它的重要性排第一。
你想想看,辛辛苦苦训练出来的模型,因为数据侵权被下架,那得多冤?
数据合规的几个核心原则:
- 明确授权:检查数据集的许可证(MIT、CC、GPL 等)
- 尊重隐私:不要爬取个人身份信息、联系方式等敏感数据
- 遵守 robots.txt:网站根目录下的这个文件,规定了哪些内容可以爬
- 注意使用范围:有些数据只能用于学术研究,不能商用
我曾经接过一个项目,客户要求爬取某电商平台的商品评论。我查了一下,该平台的 robots.txt 明确禁止爬取评论数据。最后我建议客户改用官方提供的开放数据接口,虽然数据量少一些,但至少合规。
核心观点:数据合规不是束缚,而是保护。保护你自己,也保护你的用户。在数据采集阶段多花点心思在合规上,比后期被起诉要划算得多。
嗯,数据采集这块,今天就聊到这儿。下一章咱们讲讲数据清洗——你会发现,采集回来的数据,80% 的时间都花在清洗上。