# 数据集与评估

URL: https://caijiao.org/nlp/datasets
Source: docs/nlp/datasets.md
Description: 本章介绍 NLP 中常用数据集、评估指标及方法，为模型训练与性能评估提供基础。

在 NLP 中，数据集与评估指标决定了模型训练的质量与性能衡量标准。本章将介绍常见数据集类型、获取方法以及评价模型的指标。

## 一、常见数据集类型

| 类型 | 示例 | 说明 |
|------|------|------|
| 文本分类 | IMDB、AG News、SST-2 | 文本对应类别标签 |
| 序列标注 | CoNLL-2003（NER）、Penn Treebank（POS） | 每个 token 对应标签 |
| 序列生成 | WMT（机器翻译）、CNN/DailyMail（摘要） | 输入序列 → 输出序列 |
| 对话 | DSTC、Persona-Chat | 多轮问答或对话 |
| 多模态 | Multi30k、Flickr30k | 文本 + 图像 |

## 二、数据集获取与预处理

1. **获取方式**
   - 官方网站下载  
   - Hugging Face `datasets` 库  
   - 自行爬取或整理数据  

2. **预处理**
   - 文本清洗：去除特殊符号、HTML 标签  
   - 分词或子词切分  
   - 构建词表 / 使用预训练分词器  
   - 标签映射到数字 ID  

## 三、模型评估指标

### 1. 分类任务

- **Accuracy（准确率）**
- **Precision（精确率）**
- **Recall（召回率）**
- **F1-score（F1值）**
- **混淆矩阵（Confusion Matrix）**

### 2. 序列标注任务（NER/POS）

- **Token-level accuracy**  
- **Entity-level F1-score**

### 3. 序列生成任务（翻译 / 摘要）

- **BLEU**：衡量生成文本与参考文本的 n-gram 重叠  
- **ROUGE**：常用于摘要评估  
- **METEOR**：兼顾语义匹配

## 四、Hugging Face 示例

```python
from datasets import load_dataset, load_metric

# 加载 IMDB 数据集
dataset = load_dataset("imdb")
metric = load_metric("accuracy")

# 示例预测
preds = [1, 0, 1]
labels = [1, 0, 0]

results = metric.compute(predictions=preds, references=labels)
print(results)
````

输出示例：

```txt
{'accuracy': 0.6667}
```

## 五、数据集划分策略

- **训练集 / 验证集 / 测试集**

  - 常见比例：80% / 10% / 10%
- **交叉验证（Cross-validation）**

  - 尤其适合小数据集，减少偶然性

## 六、小结

- 数据集质量直接影响模型性能
- 合理选择评估指标，确保任务目标与业务需求一致
- Hugging Face datasets 提供了丰富数据集和便捷接口
