找出中文錯別字 1.5 代碼獲取 你可以通過下麵命令將代碼下載到實驗樓環境中,作為參照對比進行學習。 $ wget http://labfile.oss.aliyuncs.com/courses/828/Document.tar 可以預想到,假設我們的語料庫長度為 n ,我們可以以 O(1) 的時間 ...
找出中文錯別字
1.5 代碼獲取
你可以通過下麵命令將代碼下載到實驗樓環境中,作為參照對比進行學習。
$ wget http://labfile.oss.aliyuncs.com/courses/828/Document.tar
可以預想到,假設我們的語料庫長度為 n ,我們可以以 O(1) 的時間複雜度來完成增添條目和查找條目的工作(因為我們給每個單詞都設定了ID,所以可以直接訪問前後關係對應的記憶體塊),但是這個矩陣會占據 O(n*n)的空間,而且這是一個稀疏矩陣,很多的空間被浪費了。
三、開發準備
打開Xfce終端,進入 Code 目錄,創建 ChineseSpellingCheck 文件夾, 將其作為課程的工作目錄。
本次實驗建議在 virtualenv 環境下進行。
關於 virtualenv,請看 virtualenv 介紹
首先安裝 virtualenv
私信小編007即可獲取數十套PDF哦!
五、實驗步驟
5.1 實現前後關係字典
創建文件夾 Code
在 Code 文件夾中創建文件 CountOfNumbers.py
我們先導入我們這次實驗需要的包
word[0].encode("UTF-8") 的作用是檢測英文的出現,如果一個中文字元如果沒有通過 "UTF-8" 編碼,也會被isalpha() 函數認為是一個英文字元。
我們繼續我們的 CountOfNumbers.py 的編寫
由於這個系統服務的對象是實驗樓未來的文檔,所以最佳的語料庫就是實驗樓現有的眾多文檔。在上一節中我們已經學習了怎麼樣創建並保存我們的 前後關係 字典。由於實驗樓內部的文檔不方便公開,我們沒有直接提供語料庫,而是提供了最終生成的字典。
之前也討論了,再大的語料庫,都不可能覆蓋所有中文單詞搭配。所以我們需要搜索引擎的場外助攻。
首先請下載我們的數據
查看網站的源碼,我們發現有關 創建文檔 的標題都用 <strong> 標簽標示了出來。
如果一個搭配不常出現。
搜索引擎會自動詢問 是否只需要 --- 的結果
或者搜索引擎的標題中很少有該中文單詞搭配的高亮結果。
我們還需要一個函數來判斷這個搭配是否常用。這個函數相對來說比較簡單,如果我們的單詞單配在搜索引擎中出現次數超過3次,那麼我們就認為它是一個常見的搭配。
獲得我們的數據,並對測試文件進行分詞。把沒有在前後關係文檔中出現的搭配放到 SuspiciousList 當中去。( suspicious adj.有嫌疑的)
獲得了 SuspiciousList 之後,我們可以通過搜索引擎的判斷來獲得最終的錯誤單詞列表 WrongWordList
5.4 把錯誤的單詞在HTML文件中高亮
我們在找出錯誤的單詞之後,肯定想看一看單詞在原文中的位置方便修改。實驗樓所有的文檔都是 .md 的 MarkDown 格式書寫的,沒有辦法直接高亮。但是我們可以吧 MarkDown 解析成 HTML 然後在網頁上對錯誤的單詞進行高亮操作。
怎麼樣,是不是很難?
進群:125240963 即可獲取數十套PDF哦!