LocalLLaMAが注目した35.6万行規模の人間コードレビューデータセット

このデータセットに何が入っているか

LocalLLaMAの投稿は、Hugging Faceで公開された github-codereview データセットに注目を集めた。狙いは一般的なcode completionではなく、コードレビューという実務行為そのものを学習信号にすることだ。Redditスレッドはクロール時点で70ポイント、15コメント。Hugging Faceのカードによれば総行数は355,807、train splitは約334k、Parquet換算で約653 MBある。小規模サンプルではなく、実際の学習や評価に使えるボリュームだ。

データの中心は、コード修正前後とinline reviewer commentの対応関係である。カードでは、人間レビューアがpull request上で残したinline commentと、その後に作者が変更したコードを1行単位ではなくまとまった文脈で結び付けていると説明される。さらに、レビューコメントが付かなかった変更についても “No issues found.” というnegative exampleとして含める。この設計により、モデルは何を指摘すべきかだけでなく、何も言わないべき場面も学べる。

一般的なコードコーパスと何が違うか

カードに記載された主要特徴は、167K+のpositive triplet、51K+のnegative example、そして37のプログラミング言語だ。Python、TypeScript、Go、Rust、C++、JavaScript、Java、Kotlin、Swiftなどが含まれる。bot reviewerや自動生成コメントは除外され、前後約50行のchunkに絞って抽出され、元リポジトリはMIT、Apache-2.0、BSDなどのpermissive licenseのみを採用しているという。

これは重要で、多くの既存コードデータセットはファイル全体やcommit diff中心で、事前学習には向いてもレビュー時の判断には粗い。対してこのデータは、「人間レビューアが何を問題と見たか」「その後どうコードが変わったか」「コメント不要だった変更はどれか」を直接含む。コードエージェントやreview assistantが過剰にコメントしたり、不要な修正を提案したりする問題に対して、かなり近い監督信号になる。

収集方法とリーク対策

データセットカードによれば、permissive licenseを持つ上位GitHubリポジトリ、merge済みPR、inline review commentを基に収集している。その後、レビュー時点のファイル内容とPR head時点のファイル内容を取得し、コメント行周辺のchunkを抽出してtripletを構成する。splitはリポジトリ単位で決定論的に分けられており、同一リポジトリの例がtrainとtestへまたがるリークを避ける設計になっている。

Reddit投稿者は、このコーパスを使ってQwen2.5-Coder-32Bのコードレビュー特化版を微調整したとも述べている。その個別主張の検証は別としても、公開データセット自体に十分な価値がある。coding agentを作るチームにとって、generic instruction dataよりも、こうした人間レビュー中心の信号のほうがレビュー品質、修正提案、そして「必要なときだけ指摘する」挙動を改善しやすい可能性が高い。

Hugging Face dataset · Reddit discussion