CodeEditor: Learning to Edit Source Code with Pre-trained Models

要約

開発者は、ソフトウェア開発中にさまざまな理由 (コードのリファクタリングなど) で繰り返しコード編集作業を実行することがよくあります。
事前トレーニングされたコード編集モデルは、最先端 (SOTA) の結果を達成しました。
事前トレーニングされたモデルは、まず事前トレーニング タスクで事前トレーニングされ、コード編集タスクで微調整されます。
既存の事前トレーニング タスクは主に、自然言語処理分野から派生したコード埋め込みタスク (マスクされた言語モデリングなど) であり、自動コード編集用に設計されていません。
この論文では、コード編集に特化した新しい事前トレーニング タスクを提案し、CodeEditor という名前の効果的な事前トレーニングされたコード編集モデルを紹介します。
事前トレーニング タスクにより、コード編集モデルのパフォーマンスと一般化能力がさらに向上します。
具体的には、現実世界のコード スニペットをグラウンド トゥルースとして多数収集し、強力なジェネレーターを使用してそれらを変異バージョンに書き換えます。
次に、編集パターンを学習するために、変異したバージョンを対応するグラウンド トゥルースに編集するように CodeEditor を事前トレーニングします。
4 つのコード編集データセットで実験を実施し、事前トレーニングされた CodeEditor を 3 つの設定で評価します。
(1) 微調整設定では、事前トレーニング済みの CodeEditor を 4 つのデータセットでトレーニングし、テスト データで評価します。
CodeEditor は、4 つのデータセットで SOTA ベースラインを 15%、25.5%、9.4%、26.6% 上回っています。
(2) 少数ショット設定では、限られたデータで事前トレーニング済みの CodeEditor をトレーニングし、テスト データで評価します。
CodeEditor は、すべてのベースラインよりも大幅にパフォーマンスが優れています。
(3) ゼロショット設定では、CodeEditor は 1,113 個のプログラムを正しく編集しますが、SOTA ベースラインは機能しません。

要約(オリジナル)

Developers often perform repetitive code editing activities for various reasons (e.g., code refactoring) during software development. Pre-trained code editing models have achieved the state-of-the-art (SOTA) results. Pre-trained models are first pre-trained with pre-training tasks and fine-tuned with the code editing task. Existing pre-training tasks mainly are code infilling tasks (e.g., masked language modeling), which are derived from the natural language processing field and are not designed for automatic code editing. This paper proposes a novel pre-training task specialized in code editing and presents an effective pre-trained code editing model named CodeEditor. Our pre-training task further improves the performance and generalization ability of code editing models. Specifically, we collect lots of real-world code snippets as the ground truth and use a powerful generator to rewrite them into mutated versions. Then, we pre-train our CodeEditor to edit mutated versions into the corresponding ground truth, to learn edit patterns. We conduct experiments on four code editing datasets and evaluate the pre-trained CodeEditor in three settings. (1) In the fine-tuning setting, we train the pre-trained CodeEditor with four datasets and evaluate it on the test data. CodeEditor outperforms the SOTA baselines by 15%, 25.5%, and 9.4% and 26.6% on four datasets. (2) In the few-shot setting, we train the pre-trained CodeEditor with limited data and evaluate it on the test data. CodeEditor substantially performs better than all baselines. (3) In the zero-shot setting, CodeEditor correctly edits 1,113 programs while the SOTA baselines can not work.

arxiv情報

著者 Jia Allen Li,Ge Li,Zhuo Li,Zhi Jin,Xing Hu,Kechi Zhang,Zhiyi Fu
発行日 2023-08-11 08:38:17+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.SE パーマリンク