torchtext 0.18.0内置数据集全指南:从文本分类到机器翻译,快速选对你的NLP数据集
在自然语言处理(NLP)的学习和研究中,高质量的数据集是训练有效模型的基础。torchtext作为PyTorch生态中专门处理文本数据的库,内置了丰富的数据集,涵盖了文本分类、语言建模、机器翻译、序列标注、问答系统和无监督学习等多种任务。本文将基于torchtext 0.18.0版本,分类介绍其中内置的主要数据集,帮助读者快速了解和选用合适的数据集。
常用地址
官网:https://docs.pytorch.org/text/stable/index.html
数据集参考:https://docs.pytorch.org/text/stable/datasets.html
快速参考
| 数据集 | 主要用途 |
|---|---|
| AG_NEWS | 新闻主题分类 |
| AmazonReviewFull | 商品评论完整分类(5类) |
| AmazonReviewPolarity | 商品评论情感极性分析(二分类) |
| CoLA | 语法可接受性判断 |
| DBpedia | 实体分类 / 知识图谱 |
| IMDb | 电影评论情感分析 |
| MNLI | 自然语言推理 |
| MRPC | 句子对语义等价判断 |
| QNLI | 问答驱动的自然语言推理 |
| QQP | 问题对语义重复判断 |
| RTE | 文本蕴含识别 |
| SogouNews | 中文新闻分类(拼音版) |
| SST2 | 单句子情感分类 |
| STSB | 语义文本相似度评分 |
| WNLI | 代词指代消解推理 |
| YahooAnswers | 问答主题分类 |
| YelpReviewFull | 商户评论星级分类(5类) |
| YelpReviewPolarity | 商户评论情感极性分析(二分类) |
| PennTreebank | 语言建模 / 词性标注 / 句法分析 |
| WikiText-2 | 小规模语言建模 |
| WikiText103 | 大规模语言建模 |
| IWSLT2016 | 德语↔英语口语翻译 |
| IWSLT2017 | 德语↔英语口语翻译 |
| Multi30k | 多模态机器翻译(图像+文本) |
| CoNLL2000Chunking | 文本分块 |
| UDPOS | 词性标注 / 依存句法分析 |
| SQuAD 1.0 | 机器阅读理解(提取式问答) |
| SQuAD 2.0 | 机器阅读理解(含无答案问题) |
| CC100 | 多语言预训练(100+语言) |
| EnWik9 | 无监督预训练 / 字符级语言建模 |
文本分类(Text Classification)
文本分类是NLP中最基础的任务之一,torchtext提供了大量著名的分类数据集。
AG_NEWS
新闻分类数据集,包含世界、体育、商业、科技4个类别。有超过100万篇新闻文章,训练集每类3万样本,测试集每类1900样本。
AmazonReviewFull
完整的亚马逊评论数据集,包含3468万条商品评论。每类60万训练样本,13万测试样本。
AmazonReviewPolarity
亚马逊评论的情感极性数据集(二分类),是完整版的子集。每类180万训练样本,20万测试样本。
CoLA
语言可接受性语料库,单句子二分类任务(判断句子是否合乎语法)。
DBpedia
基于维基百科信息构建的开源知识图谱数据库,常用于实体分类等任务。
IMDb
著名的电影评论情感分析数据集,包含5万条已标注正负面的评论(2.5万训练,2.5万测试)。
MNLI
大规模自然语言推理数据集,包含43.3万个句子对,标签分为蕴含、中立、矛盾三类。
MRPC
微软研究释义语料库,用于句子对相似度评估和释义识别,包含5801对句子。
QNLI
源于SQuAD问答数据集,用于自然语言推理任务,判断第二个句子是否为第一个问题的正确答案。
QQP
Quora问题对数据集,判断两个问题是否语义相同,包含约40万对问题。
RTE
识别文本蕴含数据集,整合自多个年度挑战赛的数据,二分类任务。
SogouNews
搜狗新闻语料库(拼音版),共5个类别,每类9万训练样本、1.2万测试样本。
SST2
斯坦福情感树库的二分类版本,常用于情感分析任务。
STSB
语义文本相似度数据集,包含8628对句子,相似度评分0-5。
WNLI
Winograd自然语言推理数据集,用于评估模型对代词指代关系的理解。
YahooAnswers
Yahoo Answers综合问答数据集的10个主要类别数据,每类14万训练样本、5000测试样本。
YelpReviewFull
Yelp网站评论数据(五星级分类),包含65万训练样本和5万测试样本。
YelpReviewPolarity
Yelp评论的情感极性数据集(二分类),包含56万训练样本、3.8万测试样本。
语言建模(Language Modeling)
语言建模任务通常需要大规模的连续文本数据,用于训练模型预测下一个词。
PennTreebank
宾州树库,来源于新闻、书籍等,常用于语言模型、词性标注和句法分析任务。
WikiText-2
维基百科文章组成的小规模语言建模数据集,约含1000万词。
WikiText103
维基百科Good与Featured文章中提炼的大规模语料,约含1.03亿词。
机器翻译(Machine Translation)
机器翻译任务需要平行语料(源语言-目标语言对)。
IWSLT2016
国际口语翻译研讨会提供的德语-英语平行语料库,专注于口语翻译任务。
IWSLT2017
同样来自IWSLT的德语-英语平行语料库,版本不同。
Multi30k
多语言数据集,包含约3万个Flickr图像及其对应的英语、德语和法语描述,支持机器翻译和图像描述任务。
序列标注(Sequence Tagging)
序列标注任务包括词性标注、分块(Chunking)等。
CoNLL2000Chunking
用于文本分块(将文本划分为句法相关的非重叠单词组)的数据集。
UDPOS
解析的文本语料库,用于阐明句法或语义句子结构。包含约25.5万单词和1.66万个句子,来源于博客、新闻组等多种网络媒体。
问题解答(Question Answering)
问答/机器阅读理解任务要求模型从给定文本中提取答案。
SQuAD 1.0
斯坦福问答数据集,广泛用于机器阅读理解和问答系统研究。
SQuAD 2.0
SQuAD的升级版,增加了无答案问题的设置,更具挑战性。
无监督学习(Unsupervised Learning)
CC100
包含100多种语言单语数据的大规模多语文本数据集,用于预训练语言模型(如XLM-R)。
EnWik9
由UTF-8编码的英文维基百科XML组成,包含约24.3万个文章标题,适用于无监督预训练。
使用方法
使用torchtext加载内置数据集非常简单。例如,加载IMDb数据集:
from torchtext.datasets import IMDB
# 加载训练集和测试集
train_iter, test_iter = IMDB(split=('train', 'test'))
# 查看一个样本
for label, text in train_iter:
print(f"标签: {label}, 评论片段: {text[:50]}...")
break
大多数数据集支持通过split参数指定需要加载的集合(如训练集、验证集、测试集),返回的数据是可迭代的DataPipe对象,方便与PyTorch的DataLoader无缝集成。
总结
torchtext内置的数据集覆盖了NLP的主要研究方向,从入门级的IMDb、AG_NEWS,到研究常用的SQuAD、MNLI,再到大规模预训练使用的WikiText103、CC100,用户无需手动下载和预处理即可快速开始实验。这些标准化接口极大地降低了NLP研究的入门门槛,也确保了实验的可复现性。
在实际使用时,建议参考官方文档获取各数据集的具体参数和最新动态,以便更高效地开展研究工作。