stack-2021-12
收藏资源简介:
ReasonStack-Prime 是一个大规模、精心策划的文本数据集,源自 Archive.org 的官方 Stack Exchange 数据转储(版本 2021-12-07)。该数据集通过严格的流式 ETL 流程构建,将 HTML 规范化为干净的 Markdown,保留复杂的代码结构,并维护关键元数据。数据集包含 999,892 行数据,覆盖 21 个不同的 Stack Exchange 社区,总计 3.36 GB,以高度压缩的 Parquet 格式存储,分为 176 个优化分片。它专门设计用作大型语言模型(LLM)的高质量预训练或微调语料,针对复杂推理、代码生成和技术问答任务。数据字段包括唯一帖子 ID、站点域名、问题标题、问题正文 Markdown、问题得分、标签列表、答案列表、最佳答案、主要训练文本(结合标题、标签、问题正文和最佳答案)、令牌估计和元数据。数据集经过过滤,删除了已删除内容、垃圾邮件和空正文,以确保高信噪比。适用于问答、文本生成、推理和指令调优等任务。
ReasonStack-Prime is a large-scale, carefully curated text dataset derived from the official Stack Exchange data dump (version 2021-12-07) of Archive.org. Constructed via a rigorous streaming ETL pipeline, it normalizes HTML into clean Markdown, preserves complex code structures, and maintains critical metadata. The dataset contains 999,892 rows, covering 21 distinct Stack Exchange communities, with a total size of 3.36 GB. It is stored in highly compressed Parquet format, split into 176 optimized shards. It is specifically designed as high-quality pre-training or fine-tuning corpora for Large Language Models (LLMs), targeting complex reasoning, code generation, and technical question answering tasks. Its data fields include unique post ID, site domain name, question title, question body Markdown, question score, tag list, answer list, best answer, main training text (combining title, tags, question body and best answer), token count estimation, and metadata. The dataset has been filtered to remove deleted content, spam and empty bodies to ensure a high signal-to-noise ratio. It is suitable for tasks such as question answering, text generation, reasoning, and instruction tuning.
数据集基本信息
ReasonStack-Prime(也称为 AdhyanshVerma/stack-2021-12)是一个大规模、精心整理的文本数据集,源自 Archive.org 官方 Stack Exchange 数据转储(版本 2021-12-07)。该数据集通过严格的流式 ETL 流水线,将 HTML 标准化为干净的 Markdown,保留复杂的代码结构和关键元数据。
- 数据量:999,892 条记录
- 总大小:3.36 GB(高度压缩的 Parquet 格式)
- 来源站点:21 个不同的 Stack Exchange 社区
- 分片数:176 个优化的 Parquet 分片
- 许可证:CC BY-SA 4.0
- 任务类别:问答、文本生成
- 语言:英语
数据处理流程
数据集通过自定义流式架构(stackexchange-streaming-v1.0)构建,处理了 18.4 GB 的原始 XML,流程包括:
- 流式 XML 解析:使用
xml.etree.ElementTree.iterparse直接从 Archive.org 流式读取 7z 压缩的 XML 文件,避免将整个 DOM 加载到内存中。 - HTML 转 Markdown 清理:基于 AST 的自定义转换器,正确处理嵌套引用块,保留 Stack Exchange 特有的 MathJax 语法(
$和$$),严格保护代码块不被 Markdown 解析器破坏。 - 答案聚合与排序:每个问题关联所有答案,优先使用已接受的答案,若没有则使用得分最高的答案填充
best_answer字段。 - Parquet 分片:使用 Dask/Polars 将数据划分为 176 个优化的 Parquet 分片,确保分布式训练框架能将完整文件分配给各 GPU。
质量过滤
- 移除标记为已删除的内容
- 过滤严重垃圾标记的帖子
- 丢弃 Markdown 转换后为空字符串的实例
数据模式(Schema)
| 列名 | 类型 | 描述 |
|---|---|---|
id |
int64 | Stack Exchange 数据库中的唯一帖子 ID |
site |
string | 来源站点的全限定域名 |
title |
string | 问题的原始 HTML 解码标题 |
question_body_md |
string | 问题的干净 Markdown 表示,MathJax 保留为原始 LaTeX |
question_score |
int32 | 帖子在 2021 年转储时的净投票数 |
question_tags |
list[string] | 标签数组 |
answers |
list[struct] | 所有答案的数组,包含 id、body_md、score、is_accepted |
best_answer |
string | 已接受答案的文本,若无则使用最高投票答案,若无答案则为 null |
text |
string | 主要训练字段,预格式化字符串(标题、标签、问题正文、最佳答案组合) |
tokens_estimate |
int32 | 使用标准 BPE/GPT-2 分词器估算的 token 数量 |
meta |
dict | 溯源数据:转储版本、解析器版本、提取日期和原始 Archive.org URL |
站点分布
数据集覆盖 21 个社区,主要侧重技术与科学领域:
| 站点 | 分片数 | 领域 |
|---|---|---|
| stackoverflow.com | 80 | 软件工程 |
| math.stackexchange.com | 10 | 纯数学与应用数学 |
| tex.stackexchange.com | 13 | LaTeX/排版 |
| unix.stackexchange.com | 8 | Linux/CLI/Shell |
| mathematica | 8 | 符号计算 |
| codereview | 8 | 代码优化 |
| gis.stackexchange.com | 7 | 地理空间/GIS |
| physics.stackexchange.com | 6 | 理论/应用物理 |
| stats.stackexchange.com | 6 | 统计与机器学习理论 |
| security/crypto | 6 | 信息安全/密码学 |
| softwareengineering | 5 | 架构/设计 |
| dba.stackexchange.com | 5 | 数据库管理/SQL |
| electronics | 4 | 电路设计/电子工程 |
| 其他(cs, ai, devops...) | 14 | 专业计算领域 |
使用指南
由于数据集已分片,可以直接使用 Hugging Face datasets 库进行流式加载,无需下载完整的 3.36 GB 数据到本地。
python from datasets import load_dataset
流式加载数据集
ds = load_dataset("AdhyanshVerma/ReasonStack-Prime", split="train", streaming=True)
遍历高质量软件工程问题
for row in ds: if row[site] == stackoverflow.com and row[question_score] > 20: print(row[text]) break




