記事またはフォーラムの投稿がデータベース内の重複エントリかどうかを検出しようとしています。私はこれにいくつかの考えを与えました、コンテンツを複製する誰かが3つのうちの1つを使用してそうするという結論に達しました(検出するのが困難な降順で):
- 単純なコピーはテキスト全体を貼り付けます
- テキストの一部をコピーして貼り付け、独自のテキストとマージします
- 外部サイトから記事をコピーし、自分のものになりすます
分析のためのテキストの準備
基本的に異常。目標は、テキストを可能な限り「純粋」にすることです。より正確な結果を得るために、テキストは次のように「標準化」されます。
- 重複する空白を取り除き、先頭と末尾をトリミングします。
- 改行は\ nに標準化されます。
- HTMLタグが削除されます。
- Daring Fireball URLと呼ばれるRegExの使用は取り除かれます。
- 私はアプリケーションでBBコードを使用しているので、そうなります。
- (ä)セント語および外国語(英語以外)は、外国語以外の形式に変換されます。
各記事に関する情報は、(1)統計表と(2)キーワード表に保存します。
(1)統計表 次の統計がテキストコンテンツについて保存されます(この投稿と同様)。
- テキストの長さ
- 文字数
- 単語数
- 文数
- 文ごとの平均単語
- 自動可読性インデックス
- 霧吹きのスコア
ヨーロッパ言語の場合、音節のカウントを使用しないため、コールマン・リアウおよび自動可読性インデックスを使用する必要があります。したがって、かなり正確なスコアを生成する必要があります。
(2)キーワード表
キーワードは、「the」、「a」、「of」、「to」などのストップワード(一般的な単語)の膨大なリストを除外することによって生成されます。
サンプルデータ
- text_length、3963
- letter_count、3052
- word_count、684
- センテンスカウント、33
- word_per_sentence、21
- gunning_fog、11.5
- auto_read_index、9.9
- キーワード1、殺された
- キーワード2、役員
- キーワード3、警察
記事が更新されると、上記の統計はすべて再生成され、まったく異なる値になる可能性があることに注意してください。
上記の情報を使用して、初めて公開される記事がデータベース内に既に存在するかどうかを検出するにはどうすればよいですか?
私が設計するものは完璧ではないことを知っています。最大のリスクは、(1)重複していないコンテンツに重複のフラグが立てられることです(2)システムは重複したコンテンツを許可します。
そのため、アルゴリズムは、0から重複リスクなし、5が重複可能、10が重複であるリスク評価番号を生成する必要があります。5を超えると、コンテンツが重複している可能性が高くなります。この場合、コンテンツにフラグを付け、重複する可能性のある記事にリンクし、人間が削除するか許可するかを決定できます。
前に言ったように、記事全体のキーワードを保存していますが、段落ごとに同じことができるかどうか疑問に思います。これは、DB内のデータをさらに分離することも意味しますが、最初の投稿で(2)を検出するのも簡単になります。
私は統計間の加重平均を考えていますが、どのような順序で、どのような結果になるでしょうか...