中文拼寫糾錯 拼寫糾錯是如何實現的?

2021-10-16 15:16:23 字數 1167 閱讀 5310

1、拼寫糾錯是基於編輯距離來實現;編輯距離是一種標準的方法,它用來表示經過插入、刪除和替換操作從乙個字串轉換到另外乙個字串的最小操作步數;

2、編輯距離的計算過程:比如要計算 batyu 和 beauty 的編輯距離,先建立乙個7×8 的表(batyu 長度為 5,coffee 長度為 6,各加 2),接著,在如下位置填入黑色數字。其他格的計算過程是取以下三個值的最小值:

如果最上方的字元等於最左方的字元,則為左上方的數字。否則為左上方的數字+1。(對於 3,3 來說為 0)

左方數字+1(對於 3,3 格來說為 2)

上方數字+1(對於 3,3 格來說為 2)

最終取右下角的值即為編輯距離的值 3。

對於拼寫糾錯,我們考慮構造乙個度量空間(metric space),該空間內任何關

系滿足以下三條基本條件:

d(x,y) = 0 -- 假如 x 與 y 的距離為 0,則 x=y

d(x,y) = d(y,x) -- x 到 y 的距離等同於 y 到 x 的距離

d(x,y) + d(y,z) >= d(x,z) -- 三角不等式

1、根據三角不等式,則滿足與 query 距離在 n 範圍內的另乙個字元轉 b,其與 a

的距離最大為 d+n,最小為 d-n。

2、bk 樹的構造就過程如下:每個節點有任意個子節點,每條邊有個值表示編輯距離。所有子節點到父節點的邊上標註 n 表示編輯距離恰好為 n。比如,我們有棵樹父節點是」book」和兩個子節點」cake」和」books」,」book」到」books」的邊標號 1,」book」到」cake」的邊上標號 4。從字典裡構造好樹後,無論何

時你想插入新單詞時,計算該單詞與根節點的編輯距離,並且查詢數值為d(neweord, root)的邊。遞迴得與各子節點進行比較,直到沒有子節點,你就可以建立新的子節點並將新單詞儲存在那。比如,插入」boo」到剛才上述例子的樹中,我們先檢查根節點,查詢 d(「book」, 「boo」) = 1 的邊,然後檢查標號為1 的邊的子節點,得到單詞」books」。我們再計算距離 d(「books」, 「boo」)=2,則將新單詞插在」books」之後,邊標號為 2。

個就找到了 cake 這個節點,計算 d(「cake」, 「cape」)=1,滿足條件所以返回 cake,然後再找和 cake 節點編輯距離是 0 到 2 的,分別找到 cape 和cart 節點,這樣就得到 cape 這個滿足條件的結果。

NLP學習筆記8 拼寫糾錯2

本篇屬於nlp學習筆記系列。通過replace 替換 add 新增 delete 刪除 生成編輯距離為1,2 的字串。好處是 不依賴於詞典的大小,如果詞典不大,也可以不用那個這種方法。如何過濾呢?從數學角度來看問題定義 給定乙個字串s,我們要找出最有可能成為正確的字串c,也就是c argmaxp c...

c 實現 萬萬沒想到之聰明的編輯(拼寫糾錯)

題目 三個同樣的字母連在一起,一定是拼寫錯誤,去掉乙個的就好啦 比如 helllo hello 兩對一樣的字母 aabb型 連在一起,一定是拼寫錯誤,去掉第二對的乙個字母就好啦 比如 helloo hello 上面的規則優先 從左到右 匹配,即如果是aabbcc,雖然aabb和bbcc都是錯誤拼寫,...

中文文字糾錯

u4e00 代表什麼意思 u9fa5 代表什麼意思?答 u4e00 u9fa5是用來判斷是不是中文的乙個條件,採用的是unicode編碼 參考website 2020 9 1 最全面,精華 中文糾錯 待看完中文文字拼寫檢查錯誤糾正方案整理 關聯pycorrector 小練習 簡化 import pa...