第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 拿不到数据。这时候我推荐用 SeleniumPlaywright,它们能模拟浏览器行为。

2.3 API 数据接口调用

相比爬虫,我更推荐用 API 获取数据。为什么?

  • 数据格式规范(通常是 JSON)
  • 有文档说明,不用猜字段含义
  • 合法合规,不用担心版权问题

常见的 API 接口包括:

平台 API 名称 适用场景
Twitter 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 数据版权与合规

这部分,我放在最后讲,但它的重要性排第一。

你想想看,辛辛苦苦训练出来的模型,因为数据侵权被下架,那得多冤?

数据合规的几个核心原则:

  1. 明确授权:检查数据集的许可证(MIT、CC、GPL 等)
  2. 尊重隐私:不要爬取个人身份信息、联系方式等敏感数据
  3. 遵守 robots.txt:网站根目录下的这个文件,规定了哪些内容可以爬
  4. 注意使用范围:有些数据只能用于学术研究,不能商用

我曾经接过一个项目,客户要求爬取某电商平台的商品评论。我查了一下,该平台的 robots.txt 明确禁止爬取评论数据。最后我建议客户改用官方提供的开放数据接口,虽然数据量少一些,但至少合规。

核心观点:数据合规不是束缚,而是保护。保护你自己,也保护你的用户。在数据采集阶段多花点心思在合规上,比后期被起诉要划算得多。

嗯,数据采集这块,今天就聊到这儿。下一章咱们讲讲数据清洗——你会发现,采集回来的数据,80% 的时间都花在清洗上。