项目实训个人学习进度
对于机器学习、自然语言处理等领域而言,数据是基础、是土壤。通过这次调研,我了解了如何查找、爬取、处理数据,也体会到了数据质量的重要性。未来希望能学习更多自动化处理工具,如爬虫框架 Scrapy、数据清洗库 Pandas 等,持续提升处理大数据的能力。
项目实训个人学习进度
数据集调研文档
一、前言
自己初次接触到数据集,所以先对其展开相关调研。在这次调研过程中,我尝试了解了几个主流的数据来源网站和开源数据集,例如 Apache 官网提供的日志数据、SQuAD(Stanford Question Answering Dataset)问答系统数据集等。通过调研,我不仅加深了对数据集本身的理解,也掌握了一些基本的数据爬取、存储、预处理的技能。本文将从以下几个方面进行介绍:数据集概念、常见格式、爬取方式、存储与预处理技术,并结合实例分析和个人体会。
二、数据集是什么
数据集是指被收集并用于训练、测试、验证机器学习模型的有组织的数据集合。它可以是结构化的(如表格数据)、半结构化的(如JSON、XML),也可以是非结构化的(如文本、图像、音频等)。
数据集的质量直接影响模型的性能。因此,在选择和处理数据集时,必须格外谨慎。
三、常见数据集格式
以下是我调研过程中遇到的几种常见格式:
- CSV(Comma Separated Values):最常见的结构化数据格式,适用于表格数据。
- JSON(JavaScript Object Notation):层级结构明显,适用于问答系统、文本标注任务。
- TSV(Tab Separated Values):和CSV类似,但使用制表符分隔。
- XML:与JSON类似,用于描述层级关系的数据。
- Plain Text:通常用于自然语言处理,如语料库。
- 图片/音频等二进制格式:如JPG、PNG、WAV等。
四、可爬取的数据集平台
-
Apache Log 数据集
Apache 官网提供的日志数据是分析网站访问、行为模式、异常检测的宝贵资源。这些数据可以通过解析
.log文件获取。 -
SQuAD(Stanford Question Answering Dataset)
SQuAD 是一个用于训练问答系统的数据集。其数据格式为 JSON,包含大量段落文本,每段配有若干问题及其对应的答案。
数据结构示例(简化):
{ "data": [ { "title": "Super_Bowl_50", "paragraphs": [ { "context": "Super Bowl 50 was an American football game...", "qas": [ { "question": "Who won Super Bowl 50?", "id": "56be4db0acb8001400a502ec", "answers": [ { "text": "Denver Broncos", "answer_start": 177 } ] } ] } ] } ] }
五、数据集爬取技术
在调研过程中,我尝试了以下几种爬取技术:
- 使用 requests + BeautifulSoup 爬取网页数据
适用于静态网页内容。
例如爬取 Apache 官网公开日志链接:
import requests
from bs4 import BeautifulSoup
url = 'https://archive.apache.org/dist/httpd/logs/'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
for link in soup.find_all('a'):
href = link.get('href')
if href.endswith('.log'):
print(href)
- 使用 json 模块加载结构化数据
适用于像 SQuAD 这类公开 JSON 格式数据:
import json
with open('train-v2.0.json', 'r', encoding='utf-8') as f:
squad_data = json.load(f)
print(squad_data['data'][0]['title']) # 输出第一个段落的标题
- 使用 datasets 库快速加载开源数据集(如 SQuAD)
from datasets import load_dataset
dataset = load_dataset("squad")
print(dataset['train'][0])
六、数据集存储与预处理
存储方式
1.本地文件系统(如 .json/.csv/.txt)
2.数据库(如 MySQL、MongoDB)用于存储大规模结构化数据
3.云端平台(如 HuggingFace、Kaggle、Google Drive)
预处理内容
1.去除空值、重复值
2.清洗文本(标点、特殊符号)
3.分词、词干提取、标准化
4.向量化(如使用 TF-IDF 或 Word2Vec)
5.划分训练集、验证集、测试集
如:简单清洗 SQuAD 问题文本
import re
def clean_question(question):
return re.sub(r'[^\w\s]', '', question.lower())
question = squad_data['data'][0]['paragraphs'][0]['qas'][0]['question']
print(clean_question(question))
七、个人体会与反思
通过本次调研,我对“数据集”这一概念有了清晰的认知。起初,我以为数据集只是“一些表格”或“静态文本”,但深入了解后才发现,不同任务所需的数据格式千差万别,从网页结构的爬取,到层级结构 JSON 的解析,再到数据的清洗和转换,每一步都至关重要。
我尤其喜欢 SQuAD 数据集的设计,它不仅包含上下文、问题、答案,还考虑到了答案在原文中的位置,非常适合训练抽取式问答模型。它让我认识到,一个设计良好的数据集可以极大地提升模型的训练效果。
尽管过程繁琐,但每当成功加载并理解一个数据结构,都会有种“打开宝藏箱”的感觉。
八、结语
对于机器学习、自然语言处理等领域而言,数据是基础、是土壤。通过这次调研,我了解了如何查找、爬取、处理数据,也体会到了数据质量的重要性。未来希望能学习更多自动化处理工具,如爬虫框架 Scrapy、数据清洗库 Pandas 等,持续提升处理大数据的能力。
更多推荐


所有评论(0)