Skip to main content
QUICK REVIEW

[論文レビュー] Structural Language Models for Any-Code Generation.

Uri Alon, Roy Sadaka|arXiv (Cornell University)|Sep 25, 2019
Software Engineering Research参考文献 24被引用数 11
ひとこと要約

本論文は、コードをシーケンスではなく抽象構文木(AST)としてモデル化する、Any-Code Generationのための新規アプローチである構造的言語モデリング(SLM)を紹介する。これにより、任意のプログラミング言語で任意の式を制限なく生成可能となる。SLMは、各ノードへのすべてのパスを考慮して条件付き確率を計算することで、seq2seqおよび先行の構造的アプローチを大きく上回り、JavaおよびC#コード生成において優れた性能を発揮する。

ABSTRACT

We address the problem of Any-Code Generation (AnyGen) - generating code without any restriction on the vocabulary or structure. The state-of-the-art in this problem is the sequence-to-sequence (seq2seq) approach, which treats code as a sequence and does not leverage any structural information. We introduce a new approach to AnyGen that leverages the strict syntax of programming languages to model a code snippet as a tree - structural language modeling (SLM). SLM estimates the probability of the program's abstract syntax tree (AST) by decomposing it into a product of conditional probabilities over its nodes. We present a neural model that computes these conditional probabilities by considering all AST paths leading to a target node. Unlike previous structural techniques that have severely restricted the kinds of expressions that can be generated, our approach can generate arbitrary expressions in any programming language. Our model significantly outperforms both seq2seq and a variety of existing structured approaches in generating Java and C# code. We make our code, datasets, and models available online.

研究の動機と目的

  • コード生成におけるsequence-to-sequenceモデルの限界、すなわち構文構造を無視し、語彙や式の多様性を制限することを是正すること。
  • 任意のプログラミング言語で、任意の式と制限のない語彙をサポートするAny-Code Generation(AnyGen)を実現すること。
  • すべての関連するパスを用いてASTノード上の条件付き確率を計算するニューラルモデルを構築し、先行手法よりも構造的依存関係を効果的に捉えること。
  • 既存のseq2seqおよび構造的生成アプローチを上回る、コード生成の質と柔軟性を実現すること。

提案手法

  • モデルはコードを抽象構文木(AST)として表現し、AST全体の確率をそのノード上の条件付き確率の積として推定する。
  • 条件付き確率は、ターゲットノードへ至るAST内のすべてのパスを考慮することで計算され、文脈に応じた生成が可能となる。
  • これらの条件付き確率はニューラルアーキテクチャを用いて計算され、AST内の構造的パターンから学習する。
  • アプローチはAST生成タスクを、構造的文脈に従って逐次的に行うノード単位の予測に分解する。
  • 先行の構造的アプローチとは異なり、SLMは生成可能な式の種類や複雑さに制限を設けない。
  • モデルはコードデータセット上でエンドツーエンドに訓練され、多様なプログラミング言語における有効なコード構造の予測を学習する。

実験結果

リサーチクエスチョン

  • RQ1構造的言語モデリングアプローチは、任意のプログラミング言語で語彙的・文法的制限なしに任意のコード式を生成できるか?
  • RQ2seq2seqモデルと比較して、SLMは文法的に正しい多様なコードをどの程度効果的に生成できるか?
  • RQ3構造的モデリングは、既存の構造的アプローチと比較して、コード生成性能をどの程度向上できるか?
  • RQ4アーキテクチャの変更なしに、JavaやC#などの異なるプログラミング言語間で一般化できるか?

主な発見

  • SLMは、JavaおよびC#コード生成において、最先端のseq2seqモデルを著しく上回る性能を発揮する。
  • モデルは、過去の構造的アプローチが硬直的な制約を持つのとは異なり、複雑で制限のない構文を含む任意の式を効果的に生成できる。
  • SLMは、各ノードへのすべてのASTパスを活用することで、完全な構造的文脈を捉えることで、コード生成の質を向上させる。
  • このアプローチはプログラミング言語をまたいで一般化でき、JavaおよびC#のデータセットの両方で有効性を示している。
  • モデルの性能は、複数の既存の構造的生成技術を上回っており、ASTパスの完全なモデリングの利点が裏付けられている。
  • 著者らはコード、データセット、および訓練済みモデルを公開しており、Any-Code Generation分野における再現性とさらなる研究を促進している。

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

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

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

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