2009-10-14 74 views
5

大家好世界各地,剽竊分析儀(對網頁內容進行比較)

背景

我最後一年的學生計算機科學。我提出了使用Java和MySQL的我的Final Double Module Project,它是一個剽竊分析器。

抄襲分析儀:

  1. 掃描所有上傳文檔的段落。分析從哪個網站複製的每個段落的百分比。
  2. 僅突出顯示每個段落中完全從哪個網站複製的文字。

我的主要目標是開發類似Turnitin的東西,如果可能的話改進。

我有不到6個月的時間來開發這個程序。我已經作用域如下:

  1. 網絡爬蟲實現。可能會使用Lucene API或開發我自己的Crawler(哪一個在時間開發和可用性方面更好?)。
  2. 散列和索引。改進搜索和分析。

問題

這裏是我的問題:

  1. 能MySQL的商店,太多的信息?
  2. 我錯過任何重要的話題嗎?
  3. 您對這個項目有何看法?
  4. 任何建議或技術進行相似性分析?
  5. 段落可以散列,還有文字?

在此先感謝您的任何幫助和建議。 ^^

+2

這難道不算你的同學的草? ;-) – Steve314 2009-10-14 17:02:35

+0

你可能想看看規範化的壓縮距離:http://stackoverflow.com/questions/1085048/how-would-you-code-an-anti-plagiarism-site/1085085#1085085 – Stephan202 2009-10-14 18:03:17

+1

謝謝很多Stephan202爲突出顯示! ;) – 2009-11-02 09:17:49

回答

4

您是否考慮過另一個項目,因爲缺乏可用的資源而註定不會失敗?

如果你真的想去「嘿,讓我們抓取整個網絡!」路線,你將需要打破諸如HBase和Hadoop以及許多機器之類的東西。 MySQL將嚴重不足。 TurnItIn宣稱已經抓取並索引了120億頁。谷歌的索引更像[編輯]。 MySQL或者就此而言,任何RDBMS都不能擴展到這個級別。

如果你做了一些令人驚訝的聰明的事情,並想出如何構建對Google的查詢來揭示已經存在於Google索引中的文檔的剽竊現象,唯一可行的方法就是能夠實現這一點。我建議使用消息隊列並同步訪問搜索API。消息隊列還將允許您將查詢降低到合理的速度。避免停用詞,但你還是找近精確匹配,所以查詢應該是這樣的:"* quick brown fox jumped over * lazy dog"不要打擾運行落得像查詢:"* * went * * *"而忽略回來與94,000,000命中結果。那些不會是剽竊,他們會成爲着名的引語或過於籠統的問題。您正在查找10次以下或幾千次匹配,這些匹配都與您的原始語句或某些類似指標完全匹配。即使如此,這應該只是一種啓發式的做法 - 除非有很多紅旗,否則不要標記文檔。相反,如果一切都以零點擊回來,它們會變得異常獨特。圖書搜索通常需要更精確的查詢。充分可疑的東西應該觸發對原始頁面的HTTP請求,最終的決定應該始終是人的權限。如果一份文件引用它的來源,那不是抄襲,而是你想要檢測。假陽性是不可避免的,並且如果不是恆定的話,可能是常見的。

請注意,TOS禁止永久存儲在谷歌索引的任何部分。

無論如何,無論您如何構建它,您都會選擇非常努力地完成某項任務,並且除非您涉及Google,否則可能非常昂貴和耗時。

+0

此外,維基百科頁面的訪問次數比其他更多,至少在維基百科中,下載整個內容並直接處理它是合理的。 – 2009-10-14 20:58:29

+1

感謝百萬Bob Aman提供的所有建議以及重點突出的問題。非常感謝您的好意。 鮑勃,對於我所提議的項目,我沒有任何迴應。我會盡我所能,因爲我已經決定挑戰這一點。我希望我的夢想能夠實現。我總是想在我的興趣範圍內做些事情,這有助於我提高自己的技能。 我將探索Google搜索API。我只是想知道Google是否有任何限制,因爲我正在考慮使用Lucene(Java開源搜索API)來代替。再次感謝! ;) – 2009-11-02 08:57:15

+0

順便說一下,在這6個月的未來,如果我有任何問題(我會非常努力的嘗試),Bob Aman,我可以在這裏請求您的指導方針嗎? 真的再次感謝您分享您的知識的意願。由於過去幾周的忙碌,我很抱歉回覆晚了。 – 2009-11-02 09:00:05

1

1)製作您自己的網絡爬蟲?看起來你可以很容易地使用所有可用的時間來完成這個任務。嘗試使用標準解決方案:它不是程序的核心。

你仍然有機會自己做或者在嘗試之後再嘗試一次(如果你有時間了!)。 您的程序只能在本地文件上工作,以免綁定到特定的抓取工具/ API。

也許你甚至必須使用不同的抓取工具爲不同的網站

2)散列的整段內容是可能的。你可以散列任何字符串。 但當然,這意味着你只能檢查整個paragrpahs完全複製。 也許句子會是一個更好的單位來測試。 你或許應該哈希理清像大/小寫的細微差別之前,「正常化」(變換分析)句子/ paragrpahs。

3)MySQL可以存儲大量的數據。

通常的建議是:堅持標準的SQL。如果你發現你有太多的數據,你仍然可以使用另一個SQL實現。

但是,當然,如果你有太多的數據,開始尋找方法來減少它,或者至少減少mySQL中的內容。例如,您可以在MySQL中存儲散列,但在普通文件中存儲原始頁面(如果需要)。

+0

嗨Siukurnin,非常感謝您提出的建議和問題。所有提供的信息和建議將在我開始開發我的建議系統時考慮到。 – 2009-11-02 09:07:05

0

在線代碼通常是在開放源代碼許可證進行分發。大部分代碼只是教程。根據你的邏輯,從任何網站上覆制任何東西都是抄襲。這意味着你不能接受和使用你在這裏得到的任何答案。如果你真的想完成你的項目,只需編寫一個系統來比較來自同一班級和以前班級的學生的代碼。它效率更高。這種系統的一個例子是MOSS(也有談論它是如何工作的紙)。沒有任何網絡爬蟲,這件事情非常有效。

+0

是的Piligrim,我很清楚這一點,,,剛纔那是我提出的剽竊分析器,它與網頁內容進行了比較。因此,我無法改變我的範圍。無論如何感謝您的建議和信息。 ;) – 2009-11-02 09:15:51