[論文レビュー] Predicting the Programming Language of Questions and Snippets of StackOverflow Using Natural Language Processing
本稿では、自然言語処理とコードスニペットを用いて、Stack Overflowの質問のプログラミング言語を予測する機械学習分類器を提案する。テキストとコードの特徴を組み合わせることで91.1%の正確性を達成した。また、テキストのみ(81.1%の正確性)またはコードのみ(77.7%の正確性)を使用するモデルも導入し、自動タグ付けやコード分析ツールにおける効果的な言語検出の有効性を示した。
Stack Overflow is the most popular Q&A website among software developers. As a platform for knowledge sharing and acquisition, the questions posted in Stack Overflow usually contain a code snippet. Stack Overflow relies on users to properly tag the programming language of a question and it simply assumes that the programming language of the snippets inside a question is the same as the tag of the question itself. In this paper, we propose a classifier to predict the programming language of questions posted in Stack Overflow using Natural Language Processing (NLP) and Machine Learning (ML). The classifier achieves an accuracy of 91.1% in predicting the 24 most popular programming languages by combining features from the title, body and the code snippets of the question. We also propose a classifier that only uses the title and body of the question and has an accuracy of 81.1%. Finally, we propose a classifier of code snippets only that achieves an accuracy of 77.7%. These results show that deploying Machine Learning techniques on the combination of text and the code snippets of a question provides the best performance. These results demonstrate also that it is possible to identify the programming language of a snippet of few lines of source code. We visualize the feature space of two programming languages Java and SQL in order to identify some special properties of information inside the questions in Stack Overflow corresponding to these languages.
研究の動機と目的
- Stack Overflowの質問における誤ったまたは欠落したプログラミング言語タグの問題に対処し、効果的な質問ルーティングやコードレンダリングを妨げる要因を解消する。
- 質問のテキストとコードスニペットの両方を活用することで、自動タグ提案システムの正確性を向上させる。
- 短いコードスニペットのプログラミング言語を独立して特定する信頼性の高い手法を開発し、Stack Overflowを超えた応用を可能にする。
- テキストコンテンツとコード構造の両方が、プログラミング言語予測に果たす寄与度を評価する。
- コード検索エンジン、ドキュメンテーションツール、スニペットマネージャーのサポートを強化するため、言語検出を自動化する。
提案手法
- 質問のタイトル、本文、コードスニペットから抽出した特徴を用いて、マルチノミアル・ナイーブベイズ、ランダムフォレスト、XGBoostを組み合わせたハイブリッド分類器を訓練した。
- 依存構文解析や語彙分析を含むNLP技術を用いて、テキスト(タイトルおよび本文)から言語的および構文的特徴を抽出した。
- コメントや空白文字を除去することでコードスニペットを前処理し、キーワード、演算子、構文パターンなどの構文的および構造的特徴を抽出した。
- テキスト特徴とコードベースの特徴を統合して、主な分類器のトレーニングに用いる統一された特徴ベクトルを作成した。
- コードとテキストからの予測された言語に基づいてタグを提案するハイブリッド自動タグ付けシステムを採用し、ユーザーによるタグ付けの正確性を向上させた。
- JavaとSQLの特徴空間を可視化し、開発者による質問における言語固有の語彙的および構文的パターンを同定した。
実験結果
リサーチクエスチョン
- RQ1テキストコンテンツとコードスニペットの両方を用いて、Stack Overflowの質問のプログラミング言語を予測できるか?
- RQ2コードスニペットに依存せずに、テキスト情報(タイトルおよび本文)のみを用いて、質問のプログラミング言語を予測できるか?
- RQ3機械学習を用いて、孤立したコードスニペットのプログラミング言語を予測できるか?
- RQ4テキストのみ、コードのみ、または両方を組み合わせた場合に、言語予測の性能はどのように変化するか?
主な発見
- テキストとコードの両方の特徴を組み合わせた統合分類器は、91.1%の正確性を達成し、適合率と再現率ともに0.91であった。
- テキストのみの分類器は81.1%の正確性を達成し、先行研究の最良手法(例:Baquero et al. [13])を上回り、適合率(0.83)と再現率(0.81)も高い水準であった。
- コードのみの分類器は77.7%の正確性を達成し、短いコードスニペットであっても機械学習を用いて信頼性高く分類可能であることを示した。
- テキスト特徴がコード特徴よりも予測に寄与する寄与度が高かったため、質問における自然言語的手がかりが言語識別においてより特徴的な要因であると考えられる。
- 特徴空間の可視化により、JavaとSQLに関する質問に言語固有の語彙的および構文的パターンが存在することが明らかになった。これは、開発者間の議論における言語固有の語彙や表現様式の存在を示している。
- 本モデルはStack Overflowを越えて汎用可能であり、ブログ投稿、ドキュメンテーション、コードリポジトリなどにおいて自動言語タグ付けに応用可能である。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。