【論文紹介】[2019] A novel neural source code representation based on abstract syntax tree
原論文 A Novel Neural Source Code Representation Based on Abstract Syntax Tree (hongyujohn.github.io) [223, P82], 2019 [Cited by 618 (when 2024/2)] メモ:ソースコード表現のための新しい抽象構文木(AST)ベースのニューラルネットワーク(ASTNN)を提案。 概要 ・機械学習技術を活用してプログラムを分析することが注目される中で、コード断片を適切に表現して後続の解析を行うことが1つの重要な問題となる。従来の情報検索ベースの方法では、プログラムを自然言語テキストとして扱うことが一般的であり、これによりソースコードの重要な意味情報が見落とされる可能性がある。 ・最近の研究では、抽象構文木(AST)ベースのニューラルモデルが、ソースコードをよりよく表現できることが示されている。ただし、ASTのサイズは通常大きく、既存のモデルは長期依存の問題に対して脆弱である。 ・本論文では、ソースコード表現のための新しいASTベースのニューラルネットワーク(ASTNN)を提案。 ・従来のモデルが全体のAST上で動作するのに対し、ASTNNはそれぞれの大きなASTを小さな文ツリーのシーケンスに分割する。 ・文のレキシカル(字句的)および構文的知識を捉えることで、分割した文ツリーをベクトルにエンコードする。 ・文のベクトルのシーケンスに基づいて、双方向RNNモデルが文の自然さを活用するために用いられ、さらに最終的にコード断片のベクトル表現を生成する。 ・本論文の手法を、2つの一般的なプログラムを理解するためのタスクである、ソースコード分類とコードクローン検出に適用した。これらの2つのタスクの実験結果は、本論文のモデルが最先端のアプローチに優れていることを示している。 導入 ・ソフトウェア開発とメンテナンスの向上のために、ソースコード分類、コードクローン検出、欠陥予測、およびコード要約などの多くのソフトウェアエンジニアリング手法が提案されている。これらのすべての手法に共通する主な課題は、ソースコードを効果的に表現し、ソースコードに埋め込まれた構文的および意味的情報を捉える方法である。 ・情報検索(IR)などの従来のアプローチでは、コード断片を自然言語テキ