[論文レビュー] Topic modeling of public repositories at scale using names in source code
本稿では、1360万個のGitHubリポジトリにわたるソースコード内のプログラマーが定義した名前を分析することで、スケーラブルなトピックモデリング手法を提案する。重み付きMinHashを用いた重複検出と、追加正則化付きトピックモデル(ARTM)を用いたトピック推論により、多様なソフトウェア分野を反映する256の手動ラベル付きトピックを同定し、オープンアクセスでデータとツールを提供することで、大規模かつ自動的なオープンソースプロジェクト分類を可能にする。
Programming languages themselves have a limited number of reserved keywords and character based tokens that define the language specification. However, programmers have a rich use of natural language within their code through comments, text literals and naming entities. The programmer defined names that can be found in source code are a rich source of information to build a high level understanding of the project. The goal of this paper is to apply topic modeling to names used in over 13.6 million repositories and perceive the inferred topics. One of the problems in such a study is the occurrence of duplicate repositories not officially marked as forks (obscure forks). We show how to address it using the same identifiers which are extracted for topic modeling. We open with a discussion on naming in source code, we then elaborate on our approach to remove exact duplicate and fuzzy duplicate repositories using Locality Sensitive Hashing on the bag-of-words model and then discuss our work on topic modeling; and finally present the results from our data analysis together with open-access to the source code, tools and datasets.
研究の動機と目的
- 手動キーワードタグの範囲を超えて、大規模かつ自動的なオープンソースソフトウェアプロジェクト分類を可能にすること。
- 公式のフォークメタデータに依存せずに、大規模なコードリポジトリにおける重複およびフォーク済みリポジトリの検出と削除の課題に対処すること。
- スケール上でプログラマーが定義した名前から、意味的で人間が解釈可能なトピックを抽出すること。
- ソフトウェアアナリティクスおよびエコシステムトレンド分野の研究を支援する包括的かつオープンアクセスのデータセットとツールを提供すること。
- ソースコード内の名前が、ソフトウェアプロジェクトの意味的特徴を理解するための豊富で未利用に近いシグナルであることを示すこと。
提案手法
- 1800万個のパブリックGitHubリポジトリにわたるソースコードから抽出した識別子(変数、関数、クラス名)を用いて、bag-of-wordsモデルを構築する。
- ローカリティセンシティブハッシュ(LSH)を用いた重み付きMinHashを適用し、リポジトリレベルの識別子を用いて正確および曖昧な重複を検出し、削除する。
- クリーニング済みデータセット上で追加正則化付きトピックモデル(ARTM)を訓練し、名前ベースの語彙から256の手動ラベル付きトピックを推論する。
- 意味的コンテンツに焦点を当てつつノイズを除去するため、識別子の正規化およびフィルタリングを目的としたカスタム前処理パイプラインを活用する。
- Gitリポジトリの構造とメタデータを活用し、トピックモデリングにおける一貫性ある表現とバイアス低減を実現する。
- 全データセット、前処理ツール、およびトレーニング済みモデルをオープンソース化し、再現可能性および今後の研究を支援する。
実験結果
リサーチクエスチョン
- RQ1プログラマーが定義したソースコード内の名前は、大規模なソフトウェアリポジトリの高レベルなトピックを効果的に推論するために有効に利用できるか?
- RQ2公式のフォークメタデータに依存せず、スケール上で重複およびフォーク済みリポジトリを効率的に検出し、削除できるか?
- RQ31360万個のオープンソースプロジェクトにわたる名前を用いたトピックモデリングから、どのような多様性とカバー範囲のトピックが出現するか?
- RQ4推論されたトピックは、既知のソフトウェア分野やエコシステムとどのように一致するか?
- RQ5コード名におけるトピックモデリングは、オープンソースプロジェクトの手動分類に対するスケーラブルで自動化された代替手段として、どの程度有効か?
主な発見
- トピックモデリングパイプラインは、Webフレームワーク、ゲームエンジン、機械学習、システムライブラリなど、主要なソフトウェア分野を反映する256の明確で手動ラベル付きトピックを正常に同定した。
- モデルは120万個のリポジトリ(正確または曖昧な重複)を検出し、トピックモデリングの前段階でデータ品質を顕著に向上させた。
- 『機械学習、データサイエンス』(トピック#27)は、'numpy'、'matplotlib'、'pandas'、'scipy'といった高頻度語と強く関連していた。
- モデルは、両者ともJavaScriptフレームワークであるにもかかわらず、'React'と'Vue.js'を別個のトピックとして捉えるなど、微妙な意味的差を識別できた。
- 名前の命名パターンに一貫性が見られ、'Games'と'Web Games'はそれぞれ特徴的なキーワード('Unity'、'Minecraft'、'SDL'など)を有する別個のトピックとして出現した。
- オープンアクセスのデータセットとツールにより、再現可能な分析が可能となり、今後のソフトウェアエコシステムマイニングおよびトレンド検出分野の研究を支援する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。