Skip to main content
QUICK REVIEW

[論文レビュー] A Literature Study of Embeddings on Source Code

Zimin Chen, Martin Monperrus|arXiv (Cornell University)|Apr 5, 2019
Software Engineering Research参考文献 26被引用数 56
ひとこと要約

この調査は、複数の粒度にわたり、ソースコードに word embeddings がどのように適用されているかを収集・分類し、公開データと可視化手法について論じる。

ABSTRACT

Natural language processing has improved tremendously after the success of word embedding techniques such as word2vec. Recently, the same idea has been applied on source code with encouraging results. In this survey, we aim to collect and discuss the usage of word embedding techniques on programs and source code. The articles in this survey have been collected by asking authors of related work and with an extensive search on Google Scholar. Each article is categorized into five categories: 1. embedding of tokens 2. embedding of functions or methods 3. embedding of sequences or sets of method calls 4. embedding of binary code 5. other embeddings. We also provide links to experimental data and show some remarkable visualization of code embeddings. In summary, word embedding has been successfully applied on different granularities of source code. With access to countless open-source repositories, we see a great potential of applying other data-driven natural language processing techniques on source code in the future.

研究の動機と目的

  • ソースコードに対する word embeddings の利用を、トークン、関数、APIシーケンス、バイナリ等、複数の粒度で調査する。
  • 既存の研究を5つの埋め込みカテゴリーに分類し、利用可能な実験データを要約する。
  • 再現性と今後の研究を促進するため、可視化手法と公開データ資源を強調する。

提案手法

  • 関連著者への問い合わせと徹底的なGoogle Scholar検索を行い、論文をレビューする。
  • 各研究を5つの埋め込みカテゴリー(トークン、関数/メソッド、シーケンス/API利用、バイナリコード、その他の埋め込み)に分類する。
  • 公開された実験データおよびコード埋め込みの可視化表現へのリンクを提供する。
  • コードにおける埋め込みの可能性と限界を要約し、可視化手法について論じる。

実験結果

リサーチクエスチョン

  • RQ1コード埋め込みが適用される主要な粒度は何か(トークン、関数、APIシーケンス、バイナリ、その他)?
  • RQ2埋め込み技術が、リペア、クローン検出、脆弱性予測などの下流のコードタスクを支援するためにどのように活用されてきたか?
  • RQ3コード埋め込みの再現性とさらなる研究を支援する公開データと可視化は何があるか?
  • RQ4ソースコードにおける文脈的または下流タスク評価済み埋め込みの今後の方向性は何が提案されているか?

主な発見

  • 埋め込み技術は、トークン、関数/メソッド、APIシーケンス、バイナリコードなど、コードのさまざまな粒度に適用されている。
  • 多くの研究は word2vec または類似の手法を用いて、リペア、クローン検出、脆弱性予測などの下流タスクのためのトークン、関数、APIの埋め込みを学習している。
  • いくつかの研究では、構造化表現(例:AST、制御フローグラフ、シンボルトレース)とニューラルネットワークを用いて、コード意味論の埋め込みを学習している。
  • 高次元のコード埋め込みを可視化するために、PCAやt-SNEなどの可視化手法が用いられている。
  • 再現と再利用を可能にするため、コード埋め込み研究に関連する公開データセットや成果物が多数リンクされている。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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