実験レポート採点で疲れた合間に作ってみた
例年コピペレポートが数件見つかるのですが、そういうレポートに遭遇すると「採点時間使わせるなよ」と怒りゲージが溜まるか、ダークサイドに転がり落ちそうになります。まだ採点途中ですが、精神安定のために簡易なコピペチェッカーを作ってみました。シェルスクリプトな実験だったので、シェルスクリプトで。
流れとしては次のようになってます。細かいこと無視して重複行チェックを閾値調整してるだけ。空白含むファイル名の対処とか懐かしい。
- レポートファイル(texファイル)の一覧生成
- 二重ループにして全組み合わせをチェック
- コピペ判定は「ファイルの中身をsort + uniqしてから共通行数をカウント」して、これがある閾値以上ならイエローフラグ立てる
- 見やすいように重み調整してGraphvizで可視化
注意: これはあくまで共通してる行数をカウントしてるだけ。例えば texファイルのヘッダ部分や見出し等、同じ課題でテンプレートファイルも用意してるので、様々なところで同一行が出てきます。閾値もあまり良く考えずに見やすい範囲で調整しただけなので、「今回の結果=コピペ」というわけじゃない。あくまでも共通行が多いよ、というだけの出力です。
例えば、大きなクラスタの中央にe155727さんがいますが、これはtex勉強会主催者でその流れでテンプレート配ってたんだよね。共通行が多いのは内容のコピペじゃなくて、テンプレート。これは仕方ない。
document開始行以降で重複チェックするだけでも質が上がりそうですが、ま、目安なのでこのぐらいで。というかそこまでシェルスクリプトで書きたくないし、目視抽出してたコピペ関係も出てきてるので、とりあえず満足。