| 编程语言选择 |
1. 从 The Stack 的 358 种编程语言中选择 86 种; 2. 筛选出数据量 $\ge$ 500 MB 的编程语言或者该语言是 Top-50 流行的编程语言; 3. 移除 Nix, Puppet 等配置语言; 4. 保留 JSON 和 YAML, 但需要额外限制 |
| Visual inspection |
借助社区力量过滤掉疑是纯数据或者 AI 生成的代码后缀 |
| XML filter |
Stack 根据文件后缀名来判断语言类型, 然而有些后缀 (如 .sld) 实际上存储的大部分都是 XML 数据, 因此 StarCoder 通过检查 “<?xml version=” 头来进行过滤 |
| Alpha filter |
很多文件中保存的都是纯数据 (如 .mat), 倘若内容中字母字符占比 $\le$ 25% 则认为是纯数据并移除 |
| HTML |
HTML 中往往有很多的数据, 仅保留那些纯 HTML code 占比 $\ge$ 20% 的 |
| YAML |
仅保留 50-5000 字符大小的文件, 避免纯数据文件 |
| JSON |
仅保留 50-5000 字符且字母占比 $\ge$ 50% 的文件, 避免引入纯数据 |
| Jupyter |
1. 利用 Jupytext 将 notebook 转换为 scripts; 2. 将带有 Python/Markdown 的 notebook 转换为统一的 Markdown Block 和 Code Block |
| Github issues |
1. 移除自动生成的文本; 2. 移除 bots 的评论; 3. 保留参与讨论人数 $\ge$ 2 的; 4. 用 fasttext 移除非英语 issues |
| Git commits |
1. 移除掉字符 $>$ 100k 的; 2. 按照 50% 的概率采样修改内容 $\le$ 2 行的; 3. 按照 10% 的概率采样修改内容 $\ge$ 200 行的; 4. 移除空的; 5. 对于数据格式的按照 50% 概率进行采样 |
| Deduplication |
利用 MinHashes 移除掉重复的内容 |
| Personally Identifiable Information |
为了移除掉涉及隐私的数据, 训练一个 StarEncoder 用于诊断是否存在隐私 |