AI解説
出版社版: https://doi.org/10.1109/MSR52588.2021.00072(arXiv 全文: https://arxiv.org/abs/2103.10558 / 実装: https://github.com/collab-uniba/KGTorrent) 情報源: arXiv 全文(PDF)を精読して検証済み。248,761 本の Python ノートブックを取得、Meta Kaggle のスキーマを逆解析して関係 DB を構築・連結、HTTP/Kaggle API での取得と更新手順、を確認。
一言で
Kaggle 上の Python Jupyter ノートブック 248,761 本を、Meta Kaggle 由来のメタデータ(MySQL データベース)と紐付けて配布する大規模データセット KGTorrent。ノートブックの中身(コード・出力)と、それに関する豊富な文脈(作者・コンペ・評価・投票など)を結合して分析できるのが眼目。2015 年 11 月〜2020 年 10 月、約 175 GB。
背景・問題
Kaggle はデータサイエンス学習・実践の巨大な場で、そこにある膨大なノートブックはDS の実コードの宝庫だ。だが研究で使うには困りごとがある。
- ノートブック本体だけでは文脈が足りない:誰が・どのコンペで・どんな評価のノートブックかが分からないと、品質や傾向の分析が浅くなる。
- 収集が面倒で再現しにくい:各自が Kaggle からスクレイプすると、取得方法・時点がバラバラで、研究間で比較可能な共有コーパスにならない。
問題は「Kaggle ノートブックの本体とメタデータを、整合的に結合した再利用可能なデータセットがない」こと。KGTorrent はこれを埋める。
提案手法(データセット構築=やったこと)
- ノートブック本体の収集:248,761 本の Python ノートブックを取得。取得経路は 2 通りで性質が違う——HTTP 経由だと出力付きの完全なノートブックが得られ、Kaggle API 経由だと出力なし。両者を使い分け/補完する。ファイルは
UserName_CurrentUrlSlugの規則で命名。 - メタデータの整備:Kaggle 公式の Meta Kaggle(29 個の CSV テーブル)を取り込み、MySQL データベースとして再構成。外部キー(FK)の不整合をクリーニングして、テーブル間を正しく結合できるようにする。
- 本体とメタデータの連結:各ノートブック ファイルを、データベース上の対応レコード(作者・カーネル・コンペ・評価等)に紐付ける。
直感:価値の源は「コード × 文脈の結合」。ノートブック単体ではなく、「高評価のノートブックは何が違うか」「特定コンペで流行った手法は何か」といった問いに答えられるよう、関係データベースとして整合させるのが課題の核。
数式・アルゴリズム
データセット論文なので定式化はなく、規模・スキーマ・収集方法が要点。
- ノートブック数:248,761(Python)
- 期間:2015-11 〜 2020-10
- サイズ:約 175 GB
- メタデータ:Meta Kaggle 由来の 29 CSV → MySQL(FK 整合済み)
- 取得経路:HTTP(出力あり・完全)/ API(出力なし)
想定用途と評価
- 品質・傾向分析:評価や投票と結合して「良いノートブックの特徴」を調べる。
- コード解析の素材:大規模な Python DS コードのコーパスとして、スタイル・API 利用・再現性などの研究に使える。
- 再現性:取得スクリプトを公開し、他者が同じ手順でコーパスを再構築できるようにしている(研究間の比較可能性を担保)。
関連研究との関係(メモ)
- DistilKaggle(
mostafavi2024distilkaggle):同じく Kaggle ノートブックだが、DistilKaggle はセル単位に”蒸留”した軽量テーブル+コード品質指標+Performance Tierに振っており、KGTorrent の生ノートブック+関係メタデータとは設計思想が違う(生データの網羅 vs 解析しやすい蒸留)。 - Code4ML(
drozdova2023code4ml):Kaggle 由来のコード スニペットに意味アノテーションを付けたデータセット。KGTorrent が”文脈つき生ノートブック”なのに対し、Code4ML は”注釈つきスニペット”。 - Boa dataset(
biswas2019boa):出所が GitHub OSS(AST 化)で、Kaggle ノートブックとは母集団が異なる。 - pimentel / psallidas:このようなコーパスを使う/作る大規模実証研究の系譜。
Q&A
(自分がAIに実際に質問したことだけを Q/A 形式で残す。まだなし。)
自分のコメント
(ここは自分で都度書く欄。例:HTTP 経由だと出力付き・API だと出力なし、という差は、ノートブックの「実行結果=状態の痕跡」を集めたい自分には重要。出力付きコーパスの使い道を考えたい。)