| 编程语言选择 | 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 用于诊断是否存在隐私 |