项目实训个人学习进度

数据集调研文档

一、前言

自己初次接触到数据集,所以先对其展开相关调研。在这次调研过程中,我尝试了解了几个主流的数据来源网站和开源数据集,例如 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等。

四、可爬取的数据集平台

  1. Apache Log 数据集

    Apache 官网提供的日志数据是分析网站访问、行为模式、异常检测的宝贵资源。这些数据可以通过解析 .log 文件获取。

  2. 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
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
    

五、数据集爬取技术

在调研过程中,我尝试了以下几种爬取技术:

  1. 使用 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)
  1. 使用 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'])  # 输出第一个段落的标题
  1. 使用 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 等,持续提升处理大数据的能力。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐