[論文レビュー] code2seq: Generating Sequences from Structured Representations of Code
この論文では、抽象構文木(AST)からの構成的パスを用いてソースコードを符号化する、新しいseq2seqモデルであるcode2seqを紹介する。これにより、コード要約やドキュメンテーションのための自然言語シーケンス生成がより正確に可能になる。このモデルは、2つの言語で4つのデータセットにおいて、先行モデルを上回り、ASTパスのアテンションを用いた構造的コード表現を活用することで、最先端の結果を達成している。
The ability to generate natural language sequences from source code snippets has a variety of applications such as code summarization, documentation, and retrieval. Sequence-to-sequence (seq2seq) models, adopted from neural machine translation (NMT), have achieved state-of-the-art performance on these tasks by treating source code as a sequence of tokens. We present ${ m {\scriptsize CODE2SEQ}}$: an alternative approach that leverages the syntactic structure of programming languages to better encode source code. Our model represents a code snippet as the set of compositional paths in its abstract syntax tree (AST) and uses attention to select the relevant paths while decoding. We demonstrate the effectiveness of our approach for two tasks, two programming languages, and four datasets of up to $16$M examples. Our model significantly outperforms previous models that were specifically designed for programming languages, as well as state-of-the-art NMT models. An interactive online demo of our model is available at this http URL. Our code, data and trained models are available at this http URL.
研究の動機と目的
- ソースコードの構文的構造を捉えることで、トークン列モデルにとどまらないコードtoテキスト生成の改善を図ること。
- コードをフラットなトークン列として扱い、プログラム構造を無視する既存のseq2seqモデルの限界を解消すること。
- 抽象構文木(AST)から構成的パスを抽出することで、意味的で意味のあるコード表現を学習するモデルの開発。
- 複数のプログラミング言語およびデータセットにおける構造的コード表現の有効性を実証すること。
提案手法
- コードスニペットを、ノード間の文法的関係を捉える各パスとして、その抽象構文木(AST)から抽出した構成的パスの集合として表現する。
- 各パスを意味的および文法的情報を保持する密なベクトル表現に埋め込むための深層ニューラルネットワークを用いる。
- デコード時に関連するASTパスに選択的に注目するアテンション機構を適用し、文脈に配慮したシーケンス生成を可能にする。
- 自然言語生成のための交差エントロピー損失を用いた、エンドツーエンドのシーケンスtoシーケンスフレームワークでモデルを訓練する。
- ASTの階層的かつ構造的な性質を活用して、コード生成における汎化性能および表現学習を向上させる。
- 最大1600万例のデータセットにスケーリングし、多様なプログラミングタスクにおける頑健な性能を実現する。
実験結果
リサーチクエスチョン
- RQ1フラットなトークン列と比較して、コードを構成的ASTパスとしてモデル化することで、コードtoテキスト生成が向上するか?
- RQ2ASTパス上のアテンション機構は、正確で関連性の高い自然言語記述を生成する能力をどのように向上させるか?
- RQ3提案された構造的表現は、異なるプログラミング言語およびコード生成タスクに一般化可能か?
- RQ4性能および頑健性の観点から、code2seqは最先端のNMTおよびプログラミング固有のモデルと比較してどうなるか?
主な発見
- code2seqは、プログラミング言語に特化して設計された以前のモデルよりも、コード要約タスクで顕著に優れている。
- 2つのプログラミング言語にまたがる4つのデータセットにおいて、最先端のパフォーマンスを達成しており、強い汎化性能を示している。
- ASTパスとアテンションを活用することで、単にトークン列に依存するモデルよりも、より意味的に意味のあるコード表現を学習している。
- スケールに強く、最大1600万例のデータセットでも高い正確性を維持している。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。