私は自分の大学のグループ プロジェクトに取り組んでおり、これはコンピュータ サイエンスの剽窃検出に使用される予定です。
私のグループは主に、次のジャーナル記事で説明されているハッシュ/フィンガープリント手法から離れています: Winnowing: Local Algorithms for Document Fingerprinting . これは、 MOSS盗作検出システムの仕組みと非常によく似ています。
私たちは基本的に、仲間の学生のソース コードの k-gram ハッシュを取得し、関連する一致をデータベースで検索します (ドキュメントのフィンガープリントとして選択するハッシュを決定する方法の多くの最適化と共に)。
私たちのプロジェクトの最初の側面は、検出システムが処理できる各ファイル形式に関するセマンティックな知識を保持する「フロントエンド」部分です。これにより、剽窃検出の目的で不要になったドキュメントから詳細を取り除くことができます。基本的に、さまざまなプログラミング言語のすべての変数の名前を定数文字列または文字に変更できるようにしたいと考えています。
さまざまな言語のソース コード ファイル内のすべての変数の名前を定数に変更するために使用できる軽量のソリューション (レクサー ジェネレーターなど) は何ですか?
私たちのプロジェクトはJavaで書かれています。
理想的には、言語ごとに文法を定義できるようにしたいだけで、フロント エンドはその言語のソース ファイル内のすべての識別子の名前を何らかの定数に変更できるようになります。次に、サポートしたいファイル形式 (Java、C++、Python など) ごとにこれを行います。