← 最新の論文
💻 computer science

Can Code Evaluation Metrics Detect Code Plagiarism?

本論文は、コード評価指標、特に CrystalBLEU が、さまざまな改変レベルにわたるソースコードの盗用を効果的に検出でき、前処理を適用した場合、Dolos や JPlag といった専用の盗用検出ツールを凌駕するか、あるいはそれらと同等の性能を発揮することを実証的に示している。

原著者: Fahad Ebrahim (The University of Warwick), Mike Joy (The University of Warwick)

公開日 2026-04-29
📖 1 分で読めます☕ さくっと読める

原著者: Fahad Ebrahim (The University of Warwick), Mike Joy (The University of Warwick)

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

あなたが数百のプログラミング課題を採点する教師だと想像してください。あなたは一部の学生が互いの答案をコピーしたと疑っていますが、彼らはフォントを変更したり、変数名を変更したり、コードの順序を入れ替えたりして、それを隠そうとしています。これが「ソースコードの盗用」という問題です。

長年にわたり、教師たちはこれらの不正行為者を捕まえるために、特殊な「探偵ツール」(JPlag や Dolos など)を用いてきました。これらのツールは、コピーされたコードを見つけるために特別に設計された、専門的な法科学スキャナーのようなものです。

しかし最近、技術界で新しいタイプのツールが人気を集めています。「コード評価指標(CEMs)」です。これらは元々異なる目的のために作られた「品質チェッカー」だと考えてください。つまり、コンピュータが生成したコードと完璧な「参照コード」を比較し、コンピュータが宿題をどの程度よくこなしたかを評価するためのものです。これらは不正行為者を捕まえるために作られたのではなく、AI を採点するために作られたのです。

この論文は、単純な問いを投げかけます:これらの「品質チェッカー」(CEMs)は、同時に「盗用探偵」として機能できるでしょうか?

以下は、著者が簡単な比喩を用いてこれを検証した物語です。

実験:「コピー&ペースト」のレベル

研究者たちは、明らかなコピーだけを見たわけではありませんでした。彼らは、簡単からほぼ不可能まで、6 つの異なるレベルの「盗難隠蔽」に対してツールをテストしました。

  • レベル 1(外見の変更): フォントの色を変更したり、余分なスペースを追加したりする。(発見しやすい)
  • レベル 2-3(名前変更ゲーム): 「myVariable」を「x」に変更したり、文の順序を入れ替えたりする。(中程度の難易度)
  • レベル 4-5(構造のシャッフル): ループを別の種類のループに変換したり、1 つの大きな関数を 3 つの小さな関数に分割したりする。(困難)
  • レベル 6(論理の書き換え): 完全に異なるように見えるが、全く同じことをするよう、論理全体を書き換える。(非常に困難)

彼らは、2 つの大きな実学生コードのデータセットを用いて、5 つの異なる「品質チェッカー」(CEMs)を、2 つの「法科学スキャナー」(JPlag と Dolos)に対してテストしました。

ツール:彼らがどのように「考える」か

結果を理解するには、これらのツールがコードをどのように「見る」かを知ることが役立ちます。

  • 語彙的ツール(CrystalBLEU など): これらは単語(トークン)を見ます。本を読んで、一致する単語の数を数えるようなものです。CrystalBLEUは賢く、「import java」や「public class」といった一般的なフレーズ(「ボイラープレート」)を無視するため、誰もが同じテンプレートを使っていることに惑わされません。
  • 構造的ツール(TSED など): これらはコードの形状を見ます。2 つの建物の骨格を比較するようなものです。
  • 意味的ツール(CodeBERTScore など): これらは、人間の読者のように、コードの「意味」を理解しようとします。

発見:誰がレースに勝ったか?

1. 「生」のテスト(前処理なし)
ツールが、学生が提出したままのコード(コメント、余分なスペース、テンプレートを含む)をそのまま見た場合:

  • Dolos(専任の探偵)が総合的な勝者でした。不正行為者を発見する点で最も一貫していました。
  • しかし、CrystalBLEU(品質チェッカー)が非常に僅差で 2 位に入り、古い探偵であるJPlagに勝利しました。
  • 「連携」戦略: 著者は、上位 3 つの品質チェッカーを組み合わせて、FusionTop3というスーパーツールを作ってみました。このチーム連携は、最高の探偵である Dolos とほぼ同等の性能を発揮しました。

2. 「前処理済み」のテスト(まずコードをクリーニング)
テスト前に、研究者たちはコードを「クリーニング」しました。コメント、余分なスペース、標準的なテンプレート行を削除したのです。これは、指紋を探す前に犯罪現場のほこりを掃除するようなものです。

  • 変化: クリーニング後、品質チェッカーの性能は大幅に向上しました。CrystalBLEUFusionTop3チームは、実際には総合ランキングで Dolos を上回りました
  • なぜか? クリーニングプロセスは、品質チェッカーを混乱させた「ノイズ」を取り除き、実際のコード構造に集中することを可能にしました。

3. 難易度曲線(「L4」の壁)
これが最も重要な発見でした。

  • レベル 1、2、3: すべてのツール(専任の探偵も品質チェッカーも)は優秀でした。ほとんど全員を捕まえました。
  • レベル 4 以降: 性能は全員で急激に低下しました。
  • 比喩: 学生がレシピをコピーするが、材料、調理法、手順の順序を変えても、出来上がった料理の味が同じだと想像してください。最高のツールでさえ、「これは同じレシピだ!」と断言することに苦労しました。
  • 例外: CrystalBLEUは、最も困難なレベル(レベル 6)でも驚くほど強く残りましたが、他のツールはより苦労しました。

限界:彼らが失敗した場所

  • CodeBERTScore(「意味」の読み手): このツールは惨敗しました。コピーされていないコードさえも、高い類似度スコアを与えました。まるで、建物にいる全員が人間に見えるという理由で、全員を泥棒だと考える警備員のようなものです。
  • TSED(「骨格」の読み手): 学生が構文(単語)を変更したが論理は維持した場合、苦労しました。これは「名前変更ゲーム」に対処できませんでした。
  • 「L4」の壁: 専任の探偵であれ品質チェッカーであれ、どのツールも、高い誤検知率なしに、最も複雑な形態の盗用(レベル 4、5、6)を確実に捕まえることはできませんでした。

結論:これは何を意味するか?

この論文は、コード評価指標は確かに盗用を検出でき、場合によっては(特にコードをクリーニングした後)、そのために作られた専門ツールと同じくらい、あるいはそれ以上にうまく機能すると結論付けています。

しかし、これらは魔法の弾丸ではありません。

  • 最良の用途: これらはスクリーニングに最適です。教師に対して、「ねえ、まずこの 10 組を見て。怪しいよ」と、提出物を迅速にランク付けして示すことができます。
  • 最終判断用ではない: 複雑な論理の変更(レベル 4 以上)に苦労するため、最終的な判断は常に人間の教師が行うべきです。

要点: 専門的な盗用検出器を捨ててはいけません。代わりに、これらの新しい「品質チェッカー」を、特に最初にコードをクリーニングする場合、不正行為者の隠蔽工作を捕まえるのを助けるための、強力な補完ツールとして使用できます。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →