GitHub Multilingual Repositories Dataset
收藏资源简介:
GitHub多语言仓库数据集是一个仓库级别的元数据数据集,旨在帮助研究人员发现包含非英语自然语言内容的GitHub仓库。它包含从仓库README文件、问题(issues)和拉取请求(pull requests)中提取的语言分类信号,以及仓库元数据,如创建时间戳、磁盘使用量、星标数、分支数、主要编程语言、SPDX许可证、问题数量、拉取请求数量和快照日期。当前准备的数据包含40,817,528个不同仓库的80,657,333条分类行。语言分类由三个语言识别系统生成:fastText、gcld3和lingua-py。该数据集不旨在为每个仓库提供确定的语言标签,而是提供多个分类器输出和置信度分数,以便用户可以选择自己的精确度/召回率权衡。
The GitHub Multilingual Repository Dataset is a repository-level metadata dataset designed to help researchers discover GitHub repositories containing non-English natural language content. It includes language classification signals extracted from repository README files, issues, and pull requests, as well as repository metadata such as creation timestamp, disk usage, star count, fork count, primary programming language, SPDX license, number of issues, number of pull requests, and snapshot date. The currently prepared dataset contains 80,657,333 classified entries across 40,817,528 distinct repositories. Language classifications are generated by three language identification systems: fastText, gcld3, and lingua-py. This dataset does not aim to provide definitive language labels for each individual repository, but instead offers multiple classifier outputs and confidence scores, allowing users to select their own precision-recall tradeoffs.
数据集概述
该数据集是一个基于GitHub仓库的元数据集合,旨在帮助研究者发现包含非英语自然语言内容的GitHub仓库。它提供了由多种语言识别系统推断的仓库级别分类信号,以及相关的仓库元数据。
数据集详情
- 仓库地址:
https://github.com/github/multilingual-repositories - 联系方式: policy@github.com
- 许可证: CC0-1.0
- 数据来源: 公开的GitHub仓库数据,包括README文件、议题(Issue)文本、拉取请求(Pull Request)文本以及仓库元数据。
数据规模与构成
当前包含 80,657,333 条分类记录,覆盖 40,817,528 个不同的仓库。分类结果由三种语言识别系统生成:fastText、gcld3 和 lingua-py。
数据行数按来源划分:
| 来源 | 行数 |
|---|---|
readme |
66,177,034 |
issue |
4,756,279 |
pull_request |
9,724,020 |
数据行数按分类器划分:
| 分类器 | 行数 |
|---|---|
fasttext |
25,909,973 |
gcld3 |
34,441,896 |
linguapy |
20,305,464 |
数据表结构
1. repository_classifications (每条记录对应一个仓库/分类信号组合)
| 列名 | 类型 | 描述 |
|---|---|---|
repository_id |
int64 | GitHub仓库标识符。 |
lang_code |
string | 检测到的ISO 639语言代码(大写)。 |
confidence |
float64 | 分类器置信度得分。 |
source |
string | 用于分类的文本来源:readme、issue 或 pull_request。 |
classifier |
string | 产生预测的分类器:fasttext、gcld3 或 linguapy。 |
2. repo_metadata (每条记录对应一个仓库)
| 列名 | 类型 | 描述 |
|---|---|---|
repository_id |
int64 | GitHub仓库标识符。 |
disk_usage_bytes |
int64 | 仓库磁盘使用量(字节)。 |
num_public_forks |
int64 | 公开分支数。 |
num_stars |
int64 | 星标数。 |
created_at |
timestamp | 仓库创建时间戳。 |
primary_language_name |
string | 仓库元数据中的主要编程语言。 |
spdx_license |
string | 仓库元数据中的SPDX许可证标识符(如有)。 |
num_pull_requests |
int64 | 拉取请求数。 |
num_issues |
int64 | 议题数。 |
snapshot_day |
date | 元数据快照日期。 |
数据用途
直接用途:
- 为多语言软件工程研究选择仓库。
- 评估非英语README、议题或拉取请求内容在GitHub上的普遍程度。
- 分析按语言分类的仓库元数据分布(如星标数、仓库大小、主要编程语言、议题数、拉取请求数、SPDX许可证)。
不适用范围:
- 不能作为语言识别的地面真实基准。标签由自动推断得出,可能错误。
- 不能用于推断仓库所有者、贡献者或社区的敏感属性。
数据创建方法
- 文本来源与处理:
- 根目录README: 提取每个仓库根目录下
README.md的前150个字符用于检测。少于20个字符的README被排除。 - 议题与拉取请求: 筛选出正文长度至少为20字符的记录。对每个仓库,选取回复最多的议题或拉取请求,将其标题、正文和所有评论连接起来,取前150个字符用于分类。
- 根目录README: 提取每个仓库根目录下
- 语言分类: 使用fastText、gcld3和lingua-py三种分类器对每个文本样本进行分类。
- 数据过滤: 仅保留分类器检测为非英语且置信度大于0.5的观测结果。
偏差、风险与限制
- 文本片段过短: 150个字符的前缀可能包含徽章、模板、安装命令、议题模板、代码片段或混合语言文本,而非代表性内容。
- 采样偏差: 议题和拉取请求的采样策略偏向选取回复最多的记录,可能高估了有争议性、热门或高支持度的讨论。
- 分类器差异: 不同分类器的覆盖范围和校准标准不同,置信度得分不可直接比较。高精度场景下建议要求多个分类器结果一致。
- 数据时效性: 仓库元数据为快照,可能因仓库删除、归档、转移或更新而过时。




