2018年9月5日 星期三

用搜尋查找抄襲


之前工作收到的稿件中,部分作者會抄襲網路上的內容,有時我會攫取文句當關鍵字,用google查找,並採用加雙引號的精準搜尋。
(在關鍵字前後加雙引號「"」,只會返回和關鍵字「完全吻合」的結果。例如搜尋「用搜尋查找」和搜尋「"用搜尋查找"」,兩者結果不同,後者查找的結果數量一定會少很多。)

當攫取的文字達一定長度(至少7字以上),要出現一模一樣的字句時,機率是比較低的,文字越長機率越低。
攫取較長文句後採用雙引號的精準搜尋,查找到網路上有相同文句,當此種情況出現多次時,就有抄襲的可能性。此時應可從有查找到相同文句的網路文章再做其他處比對。

由於不曉得稿件哪些地方有抄襲?所以要擷取搜尋哪些文句,只能碰運氣,若要從頭到尾人工處理,太沒有效率,於是就有了想寫這個程式的想法。


程式概念

  1. 首先將要查找的文章拆解為大量的字句組,以做為搜尋的關鍵字用。
  2. 從有加雙引號的精準搜尋結果,來判斷有無和網路上收錄的字句一模一樣。
    例如google搜尋"xxxxxx",如果找不到時,網頁開頭會顯示:
    找不到 "xxxxxx" 的結果。
  3. 程式跑完後,在查找的word中,之前有找到的字句都標上顯明顏色。

我設計的拆解模式有兩種

第一種是依標點符號拆解。(標點符號包含全形半形,還有空白間隔等符號)。例如以下文句:「因為工作性質,需要校對錯別字,因此就想找找有沒有能幫忙自動校對錯別字的程式。」就會被拆解成以下三組:
"因為工作性質"、"需要校對錯別字"、"因此就想找找有沒有能幫忙自動校對錯別字的程式"

並且可自行設定長度最少幾個字才要搜尋,例如設定「7」字,則上面的"因為工作性質"只有6個字,就被淘汰,不列入搜尋關鍵字中。(因為字數太少,重複機率高,沒有太大的搜尋意義,所以長度不要設定太小)


第二種是逐字攫取模式,必須先設定每次要擷取幾個字。則會從「每行字」都擷取固定字數,但是是逐字更動擷取,不遺漏,直到該行結束。不好說明,請見底下範例:
例如:「因為工作性質,需要校對錯別字。」為獨立一行,設定擷取7個字。
拆解結果為:(標點也算入字數)
"因為工作性質,"、"為工作性質,需"、"工作性質,需要"、"作性質,需要校"、"性質,需要校對"、"質,需要校對錯"、",需要校對錯別"、"需要校對錯別字"、"要校對錯別字。"
此種模式,整篇文章拆解下來文句一定很多,會使搜尋的工作量大為增加,以致程式要跑很久。

強烈建議,採用第一種模式即可,第二種只是提供另外的可能性,畢竟擷取方式不同,會多出許多搜尋的可能性,但通常情況第一種就夠用了。

爬取yahoo

程式採用爬蟲技術,一開始我想爬的搜尋引擎當然是google,後來測試了許久,代理也用了,還是沒辦法完美解決google的反爬蟲問題。(在短時間大量爬取google搜尋結果,一段時間後,程式會被擋ip,被拒絕服務,要隔天才會解除阻擋,不過我測試時阻擋是只阻擋該程式,不影響瀏覽器查詢使用google)

最後我試著改用其他搜索引擎,發現yahoo也有加雙引號的精準搜尋功能,且反爬蟲的設定比google寬鬆許多,即使阻擋了,也很快解擋,因此此程式採用yahoo的搜索。


使用過程如下

  1. 下載此程式,之後點擊程式  (12月10日更新程式)
  2. 依程式視窗的說明文字操作即可
  3. 程式主要適用於中文,並且須事先安裝word
  4. 查找的文章檔案,必須為word檔
  5. 基本上不用選擇使用代理,有測試過數萬字文章,都沒被擋

代理伺服器

  1. 通常情況不用使用代理,yahoo搜索的反爬蟲還算寬鬆,除非使用過程中,有被阻擋,之後再考慮使用。
  2. 代理在此程式的用處,就是降低被yahoo搜索阻擋服務的機率,因為同一ip短時間大量請求服務,一段時間後可能會被阻擋。若使用代理,則程式可輪流使用不同ip請求。
  3. 若要使用,在程式視窗使用時,依詢問輸入操作。
  4. 代理檔須為txt的文件檔,代理檔中的內文為每行一個代理(至少2個可輪流),格式為  ip:端口,如下2個占2行:
    101.255.64.90:36127
    163.172.86.64:3128
  5. 代理網路上自己找,,請找「HTTP代理」、「高匿名」,嚮應速度盡量不要太慢,重點是網路上找的未必可以用,要自己測試,怎麼測試,可用瀏覽器或用程式測試。

另外注意事項

  1. 程式進行時,會顯示每次搜尋結果,由於程式代碼函數的設定因素,搜尋文句的順序不會依照文章順序。
  2. 程式進行時,若沒跑搜尋結果,會顯示「HTTP狀態碼」,常見情況有以下:
    HTTP狀態碼為「200」時,可能是延遲太久,到跑狀態碼時才ok,此情況該次文句不會跳過,會進入下一次繼續搜尋。
    HTTP狀態碼為「400」時,是由於採用模式2時,當搜尋字句有「%」時,會造成網址搜尋方式的錯誤。我處理方式是下一次跳過該文句,也就是模式2時,此類文句被網路收錄的可能性被忽視。
    HTTP狀態碼為「999」時,是yahoo拒絕服務時的狀態碼,會擋ip一段時間,我測試時通常不會被擋太久,可休息一小時候再測試看看。如果多次出現此情況,下次可考慮使用代理,或切割文章長度為多個word檔,隔時間分次處理。
  3. 如果查找文章已被網路搜索引擎收錄,要查找是否有其他網站抄襲,用此程式是無法判斷的。
  4. 最後結果中,沒被高亮顯示的文字,不代表搜索不到,可能是被自己設定的字數限定給淘汰。
  5. 由於要降低被擋機率,yahoo搜尋引擎我不是只採用台灣yahoo,也輪流使用一些其他國家的yahoo搜索(採用的是搜尋中文後,結果和台灣yahoo差異不大的)。測試過程中,有出現極少部分是相同字句,在不同國家的yahoo,搜尋結果是不同的。因而造成顯明亮色字句,有可能是台灣yahoo無法找到的字句。



轉載請註明出處





2018年4月7日 星期六

多個word檔合併,保留格式


多個word檔合併成一個word檔時,有許多方法。
但很多方法有其缺點,尤其當多個檔案的版面格式不一致,合併後常常格式會跑掉。
另外當要合併的檔案很多時,方法不夠省力。
於是小弟寫了個小程式幫忙。

優點:


  1. 可批次合併大量word檔,操作快速簡單
  2. 保留每個檔案各自不同的版面格式
  3. 可依照自己想要的順序合併(依自己點選檔案的順序,不用改檔名)
  4. 每個檔案皆另起頁合併



使用方法:

  1. 下載此程式
  2. 點擊下載好的程式MergeFiles.exe
  3. 見程式開啟後的黑色視窗中的使用說明來操作

另注意:
  1. 此程式是採用個每word檔案合併時插入分節符號,以維持各檔案的格式
  2. 各檔案合併的頁首頁尾格式,會套用延續上一個檔案的頁首頁尾設定

轉載請註明出處



2018年1月21日 星期日

查字典小程式


之前寫了一篇中文錯別字校對偵測小程式。
那篇的小程式只是標亮可能的錯別字,要確認一個詞是否有錯別字,主要還是查字典。
這個時代我們更多的會利用網路,例如教育部提供的辭典網站。

為節省時間,我寫了一個小程式。(應該說是腳本)
由於實現過程很簡單,所以我是用autohotkey寫的。

使用過程如下:

  1. 下載此程式
  2. 點擊程式「查字典.exe」
  3. 「反白」要搜尋的字詞
  4. 按住「Win鍵」+「空白鍵」(要先按住「Win鍵」不放,再按「空白鍵」。「Win鍵」是鍵盤中有windows視窗圖示那個)
  5. 會自動開啟3個字典網頁,查詢剛剛「反白」的字詞(預設瀏覽器請不要選ie)


關於查詢結果的說明:

  1. 三個網站分別是萌典、東東錯別字詞典、教育百科
  2. 「萌典」有收錄的字詞,呈現的是「詞」的解釋。若「沒有收錄」,則呈現「個別字」的解釋
  3. 「東東錯別字詞典」比較特別,正確與錯的詞都有可能收錄,但會標明對錯
  4. 「教育百科」若呈現「教育部重編國語辭典修訂本」或「教育部國語辭典簡編本」的詞條解釋,則表示這是個正確字詞(至少是目前可通用的字詞)
  5. 由於中文字詞組合太多,加上新時代的字詞誕生,還有一些人特殊的用詞簡化習慣,所以辭典網站不可能收錄全部的正確字詞。所以能查到詞條解釋,只能證明這是個正確詞,但查不到不代表這是個錯詞


轉載請註明出處



LINE 聊天機器人快速實作

LINE 聊天機器人的基本實作教學文章,網路上很多,所以我不打算寫詳細的基礎教學步驟。 聊天機器人的實作,大致有三個階段: 回聲機器人。(你說什麼,他回什麼) 特定關鍵字回應。(設定一些關鍵字,回應除了定型內容外,還可用爬蟲技術爬出資料再回應) 智慧對話。(會自然語言...