VOL. J104-D NO. 9
SEPTEMBER 2021
本PDFの扱いは、電子情報通信学会著作権規定に従うこと。
なお、本PDFは研究教育目的（非営利）に限り、著者が第三者に直接配布することができる。著者以外からの配布は禁じられている。

論

文

回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価
藤原 裕士†,†† a)森彰††

井上 克郎†,††An Approach to Detecting Semantic Code Clone using Regression Model and
Evaluating Versatility
Yuji FUJIWARA†,†† a) , Akira MORI†† , and Katsuro INOUE†,††

あらまし 意味的コードクローン検出の技術はソフトウェア開発や保守において重要である．近年，深層学習を用いた意味的コードクローン検出手法が多く提案され，高い検出精度を記録しているが，コードクローンの学
習方法についての問題や，深層学習モデルの汎化性能に関する評価の問題がある．そこで本研究では，回帰モデ
ルを用いたコードクローン検出手法を提案し，その汎化性能について評価する．提案手法では，深層学習を用いる既存の意味的コードクローン検出手法で利用されている 2 値分類モデルの代わりに回帰モデルを利用し，教師あり学習の目的変数に抽象構文木の類似度を設定することで，コードクローンの学習方法を変更する．評価実験
では，学習データセットと評価データセットをそれぞれ異なるプロジェクトから作成し，四つの深層学習モデル
における 2 値分類モデルと回帰モデルの F 値と AUC を評価した．その結果，四つ中三つの深層学習モデルにおいて，回帰モデルに変更することで F 値と AUC が向上した．
キーワード コードクローン，深層学習，回帰モデル，汎化性能評価実験では，オープンジャッジのソースコードを用

1. ま え が きいたデータセットと大規模コードクローンベンチマー

近年，大規模なソフトウェアを効率的に開発するこク BigCloneBench [7] に対して ASTNN を用いたコーとが求められる中，意味的コードクローン検出技術は，

ドクローン検出を実行し，オープンジャッジデータ

ソフトウェアの開発や保守において重要な役割を果たセットに対しては 0.955，BigCloneBench に対してはす．意味的コードクローン検出技術を用いて，過去に0.938 の F 値を記録している．

開発されたソフトウェアの中から開発者が求める機能

このように近年，深層学習を用いた意味的コードクをもったソースコードを効率的に検索し再利用する

ローン検出手法が多く提案されている．しかし，既存

ことで，既存ソフトウェアを効率的に利用したソフト

手法には二つの問題点がある．一つ目は，コードク

ウェア開発を行うことができる．また，ソフトウェア

ローンの学習方法である．コードクローンの類似度はの保守性を低下させる原因となるコードクローンを検様々であり，構文的に類似していて簡単に識別できる出し集約することで，ソフトウェアの保守性を向上さ

コードクローンがある一方，構文的な類似度が低く，せることができる．

人によってコードクローンかどうか意見が別れるコー

現在まで，深層学習を用いた意味的コードクローン検

ドクローンも存在する．しかし，多くの既存手法で出手法が提案されている [1]〜[6]．例えば Zhang ら [1]は 2 値分類モデルが用いられているため，与えられたは，独自に開発した深層学習モデルである ASTNN を

コード片のペアは，コードクローンか非コードクロー

用いて意味的コードクローン検出に取り組んでいる．

ンかの 2 択で表現される．このように，明らかなコー† 大阪大学，吹田市

Osaka University, Suita-shi, 565–0871 Japan†† 産業総合技術研究所，池田市

Industrial Science and Technology, Ikeda-shi, 563–8577 Japana) E-mail: y-fujiwr@ist.osaka-u.ac.jp
DOI:10.14923/transinfj.2020JDP7073

678

電子情報通信学会論文誌 D Vol. J104–D

ドクローンも人によって意見が別れるコードクロー
ンも全て同じ重みで表現されるため，コードクローンの類似度情報が欠落した状態で学習を行っている．そのため，コードクローン検出精度が低下している可能性がある．二つ目は，深層学習モデルの汎化性能が正No. 9 pp. 678–689 © 一般社団法人電子情報通信学会 2021

論文／回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価

しく評価できていない点である．既存研究の評価実験

以降，2. では本論文の背景として，コードクローン，

では，同一プロジェクトから学習データセットと評価

コードクローン検出に用いられる代表的な深層学習モ

データセットを構築していることが多い．この場合，

デルである Siamese モデル，深層学習モデルの汎化性

二つのデータセットに依存関係があるため，深層学習

能の評価を阻害する原因であるデータセットの依存関モデルが学習プロジェクトに特化している可能性を否係について説明する．3. では，コードクローンの類似

定できず，深層学習モデルの汎化性能についての評価度を学習に反映するための提案手法について説明する．

は不十分である．

4. では，深層学習モデルの汎化性能をより正確に評価

そこで本研究では，回帰モデルを用いたコードクするための実験について説明する．5. では，深層学習

ローン検出手法を提案し，その汎化性能について評価を用いた意味的コードクローン検出の関連研究を紹介する．この手法では，コードクローンの学習方法を改する．最後に，6. で本研究のまとめについて述べる．

善するために，2 値分類モデルではなく回帰モデルを利用し，教師あり学習に使用する目的変数をコード片

2. 背

景

の類似度に変更する．このように学習させるコード

2. 1 コードクローン

クローンの重みを類似度に基づいて変更することで，

コードクローンとは，互いに一致または類似した

コードクローンの類似度情報を利用した学習を行う．

コード片のことである．一般的に，コードクローンの評価実験では，未学習データに対する深層学習モデ

存在は，ソフトウェアの保守を困難にする要因である

ルの挙動を確認し汎化性能を評価するために，学習といわれている [8]．コードクローンの主な発生要因

データセットと評価データセットを同一プロジェク

として，既存ソースコードのコピーアンドペーストにトから作成するのではなく，依存関係のない二つのプよる再利用，定型処理（イディオム）による発生，ツー

ロジェクトから作成した．そして，ASTNN などの四ルによるソースコード自動生成，偶然の一致による発つの手法で用いられている深層学習モデルを 2 値分生などが挙げられる [9]．Roy らはコード片の違いの類モデルから回帰モデルに変更し，汎化性能を比較し程度に基づき，コードクローンを以下の 4 タイプに分た．その結果，四つの内三つの深層学習モデルの汎化類している [10]．

性能が向上することが分かった．例えば ASTNN の場

タイプ 1 空白やタブの有無，コーディングスタイル，

合，学習データセットとして BigCloneBench のコード

コメントの有無などの違いを除き完全に一致するコー

クローンを利用し，評価データセットとしてオープン

ドクローン

ジャッジのソースコードを利用することによってデータイプ 2 タイプ 1 の違いに加え，識別子名，変数の型タセット間の依存関係を取り除くと，F 値は 0.938 かなどが異なるコードクローン

ら 0.392 に低下した．しかし，2 値分類モデルから回タイプ 3 タイプ 2 の違いに加え，文の挿入や削除，変帰モデルに変更することで F 値は 0.392 から 0.694 に更などが行われているコードクローン

向上した．

タイプ 4 類似した処理を実行するが，構文上の実装が本論文の貢献は以下の 2 点である．

異なるコードクローン
一般的に “意味的コードクローン” は，構文的な類••

2 値分類モデルから回帰モデルに変更し教師あり

似度が低いコードクローンを指す．また，Roy らは既学習の目的変数をコード片の類似度にすることで，存研究 [7] において，構文的な類似度が 50% 未満のタ

学習におけるコードクローンごとの重みを設定しイプ 3 クローンとタイプ 4 クローンをまとめて扱ってた．その結果，四つの深層学習モデルのうち三ついる．そのため本論文では，“意味的コードクローン”

で汎化性能が向上することを確認した．

を，構文的な類似度が 50% 未満のタイプ 3 クローン

未学習データに対する深層学習モデルの挙動を及びタイプ 4 のコードクローンと定義する．

確認し，汎化性能を評価するために，学習データ

また，Roy らは，コードクローン検出ツールを評価すセットと評価データセットを同一プロジェクトかるための大規模なデータセットとして，BigCloneBench

ら作成するのではなく，依存関係のない二つのプ（以降，BCB）[7] を作成した．このデータセットは，ロジェクトから作成した．

様々なオープンソースソフトウェアに存在するコードクローンを収集したものであり，タイプ 1 からタイプ
679

電子情報通信学会論文誌 2021/9 Vol. J104–D No. 9

め込み層は，コード片が入力されるとコード片の特徴
ベクトルを出力する層である．二つの埋め込み層は共通のパラメータをもつため，同じコード片が入力された場合に同じベクトルを生成することが，Siamese モ
デルの特徴である．2 値分類層は，二つの特徴ベクトル
図 1 コードクローン検出への Siamese モデル適用例

が入力されると，二つの特徴ベクトルに対応するコー
ド片がコードクローンであれば 1，非コードクローン

4 まで，様々な類似度のコードクローンが含まれている．BCB は現在に至るまで様々なコードクローン検出ツールの評価に利用されている．また，深層学習を用いてコードクローン検出を行う研究では，BCB は深層学習モデルの学習データセットとして利用されることもある．
また，近年では，ソースコード記述以外の情報を利用して意味的コードクローンデータセットを構築することがある．Roy ら [11] は大規模 Q&A サイト

StackOverflow（注 1）に注目した．同じ質問に寄せられた
正しく動作する回答ソースコードは互いに意味的コー
ドクローンであるという仮定の下，意味的コードク
ローンベンチマーク SemanticCloneBenchmark を提案した．Zhao と Huang [2] は，オープンジャッジシステ
ムにおいて，ある設問に対して提出されたコード片はその設問を解決するための機能をもつことに注目した．そして，同じ設問に提出されたコード片のペアは意味的コードクローンであり，互いに異なる設問に提出されたコード片のペアを非コードクローンであるという仮定の下でデータセットを作成し，Deepsim の評
価実験に利用した．Kamp ら [12] は，コード片を説明するコメントである JavaDoc の文章類似度が高いコー
ド片のペアは意味的コードクローンであるという仮定の下，意味的コードクローンデータセット SeSaMe を提案した．

2. 2 Siamese モデル
近年，深層学習を用いたコードクローン検出手法が多く提案されている [1]〜[6]．コードクローン検出に深層学習を適用する方法の一つに Siamese モデル [13]がある．このモデルは，二つの入力の類似度を推測するための教師あり学習モデルである．
コードクローン検出に対する Siamese モデルの適用
例を図 1 に示す．Siamese モデルはニューラルネット
ワークの一つであり，共通のパラメータをもつ二つの埋め込み層と，一つの 2 値分類層から構成される．埋（注 1）：https://stackoverflow.com/

680

であれば 0 を出力する層である．

2. 3 データセット間の依存関係
データセット間に依存関係がある状態とは，同じ
データセットを分割するなどの方法で学習データセッ
トと評価データセットを構築することにより，データの特徴がデータセット間で酷似している状態のことである．学習・評価データセット間に依存関係があると，深層学習モデルが過学習を起こしていた場合でも，評価データセットに対する予測精度が高くなる．そのため，深層学習モデルの汎化性能を正しく評価することができない．ソースコードの特徴として，識別子名を開発者が自由に定義できるため，ソースコードを学習する段階で全ての識別子名を網羅することは難しいという点がある．そのため，未学習の識別子名が評価
データセットに含まれている場合でも正しい予測を行うことができるかどうかという点は，深層学習モデルの汎化性能を評価する上で非常に重要である．しかし，同じデータセットを分割して学習・評価データセットを構築した場合，評価データセット内に出現する未学
習識別子名が少ない可能性があるため，深層学習モデ
ルの汎化性能を正しく評価できていない．
例えば ASTNN [1] の場合，BCB に含まれるコードクローンと非コードクローンをそれぞれ 3:1:1 の割合に分割し，学習データセット・検証データセット・評価
データセットとすることで，適合率・再現率・F 値はそ
れぞれ 0.998，0.884，0.938 を記録している．しかし，筆者らが BCB のコードクローンを学習した ASTNN
モデルを再現し，Deepsim [2] の評価実験に用いられたオープンジャッジデータセットを用いて評価したところ，適合率・再現率・F 値はそれぞれ 0.521，0.314，

0.392 を記録した．このように，学習データセットとの間に依存関係がある評価データセットを用いた場合には検出精度が高くても，依存関係のない評価データセットを用いると検出精度が大きく低下する場合がある．

論文／回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価

図 2 提案モデル

3. 提 案 手 法

一般的な意味的コードクローン検出モデルを 2 値分類モデルから回帰モデルに変更した例を図 2 に示す．

本章では，回帰モデルを用いたコードクローン検出

図 2 の提案モデルでは，2 値分類層の代わりに回帰層手法を提案する．多くの既存の意味的コードクローンを用いる．具体的には，学習に使用する損失関数を the

検出手法では，入力された二つのコード片がコードク

Binary Cross Entropy から the Mean Squared Error に変ローンか判定するために 2 値分類モデルを用いている．

更する．そのため，深層学習モデルの出力は整数ではそれに対して提案手法では，2 値分類モデルではなくなく実数となる．そして，入力されたコード片のペア回帰モデルを利用し，目的変数を抽象構文木（Abstract

がコードクローンかどうかを，深層学習モデルが出力

Syntax Tree，以降，AST）の類似度に変更することで，する類似度スコアに基づいて判定するために，しきい

コードクローンの類似度を学習に反映する．このよう

値 T を設定する．深層学習モデルが出力した類似度スにすることで，学習させるコードクローンの重みに類コアがしきい値 T より大きい場合はコードクローン，

似度を反映することができる．

小さい場合は非コードクローンであると判定する．

3. 1 回帰モデルの適用
多くの既存の意味的コードクローン検出手法では

2 値分類モデルが用いられている．このモデルは，入このように，提案手法は損失関数の変更を行うという単純な手法であるため，既存の深層学習モデルに対して容易に適用できる手法である．

力されたコード片のペアがコードクローンであれば 1

3. 2 目的変数の変更

を，非コードクローンであれば 0 を出力する．2 値分回帰モデルを用いて教師あり学習を行う場合，目的類モデルでは全てのコードクローンは同じ重みで表現

変数には実数を設定する必要がある．提案手法では，される．しかし，コードクローンには類似度の違いが

コードクローンの場合は以下で説明する二つのコードある．多くの人がコードクローンだと判断できるコー

片の AST 類似度を目的変数に設定し，非コードクロー

ドクローンがある一方，人によってコードクローンかンの場合は 0.0 を目的変数に設定する．この点が，単どうか意見が分かれるコードクローンもある．それらに AST 類似度が高いペアをコードクローンだと判定すのコードクローンを全て同じ重みで扱っているため，る手法との違いである．提案手法の構成をとることにコードクローンの類似度情報が欠落し，深層学習モデ

よって，“意味的コードクローンではない” と学習デー

ルのコードクローン検出性能を低下させている可能性

タ内でラベリングされているペアは，たとえ AST 類が考えられる．

似度の値が大きくても，0 が出力されるように深層学

そのため，本研究では 2 値分類モデルの代わりに回習モデルの学習が進行する．これにより，意味的コー帰モデルを用いる．2 値分類モデルの目的変数は整数

ドクローンに対するモデルの出力スコアは，非コードであるのに対し，回帰モデルの目的変数は実数である．

クローンに対する出力スコアよりも高くなるため，意

そのため，コードクローンの類似度を目的変数に設定

味的コードクローンを検出することができる．

し，コードクローンの類似度情報を欠落させることなく学習に利用することができる．

本研究では AST 類似度を算出するツールを，Zhangと Shasha が提案したアルゴリズム [14] を元に実装し681

電子情報通信学会論文誌 2021/9 Vol. J104–D No. 9

た．Zhang と Shasha のアルゴリズムは，順不同の木

ソッド単位であるため，本評価実験のコードクローンのペア (A, B) が与えられたとき，最小編集コストで木の粒度はメソッド単位とする．本評価実験では，深層A を木 B に変換する編集シーケンスを作成するため学習モデルの汎化性能を正確に評価するため，2. 3 でのものである．編集シーケンスは，ノードのラベル変説明した依存関係をもたないように学習データセット

更，木へのノード挿入，ノード削除の三つのノード編と評価データセットを構築した．また，本評価実験を

集操作の列である．また，編集コストは，各ノード編

行った環境を表 1 に示す．

集操作のコストの合計で定義され，通常，各操作のコ

4. 1 評 価 尺 度

ストは 1 である．Zhang と Shasha のアルゴリズムは

4. 1. 1 適合率・再現率・F 値

最小編集コストでの編集シーケンスの検出は保証されまず適合率とは，コードクローン検出ツールがコーているが，時間計算量はノード数の 2 乗に比例するた

ドクローンであると判定したコード片ペアのうち，評め，大きな木に対しては時間効率が悪くなる．

価データセット中に存在するコードクローンの割合でそこで本研究では，Hashimoto と Mori によって提ある．次に再現率とは，評価データセット中に存在す

案された編集コスト近似手法 [15] を用いて効率的にるコードクローンのうち，コードクローン検出ツール

木の編集シーケンスを計算できるようにした．また，がコードクローンだと判定することができた割合であノードの移動を新たに編集操作として認めることで，る．最後に F 値とは，適合率と再現率の調和平均であ

ソースコードの AST に特化した編集シーケンスを作る．これら三つの評価尺度は一般的にコードクローン

成するツールを実装した．そして，このツールで得ら検出ツールの評価尺度として用いられているため，本れた編集シーケンスを用いて AST 類似度を定義した．

評価実験でもこれら三つの評価尺度を用いる．

具体的には，ある AST のペア (A, B) の間の編集シー

4. 1. 2 AUC

ケンスを s，A, B のノード数を x, y ，編集シーケンス s

AUC (Area Under the Curve) [16] とは，受信者操作特によって新たに挿入及び削除がされておらず，何も編性（Receiver Operating Characteristic, 以降，ROC）曲集操作が適用されていないか，ラベル変更やノード移線の下の面積であり，分類モデルの評価尺度として用動の操作のみが適用されているノードの数を z としたいられる．ここで ROC 曲線とは，“1-再現率” を横軸，とき，ペア (A, B) の類似度 S を次のように定義した．

“適合率” を縦軸に設定し，しきい値を連続的に変化さS(A, B) =2zx+y

また，この AST 類似度 S を使用して，各コード片のペアに対する目的変数の値 V を次のように定義した．
ここで，コード片 a, b の AST は A, B である．

V(a, b) = S(A, B) (a, b がコードクローン )0
(a, b が非コードクローン )

せて “1-再現率” と “適合率” の交点をプロットしていき，プロットされた点を結んだ曲線である．ROC 曲
線を引く際にしきい値を変化させる必要があるので，

AUC は一見すると 2 値分類モデルに適用できないよ
うに思える．しかし，2 値分類モデルでもモデルの内部で類似度スコアは計算されているため，類似度スコアを抽出ししきい値を変化させることで AUC を適用することができる．AUC の値域は 0 から 1 の実数であり，1 に近いほど，適切なしきい値を設定した場合

そして，コード片の組 (a, b) を説明変数，V(a, b) を目の F 値が高く，分類性能が高いことを表す．コードク

的変数とした教師あり学習を行うことで，意味的コーローン分野において広く用いられる評価尺度である適ドクローン検出モデルを作成する．

合率・再現率・F 値に加えて，分類モデルの評価尺度

4. 評 価 実 験
深層学習を用いた意味的コードクローン検出において，2 値分類モデルから回帰モデルに変更することがコードクローン検出精度や深層学習モデルの汎化性能にどのような影響を与えるか確認するために，本研究として一般的な AUC を用いることによって，より多表1 実 験 環 境
OS
CPU
メモリ
深層学習ライブラリでは評価実験を行った．ここで，実験対象モデルの一つである ASTNN [1] のコードクローン検出粒度がメ
682

（注 2）
：https://www.pytorch.org/

macOS Catalina 10.15.7
8-Core Intel Xeon W 3.2GHz
128GB DDR4-2666
PyTorch（注 2）

論文／回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価

角的にコードクローン検出モデルを評価することがで

表 2 データセットの内訳

きる．

4. 2 データセット
既存の意味的コードクローン検出に関する研究では，一つのプロジェクトから学習データセットと評価

BCB
GCJ
SCB
SeSaMeCSN

コードクローン 非コードクローン
77508
24633
274048274048
861
861
114
114
300
300

データセットを作成し，深層学習モデルの学習と評価を行っている．しかし，この方法はデータセット間に

2. 3 で説明した依存関係があるため，深層学習モデル

タセットの内訳を表 2 に示す．

の汎化性能を正しく評価できていない．そのため，本4. 2. 2 評価データセット

研究では，学習データセットと評価データセットをそ本評価実験では，GoogleCodeJam データセット，

れぞれ別のプロジェクトから作成し学習と評価を行う

SemanticCloneBench，SeSaMe，CodeSearchNet データ

ことで，既存研究よりも正確に深層学習モデルの汎化セットの計四つの意味的コードクローンベンチマー

性能を評価する．具体的には，2. 1 で説明した五つのクを評価データセットとして利用した．各評価データ

データセットの内，目視確認が行われ，コードクロー

セットはユニークな視点から意味的コードクローンをンに対するラベリングの正確さが保証されており，学

定義している．また，構文的な類似度が高いことは，習に十分な数のコードクローンを含むデータセットでこれらの評価データセットにおいてはコードクローン

ある BCB を用いて学習データセットを作成し，BCBであることの必要条件ではないことから，BCB のコー

以外の四つのデータセットを用いて評価データセット

ドクローンとは性質が異なる．そのため，本評価実験を作成することで依存関係を排除した．以下に各デーの学習データセットと評価データセットの間に依存関

タセットの詳細を述べる．

係は存在しないと考えられる．各評価データセットの4. 2. 1 学習データセット

内訳を表 2 に示す．

本評価実験では，手作業で正確にラベリングされてまた，短いコード片は一般的にコードクローン検出いるコードクローンが最も多いデータセットが BCB

ツールの評価に利用しない．短さの基準は様々であり，であることから，BCB を学習データセットとして利用

コードの行数の観点からは 5 行 [2], [17] や 10 行 [18]，する．最初に，ASTNN に対して BCB のデータベース

トークン数の観点からは 50 トークン [3], [17] などがに登録されているコードクローンと非コードクローン

よく用いられる．コード片の行数は書き方に依存するを学習させた．しかし，コードクローンの数に比べてため，本研究では 50 トークンを短さのしきい値とし非コードクローンの数が大幅に少なかったため，モデて採用し，50 トークン以下のメソッドは評価データ

ルは非コードクローンの特徴を学習できず，ほぼ全て

セットから取り除いた．

のペアをコードクローンと判定するモデルが作成されGoogleCodeJam データセット（以降，GCJ）[2] は，た．そのため，次に 5000 個の非コードクローンを学

Zhao と Huang によって，オープンジャッジシステムに

習データセットに追加して学習を行った．この非コー提出された回答ソースコードを用いて構築されたデー

ドクローンは BCB に存在する二つのメソッドを組みタセットである．このデータセットは “ある同じ設問

合わせて作成した．その結果，ASTNN は非コードクに対して提出されたメソッドはその設問を解決するたローンの特徴を学習することができ，モデルが大部分めの機能をもつため，互いに意味的コードクローンでのペアをコードクローンと判定する現象は発生しなある” という仮定の下構築されている．また，非コー

かった．また，非コードクローンを更に追加し，コー

ドクローンは “互いに異なる設問に対して提出されたドクローンと非コードクローンを同じ数にして学習をメソッド” という仮定の下で収集されている．このと行った．その結果，モデルはコードクローン特徴をうき，コードクローンに比べて非コードクローンの数がまく学習することができず，大部分のペアを非コード

非常に多くなる．そのため，本評価実験では非コード

クローンと判定するモデルが作成された．そのため，クローンの数をコードクローンと同数になるように調本評価実験では，BCB に含まれるコードクローン，非整した．また，オープンジャッジの特性上，全てのメ

コードクローンと，新たに作成した 5000 個の非コード

ソッドに入力を受け付けるためのコード片や設問に対クローンを学習データセットして利用する．学習デー

する解答を出力するためのコード片が含まれる．これ683

電子情報通信学会論文誌 2021/9 Vol. J104–D No. 9

らのコード片は本評価実験では意図していないコードと，コードクローン候補ペアを手動で確認し，コードクローンとみなし，データセットに利用する回答ソー

クローンのラベリングを行った．ただし，485100 個

スコードからこれらのコード片を削除した．

全てを目視確認することは困難であるため，コードク

SemanticCloneBench（以降，SCB）[11] は，Al-omari

ローンであると判断したペアが 300 個現れるまでラらによって提案された意味的コードクローンのベンチ

ンダムな順で目視確認を行い，見つけた 300 個のペア

マークであり，Stack Overflow（注 3）のコード片を用いてをコードクローンとした．そして，SCB・SeSaMe と構築されている．このベンチマークは，“同じ質問に対同様に 300 個の非コードクローンを作成した．このとする回答コード片は互いに意味的コードクローンであき，300 個の非コードクローンペアの中に 485100 個る” という仮定の下構築されている．このベンチマーのコードクローン候補ペアは含まれないようにした．

クには 1000 個の意味的コードクローンが含まれてい4. 3 評価対象モデル

たが，そのうち 139 個に Javalang（注 4）で構文解析でき

本章では評価対象として選択した四つの深層学習モないメソッドが含まれていたため，残りの 861 個を利デルについて説明する．本評価実験で用いるデータ用した．更に本研究では，861 個の非コードクローン

セットにはコンパイルが難しいソースコードが含まれを作成した．具体的には，SCB に含まれるメソッドかるため，本評価実験ではソースコードをモデルに入力

らランダムに二つ選択し，それらがコードクローンとする際にコンパイルを必要としない深層学習モデルをして SCB に登録されていなければ，それらの二つの選択した．

メソッドを非コードクローンとしてデータセットに追加した．

4. 3. 1 ASTNN
ASTNN [1] は，ソースコードの AST をステートメ

SeSaMe [12] は Kamp らによって提案された意味的

ントレベルに分割してそれぞれベクトル化してから

コードクローンのデータセットで，オープンソースソ

Bi-directional Gated Recurrent Unit (Bi-GRU) [20] にス

フトウェアのメソッドが用いられている．このデータ

テートメントベクトルの深さ優先探索順列を入力する

セットは，“JavaDoc の文章が類似しているメソッドはことでコード片をベクトル化し，Siamese モデルを用

意味的コードクローンである” という仮定に基づいていて意味的コードクローン検出を行う深層学習モデル構築されており，900 個の意味的コードクローンが含である．著者らによってモデルのソースコードやデー

まれている．しかし，このデータセットには，API を

タセットが公開されており，コードクローン検出対象

呼び出すだけのメソッド等，短いメソッドが多く含まのコード片のコンパイルが不要なため，ASTNN を本れていた．また，JavaDoc の文章全体の意味は異なっ

評価実験に用いる．

ていても同じ単語が文章に使われているために，実際

4. 3. 2 LSTM・Bi-LSTMにはコードクローンではないがコードクローンとしLong Short-Term Memory（以降，LSTM）[21] は時てデータセットに含まれているペアが存在していた．

系列データに対応可能な深層学習モデルの一つであ

そのようなペアを取り除くため，本研究では SeSaMe

る．LSTM は前から順に系列を読み込むのに対し，Bi-

データセットを目視確認した．その結果，114 個のメ

directional Long Short-Term Memory（以降，Bi-LSTM）

ソッドペアが実際のコードクローンであることを確認

は前からの読み込みと同時に後ろからも系列を読み込した．そして，SCB と同様の方法で 114 個の非コード

む．ソースコードはトークン列などの系列データとしクローンを作成した．

て表現可能なため，LSTM と Bi-LSTM はコードクロー

CodeSearchNet （以降，CSN） [19] は，コード片にン検出手法に利用されている [1], [5]．よって，これら特化した検索エンジンである．本評価実験では，“CSNの深層学習モデルを，本評価実験における Siamese モ

でコード検索を行うとき，同じ検索クエリで検索可能

デルの埋め込み層に用いる．また本評価実験では，目なコード片は意味的コードクローンである” という仮的変数に使用する AST 類似度との親和性を考え，トー

定の下，485100 個のコードクローン候補ペアを収集しクン列ではなく，AST ノードの深さ優先探索順列（先た．その中から短いメソッドを含むペアを削除したあ行順）を説明変数に使用する．
本手法では最初に，ASTNN の構文解析器を利用し（注 3）：https://stackoverflow.com/（注 4）：https://github.com/c2nes/javalang

684てソースコードの構文解析を行い，AST ノードの深さ
優先探索順列（先行順）を作成する．2 番目に，作成し論文／回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価
表3 実 験 結 果
深層学習モデル データセット 分類層
適合率 再現率 F 値
ASTNN
GCJ
2 値分類
0.521
0.314 0.392
回帰
0.575
0.877 0.694
SCB
2 値分類
0.669
0.285 0.399
回帰
0.706
0.820 0.759
SeSaMe2 値分類
0.974
0.325 0.487
回帰
0.791
0.763 0.777
CSN
2 値分類
0.843
0.197 0.319
回帰
0.745
0.643 0.691
LSTM
GCJ
2 値分類
0.506
0.936 0.657
回帰
0.517
0.979 0.676
SCB
2 値分類
0.659
0.659 0.659
回帰
0.597
0.914 0.722
SeSaMe2 値分類
0.682
0.509 0.583
回帰
0.662
0.807 0.727
CSN
2 値分類
0.661
0.383 0.485
回帰
0.671
0.823 0.740

AUC
0.513
0.724
0.667
0.832
0.746
0.844
0.711
0.785
0.511
0.743
0.718
0.842
0.689
0.804
0.631
0.788

深層学習モデル データセット
Bi-LSTMGCJ
SCB
SeSaMe
CSN
FNN

GCJ
SCB
SeSaMeCSN

分類層
適合率 再現率 F 値
2 値分類
0.521
0.687 0.593
回帰
0.508
0.986 0.671
2 値分類
0.644
0.582 0.611
回帰
0.606
0.904 0.726
2 値分類
0.741
0.351 0.476
回帰
0.622
0.807 0.702
2 値分類
0.689
0.280 0.398
回帰
0.629
0.683 0.655
2 値分類
0.562
0.922 0.698
回帰
0.690
0.606 0.645
2 値分類
0.545
0.931 0.685
回帰
0.575
0.804 0.670
2 値分類
0.528
0.895 0.664
回帰
0.556
0.789 0.652
2 値分類
0.519
0.837 0.640
回帰
0.498
0.723 0.590

AUC
0.537
0.671
0.672
0.810
0.637
0.753
0.628
0.703
0.717
0.725
0.757
0.687
0.715
0.634
0.587
0.529

た順列の順番に従って AST ノードを一つずつ LSTM

し，Bi-LSTM の場合は平均で F 値が 0.169，AUC がまたは Bi-LSTM に入力する．その結果，ソースコー

0.116 だけ上昇した．FNN の場合は GCJ に対しては F

ドの埋め込みベクトルが出力される．その埋め込みベ

値と AUC が高くなったが，GCJ 以外のデータセット

クトルを用いて，Siamese モデルによる意味的コードに対しては F 値と AUC が低くなった．平均すると F

クローン検出を行う．

値が 0.033，AUC が 0.050 だけ低下した．以上のよう

4. 3. 3 FNNに，2 値分類モデルから回帰モデルに変更することにFeedforward Neural Networks（以降，FNN）[22] は，

よって，四つ中三つの深層学習モデルのコードクロー

ネットワークにループ構造が含まれない標準的なニューン検出精度が向上することが分かった．

ラルネットワークである．ソースコードメトリクスを

4. 6 考並べるなどの方法でソースコードのベクトル化を行評価実験では 2 値分類モデルと回帰モデルのコード察うことで，FNN をコードクローン検出に利用するこ

クローン検出精度比較を行った．その結果，FNN 以とができる [2], [3], [6], [23]．本評価実験では，ソース

外の深層学習モデルにおいてコードクローン検出精度

コードのコンパイルが不要な既存手法の一つであるが向上することが確認できた．FNN で精度が向上し

CLCDSA [23] を選択し，CLCDSA で利用されているなかったのは，入力としてモデルに与えたソースコー

ソースコードメトリクスと FNN モデルを再現して実ド構造に関する情報が，他のモデルと比べて少ないた験を行う．

めだと考えられる．FNN 以外のモデルは AST ノード

4. 4 回帰モデルのしきい値の深さ優先探索順列を入力として与えられ，AST ノー

3. 1 で説明したとおり，回帰モデルの出力は実数にドの順序関係を学習しているのに対し，FNN にはソーなるため，しきい値を設定する必要がある．そのためスコードメトリクスのベクトルを入力として与えてお事前実験として，BCB のソースコードを学習させたり，ソースコードの構造を学習していない．そのため，

ASTNN の回帰モデルを BCB のソースコードで評価

回帰モデルで類似度スコアを予測することが難しく，した．その結果，しきい値が 0.1 のときに最も F 値が精度がほとんど変わらなかったと考えられる．

高くなった．そのため，本評価実験における回帰モデ
ルではしきい値を 0.1 に設定した．

次に，回帰モデルを用いることによって学習に利用できるようになった AST 類似度の影響を調べるために，

4. 5 実 験 結 果

評価データにおけるコードクローンと非コードクロー

実験結果を表 3 に示す．この表から分かるように，2ンの AST 類似度と，回帰モデルに変更した ASTNN

値分類モデルから回帰モデルに変更すると，ASTNN，が出力した類似度スコアの分布を図 3 に示す．各図のLSTM，Bi-LSTM の場合は全てのデータセットに対し横軸はコード片ペアの AST 類似度 (AST Similarity) でて F 値と AUC が共に高くなった．ASTNN の場合はあり，縦軸は ASTNN が出力した類似度スコア (score)

平均で F 値が 0.341，AUC が 0.253 だけ上昇し，LSTMである．そして，コード片ペアごとの AST 類似度との場合は平均で F 値が 0.120，AUC が 0.157 だけ上昇

ASTNN による類似度スコアを黒点でプロットし，回
685

電子情報通信学会論文誌 2021/9 Vol. J104–D No. 9

図 3 AST 類似度・予測スコアの散布図と回帰直線

帰直線を青線で引いている．ただし GCJ のコード片
ペアは非常に数が多いため，コードクローンと非コー
ドクローンをそれぞれ 1000 ペアだけランダムに抽出しプロットしている．この図を見ると，AST 類似度と類似度スコアに相関があり，ASTNN は入力された
コード片ペアの AST 類似度に近い値を予測している
ことが分かる．また，図 3 から分かるように，多くのペアの AST 類似度は 0.0 から 0.4 の範囲に含まれている．そして，この範囲では全てのデータセットにおいてコードクローンの回帰直線が非コードクローンの回
帰直線の上部に描かれている．これは，同じ AST 類
似度のコードクローンと非コードクローンをそれぞれ

表 4 AST 類似度が 0.5 以上のコードクローンを取り除いた場合の実験結果
深層学習モデル データセット 分類層
適合率 再現率 F 値
ASTNN
SCB
2 値分類
0.582
0.231 0.331
回帰
0.649
0.782 0.709
SeSaMe2 値分類
0.957
0.234 0.376
回帰
0.744
0.713 0.728
LSTM
SCB
2 値分類
0.598
0.606 0.602
回帰
0.547
0.896 0.679
SeSaMe2 値分類
0.585
0.404 0.478
回帰
0.605
0.766 0.676
BiLSTM
SCB
2 値分類
0.575
0.521 0.547
回帰
0.556
0.883 0.683
SeSaMe2 値分類
0.622
0.245 0.351
回帰
0.562
0.766 0.649
FNN
SCB
2 値分類
0.492
0.918 0.640
回帰
0.519
0.769 0.619
SeSaMe2 値分類
0.474
0.872 0.614
回帰
0.493
0.745 0.593

AUC
0.634
0.802
0.700
0.811
0.685
0.814
0.626
0.762
0.634
0.780
0.572
0.702
0.732
0.656
0.661
0.570

入力した場合に，回帰モデルは非コードクローンよりもコードクローンに対して高い類似度スコアを出力する傾向があることを示している．したがってこの結果から，本評価実験における回帰モデルは AST の類似のコードクローンを取り除き，コードクローン検出精度の評価実験を行った．その実験結果を表 4 に示す．

度だけでなく意味的コードクローンの特徴を類似度ス

表 4 から分かるとおり，FNN 以外の場合で，提案手法

コアに反映する能力があると考えられる．

である回帰モデルの方が 2 値分類モデルよりも F 値とまた，図 3 から，SCB と SeSaMe データセットには，AST 類似度が高いコードクローンが比較的多く含まれていることが分かった．具体的には，AST 類似度が0.5 以上のコードクローンが，SCB に 146 個，SeSaMe
データセットに 20 個含まれていた．本論文では，意味的コードクローン検出手法，すなわち構文的な類似度が低いコードクローンを検出可能な手法に注目しているため，AST 類似度が低いコードクローンに対する検出精度を調べることが重要である．そのため，SCBと SeSaMe データセットから，AST 類似度が 0.5 以上

686

AUC は高かった．この結果から，検出対象を意味的
コードクローンに限定した場合でも，提案手法を適用することで FNN 以外の場合に深層学習モデルのコー
ドクローン検出精度が向上することが確認できた．
また，本論文では，評価データセットのコードクローン数と非コードクローン数を揃えて評価実験を行った．しかし，実際のソースコードに対してコード
クローン検出を行う場合，メソッドのペアがコードク
ローンかどうかを総当たりで調査する必要がある．そのため，評価データセットのコードクローンを構成するメソッドを利用し，メソッドのペアを総当たりで調論文／回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価査するための現実に即した評価データセットを作成し部で，2 値分類モデルと回帰モデルの F 値の優劣が逆た．その内訳を表 5 に示す．表 5 の “メソッド数” は，転した．しかし，AUC は表 3 と同様に FNN 以外の場

評価データセットのコードクローンを構成するメソッ

合で回帰モデルの方が高かった．AUC が高いというドの種類数に等しい．SCB では，コードクローンを構

結果から，しきい値（4. 4 参照）を評価データセットご成するメソッドに重複がないため，メソッド数はコーとに適切に設定すれば，FNN 以外の場合では回帰モデ

ドクローン数の 2 倍である．その他のデータセットでルの方が高精度なコードクローン検出を行うことがでは，一つのメソッドが複数のコードクローンを構成す

きる．実際に，SeSaMe に対する ASTNN の実験結果

るため，コードクローン数の 2 倍よりもメソッド数がに関して，F 値が最も高くなるしきい値について調査

少ない．また，CSN は，542 個のメソッドの全てのペした．その結果，2 値分類モデルはしきい値が 0.8 のアを作成したとき，評価データセットでラベリングさときに F 値が 0.0952 で最も高くなったのに対し，回帰れていた 300 個のコードクローンの他に 4. 2. 2 で説明

モデルはしきい値が 0.45 のときに F 値が 0.2625 で最したコードクローン候補が約 2000 個存在した．そのも高くなり，回帰モデルの F 値が 2 値分類モデルの F

ため，コードクローン候補の目視確認を行った．その値を上回ったことを確認した．ただし，本論文では意

結果，全体のコードクローン数は 697 個になった．

味的コードクローン検出モデルの汎化性能の評価を目

現実に即したデータセットでの実験結果を表 6 に示的としているため，4. 4 のように学習データセットのす．適合率が 0.001 を下回る場合があったため，表 6

検証結果に基づいてしきい値を決定する必要があり，の数値は小数第 4 位まで表記している．4. 2 のデータ

評価データセットごとにしきい値を変えることはでき

セットと比べて非コードクローン数が大幅に増えたた

ない．よって，評価データセットごとに適切なしきい

め，全ての場合で適合率と F 値が低下した．CSN 以

値が変わることなく一定になるように学習を行うこと

外のデータセットは含まれているコードクローンに変が，提案手法の課題の一つであることが分かった．

化がないため，再現率は変わらなかった．一方，CSN
データセットに新たに追加されたコードクローンを高5. 関 連 研 究

精度で検出することができたため，CSN データセット

現在まで，深層学習を用いた意味的コードクロー

に対する再現率は上昇した．また，SeSaMe に対するン検出に関する研究が多く存在する．Deepsim [2] は，

ASTNN の実験結果など，表 3 において 2 値分類モデ

制御/データフローグラフの情報を用いてコード片をルの適合率が高いデータセットと分類層の組合せの一ベクトル化し，それを順伝播型ニューラルネットワー
クを用いて解析し，意味的コードクローン検出を行

表 5 現実に即した評価データセットの内訳

う．CDLH [5] は，AST に対して tree-LSTM を適用す

メソッド数 コードクローン 非コードクローン
GCJ
1663
2740481107905
SCB
1722
861
1480920
SeSaMe
194
114
18607
CSN
542
697
145914ることで抽象構文木を用いたコードクローン検出を行う．CCLearner [6] は，Java のメソッドを，八つのカ
テゴリーからなるトークン発生頻度ベクトルとして表現し，それを順伝播型ニューラルネットワークを用

表 6 現実に即したデータセットでの実験結果
深層学習モデル データセット
ASTNN
GCJ
SCB
SeSaMe
CSN
LSTM

GCJ
SCB
SeSaMeCSN

分類層
適合率 再現率 F 値
2 値分類 0.1370 0.3141 0.1908
回帰0.2498 0.8771 0.3889
2 値分類 0.0013 0.2846 0.0026
回帰
0.0014 0.8200 0.0028
2 値分類 0.0247 0.3246 0.0458
回帰0.0148 0.7632 0.0290
2 値分類 0.0272 0.3257 0.0503
回帰0.0133 0.7604 0.0262
2 値分類 0.2019 0.9356 0.3321
回帰
0.2092 0.9785 0.3448
2 値分類 0.0012 0.6585 0.0024
回帰0.0009 0.9141 0.0017
2 値分類 0.0119 0.5088 0.0233
回帰
0.0097 0.8070 0.0192
2 値分類 0.0154 0.5538 0.0299
回帰
0.0087 0.9082 0.0173

AUC
0.34940.72280.67870.82850.6834
0.79880.78430.82630.50670.74120.72550.8436
0.66830.77580.76380.8602

深層学習モデル データセット 分類層
適合率 再現率 F 値
Bi-LSTM
GCJ
2 値分類 0.2145 0.6874 0.3270
回帰0.2037 0.9856 0.3377
SCB
2 値分類 0.0011 0.5819 0.0022
回帰
0.0010 0.9036 0.0019
SeSaMe2 値分類 0.0117 0.3509 0.0226
回帰
0.0095 0.8070 0.0187
CSN
2 値分類 0.0175 0.4534 0.0336
回帰0.0105 0.8077 0.0208
FNNGCJ
2 値分類 0.2407 0.9221 0.3817
回帰0.3547 0.6056 0.4474
SCB
2 値分類 0.0007 0.9314 0.0014
回帰0.0008 0.8037 0.0015
SeSaMe2 値分類 0.0066 0.8947 0.0132
回帰
0.0073 0.7894 0.0145
CSN
2 値分類 0.0053 0.8451 0.0106
回帰0.0056 0.7475 0.0110

AUC
0.54590.69430.67890.82200.62540.76400.73870.81970.71720.72560.74570.68250.71010.65360.6404
0.6353687

電子情報通信学会論文誌 2021/9 Vol. J104–D No. 9

いて解析し，コードクローン検出を行う．Oreo [3] や目的変数ではなく説明変数として AST 類似度を•

CLCDSA [23] は，Java のメソッドをソースコードメ

用いる手法が，意味的コードクローン検出精度のトリクスのベクトルで表現し，それを Siamese モデル

向上に有効かを調査する．

を用いて解析することで，意味的コードクローン検出

データセットごとに適切なしきい値が一定の値に•を行う．TBCCD [24] は，トークン情報をノードに付なるように深層学習モデルの学習を行う方法につ与した AST をベクトル化し，Siamese モデルを用いていて調査する．

解析を行うことで意味的コードクローン検出を行う．

文

FCCA [25] は，一つのソースコードから三つのソース
コード表現（トークン列，AST，制御フローグラフ）を[1]

novel neural source code representation based on abstract syntax

生成し，三つの深層学習モデル（LSTM，Tree-LSTM，tree,” Proc. ICSE 2019, pp.783–794, Montréal, QC, Canada, May

グラフ畳み込みネットワーク）を使ってそれぞれのソースコード表現を学習することで，意味的コードク

2019. DOI:10.1109/ICSE.2019.00086[2]

G. Zhao and J. Huang, “Deepsim: deep learning code functional
similarity,” Proc. FSE 2018, pp.141–151, Lake Buena Vista, FL,

ローン検出を行う．この手法は，一般的な既存手法で用いられている 2 値分類モデルではなく，非コードク

献

J. Zhang, X. Wang, H. Zhang, H. Sun, K. Wang, and X. Liu, “A

USA, Nov. 2018. DOI:10.1145/3236024.3236068[3]

V. Saini, F. Farmahinifarahani, Y. Lu, P. Baldi, and C.V. Lopes,

ローン・タイプ 1 クローン・タイプ 2 クローン・タイ“Oreo: Detection of clones in the twilight zone,” Proc. ESEC/FSE

プ 3 クローン・タイプ 4 クローンの 5 通りで分類を行

2018, pp.354–365, Lake Buena Vista, FL, USA, Oct. 2018.

う 5 値分類モデルであることが特徴の一つである．以

DOI:10.1145/3236024.3236026[4]

M. White, M. Tufano, C. Vendome, and D. Poshyvanyk,

上の研究では，同じデータセットから学習データと評“Deep learning code fragments for code clone detection,”

価データを作成しているため，学習データと評価デー

Proc. ASE 2016, pp.87–98, Singapore, Singapore, Sept. 2016.

タの間に依存関係が生じており，過学習が発生している可能性がある．一方，本評価実験では BCB から学

DOI:10.1145/2970276.2970326[5]

tional clone detection by exploiting lexical and syntactical informa-

習データを作成し，BCB 以外のデータセットから評価

tion in source code,” Proc. IJCAI 2017, pp.3034–3040, Melbourne,
Australia, 2017. DOI:10.24963/ijcai.2017/423

データを作成しているため，学習データと評価データの間に依存関係は生じておらず，深層学習モデルの汎[6]Proc. ICSME 2017, pp.249–260, Shanghai, China, Sept. 2017.
DOI:10.1109/ICSME.2017.46[7]clones,” Proc. ICSME 2014, pp.476–480, Victoria, BC, Canada,

出手法を提案し，その汎化性能について評価した．提Sept. 2014. DOI:10.1109/ICSME.2014.77[8]

肥後芳樹，楠本真二，井上克郎，“コードクローン検出とその関連技術，” 信学論（D），vol.J91-D, no.6, pp.1465–1481,

存手法で一般的に用いられている 2 値分類モデルの代わりに回帰モデルを用いることで，コードクローンのJ. Svajlenko, J.F. Islam, I. Keivanloo, C.K. Roy, and M.M. Mia,
“Towards a big data curated benchmark of inter-project code

本研究では，回帰モデルを用いたコードクローン検案手法では，深層学習によるコードクローン検出の既L. Li, H. Feng, W. Zhuang, N. Meng, and B. Ryder,“Cclearner: A deep learning-based clone detection approach,”

化性能をより正確に評価することができる．

6. む す び

H. Wei and M. Li, “Supervised deep features for software func-

June 2008.
[9]

I.D. Baxter, A. Yahin, L. Moura, M.S. Anna, and L.

AST 類似度を学習に利用した．評価実験では，学習とBier, “Clone detection using abstract syntax trees,” Proc.

評価に異なるデータセットを用いて依存関係を取り除

ICSM 1998, pp.368–377, Bethesda, MD, USA, March 1998.

き，適合率・再現率・F 値・AUC を用いて深層学習モ
デルのコードクローン検出精度を評価した．その結果，

DOI:10.5555/850947.853341[10]

uation of code clone detection techniques and tools: A qualita-

回帰モデルを用いると四つ中三つの深層学習モデルでtive approach,” Science of Computer Programming, vol.74, no.7,
pp.470–495, May 2009. DOI:10.1016/j.scico.2009.02.007

コードクローン検出精度が向上することを確認した．
今後の課題として以下の点を挙げる．

C.K. Roy, J.R. Cordy, and R. Koschke, “Comparison and eval-[11]

F. Al-Omari, C.K. Roy, and T. Chen, “Semanticclonebench: A
semantic code clone benchmark using crowd-source knowledge,”
Proc. IWSC 2020, pp.57–63, London, ON, Canada, Feb. 2020.

•

本論文の評価実験で用いたもの以外の既存手法や深層学習モデルに対しても，提案手法が意味的
コードクローン検出精度の向上に有効かを調査する．
688

DOI:10.1109/IWSC50091.2020.9047643[12]

M. Kamp, P. Kreutzer, and M. Philippsen, “Sesame:Adata set of semantically similar java methods,” Proc. MSR
2019, pp.529–533, Montreal, QC, Canada, Canada, May 2019.
DOI:10.1109/MSR.2019.00079

論文／回帰モデルを用いたコードクローン検出手法の提案と汎化性能の評価[13]

J. Bromley, J.W. Bentz, L. Bottou, I. Guyon, Y. Lecun,
E. Sackinger,

and R. Shah,“Signature verification us-

ing a ‘siamese’ time delay neural network,” Int. J. Pattern Recognit. Artif. Intell., vol.7, no.4, pp.669–688, 1993.
DOI:10.1142/S0218001493000339[14]

K. Zhang and D. Shasha, “Simple fast algorithms for the editing
distance between trees and related problems,” SIAM J. Comput.,
vol.18, no.6, pp.1245–1262, 1989. DOI:10.1137/0218082[15]

M. Hashimoto and A. Mori, “Diﬀ/TS: A tool for fine-grained struc-藤原 裕士
平 29 大阪大学基礎工学部情報科学科卒．
令和元年度大阪大学大学院情報科学研究科
博士前期課程了．現在，大阪大学大学院情報科学研究科博士後期課程に在学中．令和元年より，産業技術総合研究所リサーチア
シスタントに従事．深層学習を用いたコー
ドクローン分析手法に関する研究に従事．

tural change analysis,” Proc. WCRE 2008, pp.279–288, Washington, DC, USA, 2008. DOI:10.1109/WCRE.2008.44[16]

A.P. Bradley, “The use of the area under the roc curve in the evaluation of machine learning algorithms,” Pattern Recognit., vol.30,
no.7, pp.1145–1159, 1997. DOI:10.1016/S0031-3203(96)001422[17]

K. Kim, D. Kim, T.F. Bissyandé, E. Choi, L. Li, J. Klein,
and Y.L. Traon, “FaCoY: A code-to-code search engine,”
Proc. ICSE 2018, pp.946–957, Gothenburg, Sweden, 2018.
DOI:10.1145/3180155.3180187[18]

Y. Gao, Z. Wang, S. Liu, L. Yang, W. Sang, and Y. Cai,

森彰

1995 京都大学大学院工学研究科情報工学

専攻博士課程了（博士（工学））．英国オックスフォード大学訪問研究員，米国カリフォルニア大学サンディエゴ校ポスドク，
北陸先端科学技術大学院大学助手を経て，2001 産業技術総合研究所入所．現在同所研究チーム長．ソフトウェア工学及びコンピューターセキュリ
ティに関わるプログラム解析技術の研究に従事．

“Teccd: A tree embedding approach for code clone detection,”
Proc. ICSME 2019, pp.145–156, Cleveland, OH, USA, Oct. 2019.

井上 克郎（正員：フェロー）DOI:10.1109/ICSME.2019.00025
[19]

[20]

[21]

[22]

H. Husain, H.-H. Wu, T. Gazit, M. Allamanis, and M.

昭 59 大阪大学大学院基礎工学研究科博

Brockschmidt, “Codesearchnet challenge: Evaluating the state of士後期課程了（工学博士）．同年大阪大学

semantic code search,” 2019. http://arxiv.org/abs/1909.09436

基礎工学部情報工学科助手．昭 59〜61，ハ

D. Tang, B. Qin, and T. Liu, “Document modeling with gatedワイ大学マノア校コンピュータサイエンス

recurrent neural network for sentiment classification,” Proc.

学科助教授．平 3 大阪大学基礎工学部助教

EMNLP 2015, pp.1422–1432, Lisbon, Portugal, Sept. 2015.

授．平 7 同学部教授．平 14 より大阪大学

DOI:10.18653/v1/D15-1167

大学院情報科学研究科教授．平 28 より産業技術総合研究所サ

S. Hochreiter and J. Schmidhuber, “Long short-term mem-

イバーフィジカルセキュリティー研究センター特定フェロー．

ory,” Neural Comput., vol.9, no.8, pp.1735–1780, 1997.

ソフトウェア工学，特にコードクローンやコード検索などのプ

DOI:10.1162/neco.1997.9.8.1735

ログラム分析や再利用技術の研究に従事．

J. Schmidhuber, “Deep learning in neural networks: An overview,”
Neural Netw., vol.61, pp.85–117, 2015. DOI:10.1016/j.neunet.
2014.09.003[23]

K.W. Nafi, T.S. Kar, B. Roy, C.K. Roy, and K.A. Schneider,“Clcdsa: Cross language code clone detection using syntacticalfeatures and api documentation,” Proc. ASE 2019, pp.1026–1037,
San Diego, CA, USA, Nov. 2019. DOI:10.1109/ASE.2019.00099[24]

H. Yu, W. Lam, L. Chen, G. Li, T. Xie, and Q. Wang, “Neuraldetection of semantic code clones via tree-based convolution,”
Proc. ICPC 2019, p.70–80, Montreal, Quebec, Canada, 2019.
DOI:10.1109/ICPC.2019.00021[25]

W. Hua, Y. Sui, Y. Wan, G. Liu, and G. Xu, “Fcca: Hybrid code representation for functional clone detection using attention networks,” IEEE Trans. Reliab., pp.1–15, 2020.
DOI:10.1109/TR.2020.3001918（2020 年 11 月 18 日受付，2021 年 2 月 26 日再受付，
5 月 17 日早期公開）

689