之前工作收到的稿件中,部分作者會抄襲網路上的內容,有時我會攫取文句當關鍵字,用google查找,並採用加雙引號的精準搜尋。
(在關鍵字前後加雙引號「"」,只會返回和關鍵字「完全吻合」的結果。例如搜尋「用搜尋查找」和搜尋「"用搜尋查找"」,兩者結果不同,後者查找的結果數量一定會少很多。)
當攫取的文字達一定長度(至少7字以上),要出現一模一樣的字句時,機率是比較低的,文字越長機率越低。
攫取較長文句後採用雙引號的精準搜尋,查找到網路上有相同文句,當此種情況出現多次時,就有抄襲的可能性。此時應可從有查找到相同文句的網路文章再做其他處比對。
由於不曉得稿件哪些地方有抄襲?所以要擷取搜尋哪些文句,只能碰運氣,若要從頭到尾人工處理,太沒有效率,於是就有了想寫這個程式的想法。
程式概念
- 首先將要查找的文章拆解為大量的字句組,以做為搜尋的關鍵字用。
- 從有加雙引號的精準搜尋結果,來判斷有無和網路上收錄的字句一模一樣。
例如google搜尋"xxxxxx",如果找不到時,網頁開頭會顯示:
找不到 "xxxxxx" 的結果。 - 程式跑完後,在查找的word中,之前有找到的字句都標上顯明顏色。
我設計的拆解模式有兩種
第一種是依標點符號拆解。(標點符號包含全形半形,還有空白間隔等符號)。例如以下文句:「因為工作性質,需要校對錯別字,因此就想找找有沒有能幫忙自動校對錯別字的程式。」就會被拆解成以下三組:
"因為工作性質"、"需要校對錯別字"、"因此就想找找有沒有能幫忙自動校對錯別字的程式"
並且可自行設定長度最少幾個字才要搜尋,例如設定「7」字,則上面的"因為工作性質"只有6個字,就被淘汰,不列入搜尋關鍵字中。(因為字數太少,重複機率高,沒有太大的搜尋意義,所以長度不要設定太小)
第二種是逐字攫取模式,必須先設定每次要擷取幾個字。則會從「每行字」都擷取固定字數,但是是逐字更動擷取,不遺漏,直到該行結束。不好說明,請見底下範例:
例如:「因為工作性質,需要校對錯別字。」為獨立一行,設定擷取7個字。
拆解結果為:(標點也算入字數)
"因為工作性質,"、"為工作性質,需"、"工作性質,需要"、"作性質,需要校"、"性質,需要校對"、"質,需要校對錯"、",需要校對錯別"、"需要校對錯別字"、"要校對錯別字。"
此種模式,整篇文章拆解下來文句一定很多,會使搜尋的工作量大為增加,以致程式要跑很久。
強烈建議,採用第一種模式即可,第二種只是提供另外的可能性,畢竟擷取方式不同,會多出許多搜尋的可能性,但通常情況第一種就夠用了。
爬取yahoo
程式採用爬蟲技術,一開始我想爬的搜尋引擎當然是google,後來測試了許久,代理也用了,還是沒辦法完美解決google的反爬蟲問題。(在短時間大量爬取google搜尋結果,一段時間後,程式會被擋ip,被拒絕服務,要隔天才會解除阻擋,不過我測試時阻擋是只阻擋該程式,不影響瀏覽器查詢使用google)
最後我試著改用其他搜索引擎,發現yahoo也有加雙引號的精準搜尋功能,且反爬蟲的設定比google寬鬆許多,即使阻擋了,也很快解擋,因此此程式採用yahoo的搜索。
轉載請註明出處
最後我試著改用其他搜索引擎,發現yahoo也有加雙引號的精準搜尋功能,且反爬蟲的設定比google寬鬆許多,即使阻擋了,也很快解擋,因此此程式採用yahoo的搜索。
使用過程如下
- 下載此程式,之後點擊程式 (12月10日更新程式)
- 依程式視窗的說明文字操作即可
- 程式主要適用於中文,並且須事先安裝word
- 查找的文章檔案,必須為word檔
- 基本上不用選擇使用代理,有測試過數萬字文章,都沒被擋
代理伺服器
- 通常情況不用使用代理,yahoo搜索的反爬蟲還算寬鬆,除非使用過程中,有被阻擋,之後再考慮使用。
- 代理在此程式的用處,就是降低被yahoo搜索阻擋服務的機率,因為同一ip短時間大量請求服務,一段時間後可能會被阻擋。若使用代理,則程式可輪流使用不同ip請求。
- 若要使用,在程式視窗使用時,依詢問輸入操作。
- 代理檔須為txt的文件檔,代理檔中的內文為每行一個代理(至少2個可輪流),格式為 ip:端口,如下2個占2行:
101.255.64.90:36127
163.172.86.64:3128 - 代理網路上自己找,,請找「HTTP代理」、「高匿名」,嚮應速度盡量不要太慢,重點是網路上找的未必可以用,要自己測試,怎麼測試,可用瀏覽器或用程式測試。
另外注意事項
- 程式進行時,會顯示每次搜尋結果,由於程式代碼函數的設定因素,搜尋文句的順序不會依照文章順序。
- 程式進行時,若沒跑搜尋結果,會顯示「HTTP狀態碼」,常見情況有以下:
HTTP狀態碼為「200」時,可能是延遲太久,到跑狀態碼時才ok,此情況該次文句不會跳過,會進入下一次繼續搜尋。
HTTP狀態碼為「400」時,是由於採用模式2時,當搜尋字句有「%」時,會造成網址搜尋方式的錯誤。我處理方式是下一次跳過該文句,也就是模式2時,此類文句被網路收錄的可能性被忽視。
HTTP狀態碼為「999」時,是yahoo拒絕服務時的狀態碼,會擋ip一段時間,我測試時通常不會被擋太久,可休息一小時候再測試看看。如果多次出現此情況,下次可考慮使用代理,或切割文章長度為多個word檔,隔時間分次處理。 - 如果查找文章已被網路搜索引擎收錄,要查找是否有其他網站抄襲,用此程式是無法判斷的。
- 最後結果中,沒被高亮顯示的文字,不代表搜索不到,可能是被自己設定的字數限定給淘汰。
- 由於要降低被擋機率,yahoo搜尋引擎我不是只採用台灣yahoo,也輪流使用一些其他國家的yahoo搜索(採用的是搜尋中文後,結果和台灣yahoo差異不大的)。測試過程中,有出現極少部分是相同字句,在不同國家的yahoo,搜尋結果是不同的。因而造成顯明亮色字句,有可能是台灣yahoo無法找到的字句。
轉載請註明出處
沒有留言:
張貼留言