Skip to main content
QUICK REVIEW

[論文レビュー] Learning to Mine Aligned Code and Natural Language Pairs from Stack Overflow

Pengcheng Yin, Bowen Deng|arXiv (Cornell University)|May 23, 2018
Software Engineering Research参考文献 42被引用数 22
ひとこと要約

本稿では、手作業で設計された構造的特徴とニューラルネットワークベースの対応特徴を組み合わせることで、Stack Overflowから高品質で細粒度な自然言語(NL)とコードのペアをマイニングする新規手法を提案する。ラベル付き例の少数で訓練された本手法は、従来のヒューリスティックベースの手法に比べ、カバレッジと精度の両面で顕著に向上し、1つの言語から別の言語へゼロショット転移性能を発揮する強力な性能を示す。これにより、コード生成、検索、要約タスク向けにスケーラブルかつ高品質なデータ収集が可能になる。

ABSTRACT

For tasks like code synthesis from natural language, code retrieval, and code summarization, data-driven models have shown great promise. However, creating these models require parallel data between natural language (NL) and code with fine-grained alignments. Stack Overflow (SO) is a promising source to create such a data set: the questions are diverse and most of them have corresponding answers with high-quality code snippets. However, existing heuristic methods (e.g., pairing the title of a post with the code in the accepted answer) are limited both in their coverage and the correctness of the NL-code pairs obtained. In this paper, we propose a novel method to mine high-quality aligned data from SO using two sets of features: hand-crafted features considering the structure of the extracted snippets, and correspondence features obtained by training a probabilistic model to capture the correlation between NL and code using neural networks. These features are fed into a classifier that determines the quality of mined NL-code pairs. Experiments using Python and Java as test beds show that the proposed method greatly expands coverage and accuracy over existing mining methods, even when using only a small number of labeled examples. Further, we find that reasonable results are achieved even when training the classifier on one language and testing on another, showing promise for scaling NL-code mining to a wide variety of programming languages beyond those for which we are able to annotate data.

研究の動機と目的

  • 自然言語とコードの間の高品質で細粒度な並列データの不足に取り組むこと。これは、コード生成や検索におけるデータ駆動型モデルの訓練に不可欠である。
  • 既存のヒューリスティック手法の限界を克服すること。具体的には、受容済みの回答や完全なコードブロックに依存する手法は、マイニングされたNL-コードペアにおいてカバレッジが低く、ノイズが多いという問題を抱えている。
  • 最小限のラベル付きデータでさえも、Stack Overflowからサブコードブロックレベルの整合されたNL-コードペアをスケーラブルかつ正確にマイニングする手法を開発すること。
  • 1つのプログラミング言語で訓練し、別の言語でテストすることでゼロショット転移学習を可能にすること。これにより、複数言語にわたる膨大な手作業ラベル付け作業の必要性が低減される。

提案手法

  • 本手法は、2種類の特徴を組み合わせた分類器を用いる。1つはコードスニペットから抽出される手作業で設計された構造的特徴(例:文法的パターン、変数の使用、制御フローフラット)であり、もう1つは自然言語クエリとコードの間の対応関係をモデル化するように訓練されたニューラルネットワークから得られる学習された対応特徴である。
  • ニューラルネットワーク部は、自然言語の意図とコードの間の意味的対応をモデル化することで、局所的およびグローバルな依存関係を捉え、小さなコード断片や大きなブロック内に埋め込まれた関連コード断片であっても検出可能にする。
  • 人手でアノテートされたNL-コードペアの小さなデータセットを用いて分類器を訓練することで、未ラベル付きのStack Overflow投稿の大幅な集合へ一般化できる。
  • 分類器はエンドツーエンドで訓練され、与えられたNLスニペットとコード断片が整合しているかどうかを予測することを目的とする。その目的は、質問に答えられる細粒度で意味的に関連のあるコードセグメントを特定することにある。
  • 本手法は、1つの言語(例:Python)で訓練し、別の言語(例:Java)で評価することでゼロショット転移をサポートする。これにより、最小限の再訓練で言語間で一般化が可能であることが示された。
  • マイニングされたペアの評価には自動指標と人間評価の両方を用い、抽出データの精度と再現率の両面で高い水準を確保している。

実験結果

リサーチクエスチョン

  • RQ1ヒューリスティック手法(受容済みの回答や完全なコードブロックに依存)に比べ、ハイブリッド特徴ベースの分類器は、マイニングされたNL-コードペアの精度とカバレッジを向上させることができるか?
  • RQ2関連するコードが小さかったり、大きなブロック内に埋め込まれていたりする場合でも、本手法は自然言語の質問とコードスニペットの間でサブコードブロックレベルの整合性を効果的に同定できるか?
  • RQ31つのプログラミング言語(例:Python)で訓練されたモデルが、追加のラベル付きデータなしで、別の言語(例:Java)へどの程度一般化できるか?
  • RQ4ラベル付きデータの量が異なる場合、特に少数の例しか利用できない状況下で、本手法の性能はどのようにスケーリングするか?
  • RQ5手作業で設計された構造的特徴と学習されたニューラル対応特徴を組み合わせることで、マイニングされたNL-コードペアの品質にどのような影響を与えるか?

主な発見

  • 本手法は、従来のヒューリスティック手法に比べ、特に完全なコードブロックではなく、細粒度で関連のあるコード断片を同定する点で、はるかに高い精度と再現率を達成している。
  • わずか数100件のラベル付き例での訓練でも、モデルは良好に一般化し、最小限の監視下でも強力な性能を示している。
  • ゼロショットクロスリンガル設定でも高品質な結果を達成しており、Pythonデータで訓練したモデルが、最小限の性能低下でJava用の正確なNL-コードペアを効果的にマイニングできることを示している。
  • 人間評価により、マイニングされたペアが意味的に整合しており、質問の意図に適切に対応する正しいかつ有用なコードスニペットを多数含んでいることが確認された。
  • ニューラル対応特徴と手作業で設計された構造的特徴を統合することで、単独でいずれかの特徴を使用する場合よりも、マイニング品質が顕著に向上した。
  • 本手法はフルスタックのSOデータへも効果的にスケーリングでき、下流のNLPおよびコード生成モデルの訓練に適した大規模かつ高品質な並列データセットの作成を可能にしている。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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