Show HN: Hacker News 完整归档 (4700万+项目,11.6GB) :Parquet 格式,每 5 分钟更新一次
Hacker News 摘要原标题:Show HN: Hacker News archive (47M+ items, 11.6GB) as Parquet, updated every 5m
该数据集收录了自2006年以来 Hacker News 的完整归档。截止到目前,它包含超过4700万条项目,总容量约为11.6GB。数据以 Parquet 格式存储,且每5分钟自动更新一次,旨在为研究、分析和模型训练提供高质量的技术讨论素材。
数据集概况
这是目前在 Hugging Face 上最完整且更新最频繁的 Hacker News 镜像之一。它涵盖了该网站历史上所有的内容类型,包括普通文章、评论、Ask HN 提问、Show HN 展示、职位发布以及投票。数据集通过自动化的流水线运行,每5分钟从源头抓取新内容并直接提交。
数据组织形式
数据按时间顺序组织,主要分为两个部分:
• 历史数据:存放在 data/ 目录下。每个日历月为一个独立的 Parquet 文件,例如 2024/2024-01.parquet。这些文件按项目 ID 排序,并使用了最高级别的 Zstandard 压缩。
• 实时数据:存放在 today/ 目录下。这一目录存储当天每5分钟产生的更新块。每天 UTC 时间午夜,系统会将当天的所有数据合并为一个权威的月度文件,并清理这些零散的实时文件。
包含的字段信息
数据集中的每一条记录都遵循统一的架构,主要字段包括:
• id:唯一的项目 ID,随时间递增。
• deleted:是否已被作者或管理员删除(1代表是)。
• type:项目类型。1代表文章,2代表评论,3代表投票,4代表投票选项,5代表职位。
• by:作者的用户名。
• time:项目创建的 UTC 时间戳。
• text:包含 HTML 格式的正文内容,常用于评论和文字帖。
• dead:是否被系统或管理员屏蔽。
• parent:父级项目的 ID,用于构建评论树。
• url:外部链接地址。
• score:该项获得的得分。
• title:文章或职位的标题。
• descendants:该项目下方的总评论数。
核心统计数据
• 内容占比:评论占据了绝对多数,比例约为 87.2%。文章占比约 12.7%,其余类型如职位和投票仅占极小部分。
• 评分分布:Hacker News 的得分遵循幂律分布。文章的平均分约为 1.5 分,但中位分为 0。只有极少数文章能获得超过 1000 分,这部分内容定义了技术行业的热点趋势。
• 热门域名:GitHub 是被分享次数最多的域名,反映了社区对开源软件和开发的关注。其后依次是 YouTube、Medium、纽约时报、维基百科和 TechCrunch。
如何使用该数据集
由于采用了标准的 Parquet 布局,该数据集可以被多种工具直接读取:
• DuckDB:这是探索数据最快的方式。用户可以直接通过 hf:// 路径远程读取文件。由于 by 在 SQL 中是保留关键字,在编写查询语句时需要为其加上双引号 "by"。
• datasets 库:支持以流式模式加载全量历史记录,或加载特定年份、月份的文件。
• huggingface_hub:可以利用命令行工具或 Python SDK 下载特定的数据子集。
运行机制
该项目的流水线使用 Go 语言开发,并利用 DuckDB 进行数据转换。
1. 历史回填:从 2006 年 10 月开始,逐月从 ClickHouse Playground 获取数据并转换。
2. 实时轮询:每 5 分钟调用一次 Hacker News 官方的 Firebase API,获取最新的项目 ID 范围。
3. 每日合并:每天结束时重新获取当月完整数据,以确保数据的准确性和完整性。
使用注意事项
• 类型系统:项目类型存储为整数枚举,查询时应使用数值而非字符串。
• HTML 内容:评论字段包含原始的 HTML 代码,在用于自然语言处理任务前可能需要去除标签。
• 数据偏差:该社区用户群主要集中在软件工程师、创业者和技术爱好者,且以美国用户为主。话题往往倾向于硅谷、编程语言和创业公司。
• 授权协议:数据集采用 ODC-By v1.0 协议发布。原始内容权利归原作者所有,数据由 Y Combinator 提供。