質問

世界中の皆さん、こんにちは。

背景

私はコンピューターサイエンスの最終学年です。私は、Java と MySQL を使用した盗作アナライザーである最終ダブル モジュール プロジェクトを提案しました。

盗作アナライザーは次のことを行います。

  1. アップロードされた文書のすべての段落をスキャンします。どの Web サイトからコピーされた各段落の割合を分析します。
  2. 各段落のどの Web サイトから正確にコピーした単語のみを強調表示します。

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

プログラムの開発期間は 6 か月未満です。私は以下の範囲を調べました。

  1. Web クローラーの実装。 おそらく Lucene API を利用するか、独自の Crawler を開発することになるでしょう (開発時間と使いやすさの点ではどちらが優れていますか?)。
  2. ハッシュ化とインデックス作成。 検索と分析を改善するため。

質問

私の質問は次のとおりです。

  1. MySQL はそれほど多くの情報を保存できますか?
  2. 何か重要なトピックを見逃していませんか?
  3. このプロジェクトについてどう思いますか?
  4. 類似性分析を実行するための提案やテクニックはありますか?
  5. 単語と同様に段落もハッシュ化できますか?

助けとアドバイスをよろしくお願いします。^^

役に立ちましたか?

解決

利用可能なリソースが不足しているために失敗する運命にない別のプロジェクトを検討したことがありますか?

あなたが本当に「ねえ、ウェブ全体をcraうよう!」に行きたいなら、ルート、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 を関与させない限り、非常に費用と時間がかかる可能性があります。

他のヒント

1)自分のWebクローラを作りますか?あなたのようなルックスだけで簡単に、このタスクのために、すべての利用可能な時間を使うことができます。そのための標準液を使用してみてください:それはあなたのプログラムの中心ではありません。

あなたはまだあなた自身を作るか、または後で別のものを試す機会があります(あなたは時間が残っている場合を!)。 あなたのプログラムは、特定のクローラ/ APIに接続することがないように、ローカルファイルで作業する必要があります。

たぶん、あなたも別のサイトに別のクローラを使用する必要があります。

2)全体の段落をハッシュが可能です。あなただけの任意の文字列をハッシュすることができます。 しかし、もちろん、あなただけ正確にコピーされた全体paragrpahsを確認することができることを意味しています。 たぶん文章は、テストに優れたユニットだろう。 おそらく、「正規化」(tranform)文/ paragrpahsは、大文字/小文字のような小さな違いを整理するためにハッシュ前にする必要があります。

3)MySQLは大量のデータを保存することができます。

いつものアドバイスは次のとおりです。標準SQLに固執します。あなたはあまりにも多くのデータを持って発見した場合、あなたはまだ他のSQL実装を使用する可能性を持つことになります。

しかし、あなたはあまりにも多くのデータを持っている場合はもちろん、それを軽減するか、少なくともMySQLで何軽減する方法を模索することから始めます。 (必要な場合)たとえば、あなたは、通常のファイルにMySQLでのハッシュが、元のページを格納することができます。

オンラインコードは通常、オープンソースライセンスの下で配布されています。そして、コードのほとんどはただのチュートリアルです。あなたのロジックによると、任意のWebサイトから何かをコピーすることが盗作です。これはあなたがここに来るどんな答えを受け入れ、使用することはできません。あなたが本当にあなたのプロジェクトを終了したい場合は、ちょうど同じクラスの生徒と前回のクラスからのコードを比較するシステムを記述します。これは、はるかに効率的です。こうしたAシステムの例がある MOSS を(それがどのように動作するかについて話した紙もあります)。このことは、任意のウェブクローラなくて本当に効率的である。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top