Skip to main content
QUICK REVIEW

[論文レビュー] CSRS: Code Search with Relevance Matching and Semantic Matching

Yi Cheng, Li Kuang|arXiv (Cornell University)|Mar 15, 2022
Software Engineering Research被引用数 4
ひとこと要約

本稿では、語彙的関連性マッチングと共同注意に基づく意味的マッチングを統合的に活用することで、コード検索性能を向上させるコード検索モデルであるCSRSを提案する。n-gram埋め込みを複数のサイズの畳み込みカーネルを用いて取得するモジュール、関連性マッチングモジュール、意味的マッチングモジュールを統合することで、CSRSは大規模なコード検索データセット上でMRR 0.614を達成し、最先端モデルであるDeepCSとCARLCS-CNNをそれぞれ33.77%および18.53%上回った。

ABSTRACT

Developers often search and reuse existing code snippets in the process of software development. Code search aims to retrieve relevant code snippets from a codebase according to natural language queries entered by the developer. Up to now, researchers have already proposed information retrieval (IR) based methods and deep learning (DL) based methods. The IR-based methods focus on keyword matching, that is to rank codes by relevance between queries and code snippets, while DL-based methods focus on capturing the semantic correlations. However, the existing methods do not consider capturing two matching signals simultaneously. Therefore, in this paper, we propose CSRS, a code search model with relevance matching and semantic matching. CSRS comprises (1) an embedding module containing convolution kernels of different sizes which can extract n-gram embeddings of queries and codes, (2) a relevance matching module that measures lexical matching signals, and (3) a co-attention based semantic matching module to capture the semantic correlation. We train and evaluate CSRS on a dataset with 18.22M and 10k code snippets. The experimental results demonstrate that CSRS achieves an MRR of 0.614, which outperforms two state-of-the-art models DeepCS and CARLCS-CNN by 33.77% and 18.53% respectively. In addition, we also conducted several experiments to prove the effectiveness of each component of CSRS.

研究の動機と目的

  • 既存のコード検索手法がキーワードマッチングまたは意味理解のどちらかに限定されているという限界に対処すること。
  • 自然言語クエリとコードスニペットの間の語彙レベルの関連性と意味レベルの相関関係を両方とも捉える統合的ディーブラーニングモデルを設計すること。
  • 神経情報検索技術とアテンションベースの意味的マッチングを1つのアーキテクチャに統合することで、コード検索性能を向上させること。
  • アブレーションスタディを通じて、提案モデルの各コンponentの有効性を実証的に検証すること。

提案手法

  • モデルは、複数のカーネルサイズ(1, 2, 3)を用いたCNNベースの埋め込みモジュールを用い、クエリおよびコードスニペットからのn-gram埋め込みを抽出する。
  • 神経情報検索(neural IR)ベースの関連性マッチングモジュールは、n-gram特徴量上の学習済みアテンションを用いて、クエリとコードの埋め込み間の相互作用スコアを計算し、語彙的オーバーラップを捉える。
  • 意味的マッチングモジュールでは、共同注意メカニズムを採用し、クエリとコードの関連部分を動的にアライメントし、関連する部分に注目することで、より深い意味的相関を捉える。
  • 関連性スコアと意味的マッチングスコアが統合され、コードスニペットのランク付けに用いられる最終的な関連性スコアが計算される。
  • モデルは、オープンソースのJavaプロジェクトから得た1822万件のトレーニングおよび1万件のテストクエリ-コードペアからなる大規模データセット上で、エンドツーエンドに訓練される。
  • モデルの各コンponentの寄与度を分析するために、アブレーションスタディを通じてモデルコンponentの評価が行われる(例:メソッド名、APIシーケンス、コードトークンなど)。

実験結果

リサーチクエスチョン

  • RQ1語彙的関連性マッチングと意味的マッチングを統合することで、現在の最先端モデルを上回るコード検索性能を達成できるか?
  • RQ2提案された関連性マッチングモジュールは、クエリとコードスニペットの間のキーワードレベルの類似性をどれほど効果的に捉えられるか?
  • RQ3異なる入力特徴(例:メソッド名、APIシーケンス、コードトークン)が、全体のモデル性能に与える寄与度は何か?
  • RQ4埋め込みモジュールにおける異なる畳み込みカーネルサイズが、モデルの検索効果に与える影響は何か?

主な発見

  • CSRSはMRR 0.614を達成し、DeepCS(MRR 0.459)とCARLCS-CNN(MRR 0.518)をそれぞれ33.77%および18.53%上回った。
  • メソッド名、APIシーケンス、コードトークンという3つの入力特徴をすべて使用したフルモデルが最高の性能を示し、その中でメソッド名が最も影響力の高い個別特徴であった。
  • 埋め込みモジュールで3種類の異なるカーネルサイズ(1, 2, 3)を用いることで最良の性能が得られ、特にカーネルサイズ1が最も寄与し、組み合わせが最適であった。
  • アブレーションスタディの結果、関連性マッチングモジュールと意味的マッチングモジュールの両方が不可欠であり、いずれかを削除すると顕著な性能低下が生じた。
  • 定性的な例では、CSRSが語彙的オーバーラップ(例:'null', 'index')および意味的理解(例:'out of range'の意味)に基づいて関連するコードスニペットを的確に検索できていることが示された。
  • 本モデルは、正確なキーワードマッチに依存しない意味的同等性を求めるクエリに対しても、頑健に対応できることを示した。

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

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

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

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