web-dev-qa-db-ja.com

盗作の検出–どのアルゴリズム?

私は現在、テキストの本文を読み取り、それを検索エンジンの結果(特定のテキストのサブストリングの検索から)と比較するプログラムを作成しています。たとえば、学術論文で盗作を検出することを目的としています。

比較される2つの文字列は、元の紙とWebページのプレーンテキストです(ページのFloki.text/2<body> によって返されます)。どちらの場合も、句読点と書式はすべて削除され、スペースに置き換えられています。

これに使用する編集距離アルゴリズムの種類はわかりません。私はすべてのものを調べました Wikipediaにリストされています 、そして...

  • レーベンシュタイン距離(およびDamerau-Levenshtein)は、(それらが)たとえば、いくつかの盗まれた文章は、他の点では明確でない論文の真ん中にあります。
  • 最長の共通部分列は、意味のない単語の非常にわずかな言い換え(「もの」対「もの」)で失敗する可能性があります(?)。
  • 誰かが全体をコピーしない限り、2つのテキストはおそらく正確に同じ長さではないため、ハミング距離は完全に互換性がありません。
  • JaroとJaro-Winklerは短い文字列用です。ある紙の文章を切り取って別の紙の最初に挿入した場合、特定の位置の近くだけを見る方法は機能しません。
6
David Heyman

これはXYの答えですが、

テキストの本文を読み取り、それを検索エンジンの結果(特定のテキストの部分文字列の検索から)と比較します。たとえば、学術論文で盗作を検出することを目的とします。

テキスト検索自体が問題に対する適切で実用的な答えのようです。盗用を検出する基本的な方法は次のとおりです。

  1. ターゲットドキュメントが盗用された可能性のあるドキュメントのコーパスから始めます。
  2. たとえば、それらのドキュメントに対して(たとえば、SolrまたはElasticsearchを介して)Luceneベースの逆索引を作成します。
  3. ターゲットドキュメントを一連のフレーズに分割します(たとえば、各センテンス/サブセンテンス/ nワードごとに分割します)。
  4. コーパスで各フレーズを検索します。そのフレーズが盗用された可能性のある一連の(空の可能性がある)ドキュメントセット(および取得された可能性がある各ドキュメント内の場所)を返します。
  5. 盗用のこれらの潜在的なインスタンスのすべてを収集します。これがフレーズの小さなしきい値を超える場合は、標的がおそらく盗用されていると警告します。

このアプローチには、文字列を比較するよりもいくつかの利点があります。

  1. これにより、ターゲットドキュメントの盗用された可能性のあるものと、それがどこから来たのかを正確に特定できます。これにより、人間が出力を確認して可視化し、出力についてインテリジェントな決定を行うことができます。
  2. 優れたインデックス作成ソリューションは、スペルミスやさまざまなストップワード/フレージングの小さな違いを回避する機能を購入します。
  3. 優れたインデックス作成ソリューションは、非常によく拡張されます。
  4. 自己管理されたコーパスを持つことは、インターネットを検索するよりもはるかにうまく機能します。インターネットは非常にワイルドで手に負えない場所であり、偽りの試合に遭遇し、重要な試合を見逃す可能性があります。つまり、グーグルはウィキペディアからコピーする学生を捕まえるかもしれませんが、あなたが非常に、非常に注意深くなければ、ランダムなブログからコピーする人々を誤って非難する可能性もあります。また、ArXivの論文のようなものは見逃しがちです。学生が日陰のウェブサイトから購入できるエッセイ、他の学生から書かれた過去のエッセイは、非常に現実的な盗作の情報源です。

ターンイットインについて考える場合、彼らのアプローチは彼らがそうであるようにこれと同様でなければなりません

  1. エッセイが盗作された可能性がある場所を教えてください
  2. 過去の論文、非Wiki、Coを含めることができます。調達。

Turn-it-inなどがこのようなシステムを自分で設定するだけで追加できる値(正直言ってそれほど難しくありません)

  1. 参照コーパスのサイズと品質
  2. 彼らのUIの開発時間
  3. インデックス作成と検索の調整
  4. 盗用の可能性のあるフレーズとしきい値をどのように決定するかについての高度化。
2
walpen

あなたの意図は、テキスト本文を検索エンジンの結果と比較して盗用を検出することです。

残念ながら、検討するアルゴリズムは文字レベルで機能します。テキストが長くなると時間がかかり、反転したテキストのブロックや段落の検出にはあまり適していません。

Wordのアプローチを選択しないのはなぜですか。テキストと検索結果で一意の単語の並べ替えられたリストを作成し、類似性(一般的な単語の割合)を探します。これは非常に効率的です。類似性が特定のクォータを超える場合は、文字レベルでアルゴリズムを使用するか、個々の文字ではなく単語の文字列を使用して同様のアルゴリズムを使用するかにかかわらず、より時間のかかる比較を行うことができます

2
Christophe