Skip to main content
QUICK REVIEW

[論文レビュー] SkCoder: A Sketch-based Approach for Automatic Code Generation

Jia Li, Yongmin Li|arXiv (Cornell University)|Feb 13, 2023
Software Engineering Research被引用数 5
ひとこと要約

SkCoder は、人間の開発者が再利用する行動を模倣することで、自動コード生成を向上させるスケッチベースのコード生成フレームワークです。類似したコードスニペットを検索し、関連するコードスケッチ(再利用可能なパターン)を抽出して、自然言語による要件に合わせて編集します。このアプローチは、複数のモデルとデータセットで、正確一致(exact match)において最大30.30%、Pass@1 において最大120.1%の向上を達成し、SOTA モデルを上回ります。

ABSTRACT

Recently, deep learning techniques have shown great success in automatic code generation. Inspired by the code reuse, some researchers propose copy-based approaches that can copy the content from similar code snippets to obtain better performance. Practically, human developers recognize the content in the similar code that is relevant to their needs, which can be viewed as a code sketch. The sketch is further edited to the desired code. However, existing copy-based approaches ignore the code sketches and tend to repeat the similar code without necessary modifications, which leads to generating wrong results. In this paper, we propose a sketch-based code generation approach named SkCoder to mimic developers' code reuse behavior. Given a natural language requirement, SkCoder retrieves a similar code snippet, extracts relevant parts as a code sketch, and edits the sketch into the desired code. Our motivations are that the extracted sketch provides a well-formed pattern for telling models "how to write". The post-editing further adds requirement-specific details to the sketch and outputs the complete code. We conduct experiments on two public datasets and a new dataset collected by this work. We compare our approach to 20 baselines using 5 widely used metrics. Experimental results show that (1) SkCoder can generate more correct programs, and outperforms the state-of-the-art - CodeT5-base by 30.30%, 35.39%, and 29.62% on three datasets. (2) Our approach is effective to multiple code generation models and improves them by up to 120.1% in Pass@1. (3) We investigate three plausible code sketches and discuss the importance of sketches. (4) We manually evaluate the generated code and prove the superiority of our SkCoder in three aspects.

研究の動機と目的

  • コード生成モデルが不要な変更を加えずに完全なコードスニペットを繰り返すという限界を解消すること。
  • 人間の開発者がコードを再利用する際、関連する部分(コードスケッチ)のみを抽出・適応するという行動をモデル化すること。
  • 検索、スケッチ抽出、要件に適応した編集を組み合わせることで、コード生成の正確性を向上させること。
  • コードスケッチの有効性を、さまざまなモデルとデータセット(新規に収集した20万件のJavaデータセットを含む)で評価すること。
  • スケッチベースの編集が、直接コピーする手法に比べてコード生成のパフォーマンスを著しく向上させることを実証すること。

提案手法

  • 検索モジュールは、密度的な検索手法を用いてコーパス内から意味的に類似したコードスニペットを選択する。
  • スケッチモジュールは、自然言語による要件に基づいて、取得したスニペット内の関連するコード部分のみを特定・抽出する。
  • 抽出されたコードスケッチは、ターゲットコードの構造的テンプレートとして機能する。
  • 編集モジュールは、スケッチに要件固有の詳細を挿入することで最終的なコードを生成する。
  • 一般化の有効性を評価するため、さまざまなコード生成モデル(例:CodeT5、GPTベース)と統合する。
  • 標準的な指標(EM、BLEU、CodeBLEU、Pass@1、AvgPassRatio)を用いて、公開データセットおよび新規に収集したデータセットで評価を行う。

実験結果

リサーチクエスチョン

  • RQ1スケッチベースのアプローチは、従来のコピー中心の手法を上回ることができるか?
  • RQ2コードスケッチの抽出はどの程度有効か。具体的には、スケッチの設計選択肢の中で、どの選択が最も高いパフォーマンスをもたらすか?
  • RQ3スケッチベースの編集メカニズムは、さまざまなモデルにおいてどの程度コード生成のパフォーマンスを向上させるか?
  • RQ4提案手法は、多様なプログラミング言語やコード生成タスクに一般化可能か?
  • RQ5スケッチの導入は、ユニットテスト評価においてモデルの頑健性と正しさにどのような影響を与えるか?

主な発見

  • 3つのデータセットにおいて、SkCoder は SOTA モデルである CodeT5-base よりも、正確一致でそれぞれ 30.30%、35.39%、29.62% の向上を達成した。
  • 新規に収集した AixBench-L データセットでは、SkCoder は SOTA ベースライン比で Pass@1 を 12.9%、AvgPassRatio を 8.49% 向上させた。
  • アブレーションスタディの結果、スケッチャおよび検索モジュールの追加により、さまざまなモデルで Pass@1 が最大120.1%向上した。
  • 3つの異なるスケッチ設計選択肢を評価した結果、スケッチの関連性と構造がパフォーマンスに重要な要因であることが確認された。
  • 手動評価の結果、SkCoder が生成したコードは、ベースラインと比較してより正しく、読みやすく、要件と整合性が高いことが確認された。
  • 本フレームワークは強力な一般化性能を示し、CodeT5 や GPT ベース、エンコーダデコーダアーキテクチャを含む多様なモデルを向上させた。

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

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

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

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