似た構文を持つ複数のプログラミングからコードクローンを検出する. 手法としては,ASTを構築し,それを機械学習する. 実験ではJavaとPythonのデータセットを用いている.
ニューラルネットは,半教師あり学習で,LSTMベースで学習を行う. LSTM(Lonf Short Term Memory)は短長期記憶という意味である. word2vecとかでも使われている有名な手法らしい.
もちろん生のASTを食わせてもうまくいかないのは当たり前なので,だいぶこねくり回す必要がある. こんなにこねくりまわしたらもはやMLじゃなくて別の手法を使っても大丈夫な気がしなくもない. なんにせよMLに詳しくないのであまり理解できなかった.
cross languageを謳っているわりには2種類の言語でしか実験していない.
しかしうまくいっているのは凄いと思った.