自然語言處理(NLP)- 一個英文拼寫糾錯系統

bensonrachel發表於2018-12-20

功能:給出拼寫錯誤的單詞,返回一個正確的單詞,或者返回一個與輸入單詞最接近的單詞;
IDE:pycharm;python3.5;PYQT做介面;

資料:

使用big.txt作為語料庫。

主要演算法原理:

 

編輯距離(這裡使用的是替換操作算一次開銷的版本,跟插入和刪除等價):

這裡的東西請看我的部落格演算法裡的編輯距離問題,這裡不在詳細說明。

編輯距離

具體處理方法:

把big.txt的全部單詞變成小寫,並且計算他們出現的次數,再除以單詞總數(字典長度)作為該詞的頻率,對輸入的單詞在詞典裡進行匹配,至少0次編輯,最多2次編輯。找出編輯距離最小的,當編輯距離為最小的不只一個時,找出所有單詞裡的概率最大的作為輸出。

總結:

  1. 一般來說,對於錯誤單詞,大多錯誤字母數在1-2範圍內,所以只需找到編輯距離為1-2的,就會有相應的正確單詞出現。
  2. 編輯距離演算法時間複雜度比較高且需要對字典進行搜尋匹配,所以總體開銷比較大。
  3. 概率方面使用的樸素貝葉斯的方法,本系統是小型的英文單詞糾錯系統,若是百度谷歌微軟的糾錯系統則更為複雜。

 

 

**********************************************

mark 吭:

(也是我在做這個的時候,不過是java,遇到的坑,與上面的無關,只是記錄)

 

 

相關文章