2009-10-14 1 views
5

こんにちは皆、盗作アナライザ(Webコンテンツと比較)世界中

背景

私はコンピュータサイエンスの最終年の学生です。私はJavaとMySQLを使用して、剽窃分析であるFinal Double Moduleプロジェクトを提案しました。

盗作アナライザは以下となります。

  1. スキャンアップロードされたドキュメントのすべての段落。どのウェブサイトからコピーされた各段落の割合を分析します。
  2. 各段落のどのウェブサイトから正確にコピーされた語だけを強調表示します。

私の主な目的は、可能な限り改善されたTurnitinのようなものを開発することです。

私はプログラムを開発するのに6ヶ月以内です。私は以下をスコープしました。

  1. Webクローラーの実装。おそらく、Lucene APIを利用するか、独自のクローラを開発することになるでしょう(どちらが時間の発展とユーザビリティの面で優れていますか?)。
  2. ハッシュと索引付け。検索と分析を改善する。

質問

ここに私の質問は以下のとおりです。

  1. できMySQLの店舗多くの情報?
  2. 重要なトピックがありませんでしたか?
  3. このプロジェクトに関するあなたの意見はありますか?
  4. 類似性解析を実行するための提案やテクニックはありますか?
  5. 段落だけでなく、ハッシュできますか?

ご協力いただきありがとうございます。 ^^

+2

これはあなたの仲間の生徒に芝生としてカウントされませんか? ;-) – Steve314

+0

正規化された圧縮距離を調べることができます:http://stackoverflow.com/questions/1085048/how-would-you-code-an-anti-plagiar-site/1085085#1085085 – Stephan202

+1

ありがとうそれを強調表示するために多くのStephan202! ;) –

答えて

4

あなたに利用できるリソースが不足しているために失敗しない別のプロジェクトを検討しましたか?

本当に「おい、ウェブ全体をクロールしよう!」ルートでは、HBaseやHadoopのようなものや多くのマシンを分解する必要があります。 MySQLは非常に不十分です。 TurnItInは、120億ページをクロールして索引付けしたと主張しています。 Googleのインデックスは[編集された]ようなものです。 MySQL、つまりそのRDBMSについては、そのレベルまで拡大することはできません。

あなたが驚くほど巧妙なことをして、Googleのインデックスに既に存在するドキュメントの盗作を明らかにするクエリをGoogleに構築する方法を見つけ出すのが現実的な唯一の方法です。メッセージキューを使用して検索APIに同期してアクセスすることをお勧めします。メッセージキューを使用すると、クエリを適度な速度に絞り込むこともできます。ストップワードを避けても、ほぼ完全一致を探しているので、クエリは次のようになります。"* quick brown fox jumped over * lazy dog""* * went * * *"のようになり、94,000,000ヒットの結果を無視します。それらは盗作ではなく、有名な引用や過度の一般的な質問になるでしょう。あなたは、元の文章やそれに類するものと完全に一致する10ヒットまたは数千ヒットのいずれかを探しています。そして、それでも、これはちょうどヒューリスティックであるべきです - 赤い旗がたくさんあるのでなければ、文書にフラグを立てないでください。逆に、すべてがゼロヒットに戻った場合、それらは異常に元のものです。ブック検索では、通常、より正確なクエリが必要です。十分に疑わしいものは元のページのHTTP要求を引き起こすはずであり、最終的な決定は常に人間の範疇でなければなりません。文書がその出典を引用している場合、それは盗作ではないので、それを検出したいと思うでしょう。偽陽性は避けられず、定数ではないにしても共通する可能性が高い。

TOSが恒久的にGoogleのインデックスのいずれかの部分を格納禁止されることに注意してください。

どのようにして構築しても、非常に難しいことを選択しています。また、Googleに関係しない限り、非常に高価で時間がかかる可能性があります。

+0

また、ウィキペディアのページのヒット数は他のヒット数よりも高く、少なくともウィキペディアの場合は、コンテンツ全体をダウンロードして直接処理するのが妥当です。 –

+1

与えられたすべてのアドバイスと重大な問題が強調表示された100万人のBob Amanに感謝します。あなたの親切は本当に大変に感謝しています。 まあ、ボブは、私が提案したプロジェクトに関して私のためにUターンはありません。私はこれに挑戦するという思いをしたので、私はベストを尽くします。私の夢が実現することを願っています。私はいつも私の興味の中で何かをしたいと思っており、それは私のスキルを向上させるのに役立ちます。 私はGoogle検索APIを探求します。私はLucene(Javaオープンソース検索API)を代わりに使用することを検討しているため、Googleによる制限があるかどうかは不思議です。再度、感謝します! ;) –

+0

ちなみに、ボブ・アマンは、この6ヶ月間のうちに、何か問題があれば、私はここであなたのガイドラインを尋ねることができますか? あなたの知識を共有したいと思って本当にありがとうございました。過去数週間の忙しさから遅れて返事をして申し訳ありません。 –

1

1)独自のWebクローラーを作成しますか?あなたはこの仕事のためだけにすべてのあなたの利用可能な時間を簡単に使用できるように見えます。そのために標準的なソリューションを試してみてください:それはあなたのプログラムの中心ではありません。

あなたはまだあなた自身のものを作る機会がありますか、後で別の機会をお試しください! あなたのプログラムは特定のクローラ/ APIに縛られないように、ローカルファイルに対してのみ動作するはずです。

たぶん、あなたも、段落全体を可能にされたハッシュ異なるサイト

2)のための別のクローラを使用する必要があります。任意の文字列をハッシュできます。 もちろん、それは正確にコピーされたparagrpahs全体のみをチェックすることができます。 おそらく、文章はテストするのに適した単位になるでしょう。 大文字/小文字のような小さな違いを整理するためにハッシュする前に、文/ paragrpahsを "正規化"(変換)してください。

3)MySQLは多くのデータを保存できます。

通常のアドバイスは:標準のSQLに固執することです。あまりにも多くのデータを持っていることがわかっても、別のSQL実装を使用する可能性があります。

もちろんデータが多すぎる場合は、まず減らす方法から始めてください。または少なくともmySQLの内容を減らすことから始めましょう。たとえば、MySQLではハッシュを保存することができますが、必要に応じて元のページをプレーンファイルに保存することができます。

+0

こんにちはSiukurnin、アドバイスと問題のハイライトに感謝します。私が提案したシステムの開発を開始する際には、すべての情報とアドバイスが考慮されます。 –

0

通常、オンラインコードはOpenSourceライセンスで配布されます。ほとんどのコードは単なるチュートリアルです。あなたのロジックによれば、どのウェブサイトからもコピーするものは盗作です。つまり、あなたがここで得た答えを受け入れて使用することはできません。本当にプロジェクトを終了したいのであれば、同じクラスと以前のクラスの学生のコードを比較するシステムを作成してください。はるかに効率的です。そのようなシステムの例はMOSSです(それがどのように機能するかについての論文もあります)。このことは、Webクローラーがなくても非常に効率的です。

+0

ええとピリグリム、私はそれをよく知っています。ただ、Webコンテンツと比較して剽窃分析を提案しています。したがって、私は範囲を変更することはできません。とにかくあなたの提案や情報に感謝します。 ;) –

関連する問題