Skip to main content
QUICK REVIEW

[論文レビュー] Algorithmic Programming Language Identification

David Klein, Kyle I. Murray|arXiv (Cornell University)|Jun 21, 2011
Software Engineering Research参考文献 1被引用数 10
ひとこと要約

この論文では、コメントや文字列を除外することで精度を向上させる統計的特徴を用いた教師あり機械学習手法を提示し、ソースコード内のプログラミング言語を識別する。既存のツールであるSourceClassifierよりも優れている。テストケースの48%で正しく言語を特定し、88%で上位5位以内にランクされた。ベイジアンベースラインに比べて顕著な改善を示している。

ABSTRACT

Motivated by the amount of code that goes unidentified on the web, we introduce a practical method for algorithmically identifying the programming language of source code. Our work is based on supervised learning and intelligent statistical features. We also explored, but abandoned, a grammatical approach. In testing, our implementation greatly outperforms that of an existing tool that relies on a Bayesian classifier. Code is written in Python and available under an MIT license.

研究の動機と目的

  • プログラミング言語の事前知識なしに、自動的にソースコード内の言語を特定する実用的で自動化された手法を開発すること。
  • ブログ、フォーラム、ドキュメンテーションなどで言語タグが欠落している、広く存在する未識別コードの問題に対処すること。
  • 単純なベイジアン分類器に依存し、コメントや文字列に惑わされやすい既存のツール(例:SourceClassifier)を改善すること。
  • 正確な言語識別により、コードの検索性、構文強調、自動採点の向上を実現すること。
  • 再現可能性とコミュニティによる拡張を可能にするために、Pythonで実装され、MITライセンスのもとで公開されるスケーラブルなオープンソースソリューションを構築すること。

提案手法

  • GitHubの41,000個のソースコードファイルから構成される大規模で手作業で整備されたトレーニングデータセットを用い、ファイル拡張子でフィルタリングしてノイズを低減する。
  • トレーニングおよび推論時にコメントや文字列を除外するため、自然言語に似た語のシーケンス(「words property」として知られる)を検出する。
  • ハードコードされたデータベースと未知トークンの類似性ヒューリスティクスを用いて、文字列の区切り記号やブロックコメントのマーカーをヒューリスティックに特定する。
  • トークンパターンからの統計的特徴を抽出し、長さではなく一致するトークン数に基づいてスコアを付けることで、文法構造の違いにかかわらず公平性を確保する。
  • 文法パースに依存せず、既知のトレーニング例との特徴類似度に基づいて言語を順位付けする教師あり学習モデルを採用する。
  • パース式文法(PEGs)とOMetaを用いた文法的アプローチも検討したが、文法の組み合わせの難しさとスケーラビリティの問題により、放棄された。

実験結果

リサーチクエスチョン

  • RQ1統計的・特徴ベースのアプローチは、ベイジアン分類器を上回る性能を示せるか?
  • RQ2コメントや文字列を除外することで、多様なプログラミング言語における識別精度はどの程度向上するか?
  • RQ3文法ベースのパースに依存せず、スケーラブルで高精度な言語識別器を構築するのは可能か?
  • RQ4本システムは、実世界のコード断片において、既存のツール(例:SourceClassifier)と比較してどの程度の性能を示すか?
  • RQ5Webスケールのコードインデキシングや構文強調に適用可能な、正確で実用的なシステムを構築することは可能か?

主な発見

  • テストファイル25件のうち12件(48%)で正しくプログラミング言語を特定し、25件中22件(88%)で上位5位以内にランクされた。
  • 直接比較したところ、SourceClassifierは同じテストセットでトップ1の正確性がたった12%にとどまり、本手法の明確な性能優位性が示された。
  • スクリプトとコモン リスペクトの高相関性を持つ言語ペアに対しても、本モデルはうまく対処でき、構文的重複に対する耐性があることが示された。
  • コメントや文字列の除外により、自然言語コンテンツ由来のノイズが著しく低減され、特徴の質が向上した。
  • PEGsとOMetaを用いた文法的アプローチは、理論的基盤は有望であったが、文法の合成とパースの信頼性の問題により、放棄された。
  • MITライセンスのもとで公開された本システムのオープンソース実装により、研究コミュニティによる再現性と今後の拡張が可能となった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。