Skip to main content
QUICK REVIEW

[論文レビュー] Splitting source code identifiers using Bidirectional LSTM Recurrent Neural Network

Vadim Markovtsev, Waren Long|arXiv (Cornell University)|May 26, 2018
Software Engineering Research被引用数 5
ひとこと要約

この論文では、従来のヒューリスティクスでは信頼性が確保できない複数部品に分かれるソースコード識別子(例:'FooBar' を 'foo bar' に分割)を分割するための双方向LSTM再帰ニューラルネットワークを提案する。オープンソースプロジェクトから得た3490万個の識別子で訓練されたモデルは、95%の精度と96%の再現率を達成し、GRU、CNN、統計モデルなどのベースラインを上回り、後続のコード解析タスクにおける語彙サイズを顕著に削減する。

ABSTRACT

Programmers make rich use of natural language in the source code they write through identifiers and comments. Source code identifiers are selected from a pool of tokens which are strongly related to the meaning, naming conventions, and context. These tokens are often combined to produce more precise and obvious designations. Such multi-part identifiers count for 97% of all naming tokens in the Public Git Archive - the largest dataset of Git repositories to date. We introduce a bidirectional LSTM recurrent neural network to detect subtokens in source code identifiers. We trained that network on 41.7 million distinct splittable identifiers collected from 182,014 open source projects in Public Git Archive, and show that it outperforms several other machine learning models. The proposed network can be used to improve the upstream models which are based on source code identifiers, as well as improving developer experience allowing writing code without switching the keyboard case.

研究の動機と目的

  • 空白文字を含まないが、標準的な命名規則のヒューリスティクスでは解消できない曖昧な複数部品に分かれるソースコード識別子の分割という課題に対処すること。
  • 識別子埋め込み、重複削除、トピックモデリングなどの後続のコード解析タスクを改善するために、正確なサブトークン分割により語彙サイズを削減すること。
  • 特に双方向LSTMを用いた深層学習が、ソースコードのトークン化における文字レベルの系列モデリングにどの程度有効であるかを検討すること。
  • 機械学習におけるコード研究を促進するため、4920万個の公開可能なソースコード識別子から構成される、最大規模の公開データセットを構築・公開すること。

提案手法

  • 文字レベルの双方向LSTM(BiLSTM)モデルが、前向きおよび後向きの両方向で識別子を処理し、サブトークン境界を検出する。
  • 2層スタックされたBiLSTMアーキテクチャ(1層あたり256ユニット)を採用し、その後に時間方向に分散された全結合層(シグモイド活性化関数)を配置し、スプリットポイント(1 = スプリット、0 = スプリットなし)を予測する。
  • 入力は小文字に変換された識別子文字列で、正例のスプリット境界はバイナリベクトルとして符号化される。モデルは学習率0.001を固定値として使用するAdam最適化法で訓練される。
  • ハイパーパrameterはHyperoptを用いて調整され、10エポックにわたり2台のNVIDIA GTX 1080 GPUで訓練が実施された。
  • モデルの評価には、20%のホールドアウト検証セットを用いて精度、再現率、F1スコアが用いられた。
  • 複数のベースラインとの比較が行われた:文字レベルの最尤モデル、統計的動的計画法、勾配ブースティング木、CNN、GRU。

実験結果

リサーチクエスチョン

  • RQ1深層学習モデルは、ヒューリスティクスおよび統計的手法を上回り、曖昧なソースコード識別子の分割において優れた性能を示せるか?
  • RQ2正確な合成識別子の分割により、BiLSTMモデルはコード解析タスクにおける語彙サイズをどの程度削減できるか?
  • RQ3この識別子分割タスクにおいて、双方向LSTMは一方向RNN、GRU、CNNと比較してどの程度の性能を示すか?
  • RQ4実世界のオープンソースプロジェクトから得た3490万個の識別子から構成される大規模かつ多様なデータセットで学習させた場合、どのような影響が生じるか?

主な発見

  • BiLSTMモデルは、95.2%のF1スコア(精度94.7%、再現率95.8%)を達成し、BiGRU、CNN、統計ベースラインをすべて上回った。
  • モデルにより、データセット内の固有のサブトークン数は2,940,710個から1,065,153個にまで64%削減された。これは顕著な語彙圧縮を示している。
  • 前向きおよび後向きパスの論理的積を用いた文字レベルの最尤モデルは、最高の精度(96.6%)を達成したが、再現率は低く(57.3%)あり、精度と包括性のトレードオフが顕在化した。
  • 1つの識別子あたり1回のスプリットを仮定した場合、平均して約14個の識別子ごとに50%の確率で誤りを犯すことが示され、実用的用途において高い信頼性を示している。
  • 勾配ブースティング木(F1:92.8%)および滑らかでない文字レベルn-gramモデル(F1:70.3%)を著しく上回ったことから、このタスクにおいて深層学習の優位性が確認された。
  • 提案されたモデルにより、開発者は大文字小文字の切り替えを伴わずに小文字または混合大文字小文字で識別子を入力できるようになり、入力回数が減少し、タイピング速度が向上する。

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

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

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

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