自然語言處理(五) 單詞糾錯

2021-10-01 20:47:14 字數 1907 閱讀 4784

精準的定義就不多說了,直接上例子來理解這個編輯距離。編輯主要有三個操作:插入、刪除、修改。例如:goood變為good,只需要刪除乙個o,因此編輯距離是1。gd變為god。只需要插入乙個o,因此編輯距離是1。gwd變為god,只要修改w為o,因此編輯距離是1。

例子如下:y字串是正確的字串的一部分,x字串是錯誤的字串。兩個字串是從o開始不一樣的。

(1)  令 n = length(y)  (n為y字串的長度)顯然這裡的n=4。令m = length(x) ,顯然這裡的m=7。

(2)  令low = max(1,n-t)  t是閾值,這裡的不妨令t=2。令up = min(m,n+t)。帶入數值可以得出 low = 2,up = 6。到此步變為下圖。意思就是從第2個字元開始到第6個字元截止進行計算。

1) 計算字串re和repo的編輯距離,ed(re,repo) = 2。

2) 計算字串rep和repo的編輯距離,ed(rep,repo) = 1。

3) 計算字串repr和repo的編輯距離,ed(repr,repo) = 1。

4) 計算字串reprt和repo的編輯距離,ed(reprt,repo) = 2。

5) 計算字串reprte和repo的編輯距離,ed(rep,repo) = 3。

(3)  cutoff編輯距離就是在上述五步中最小的距離,在這個例子中:   cutoff ed(reprter,repo) = 1

上述的內容就是編輯距離和cutoff編輯距離,可以明顯的看出   cutoff編輯距離 <= 編輯距離  恆成立。

這裡是用自動機來實現單詞糾錯,糾錯也僅僅是想法,還沒有做成乙個成品。

首先,單詞糾錯第乙個要解決的問題是判斷輸入的單詞是否存在。

其次,要建立乙個自動機,自動機就是乙個圖,這個圖必然極其龐大,這裡也不具體實現。

最後,如果這個單詞不存在,根據建立的自動機來判斷是否能夠將這個錯誤的單詞提示給使用者可能正確的單詞。舉個例子:假如使用者輸入了hellp,就可以提示使用者「你想輸入的可能是hello」。這個自動機判斷的過程我們具體展開闡釋。

如下例子,有下面這麼乙個自動機,閾值為1(t=1,同時cutoff距離不超過1),輸入了「ababa」(這個ababa肯定是錯的,字元個數最起碼是3的倍數才是正確的,所以要通過搜尋這個自動機來糾錯)。

過程如下:

照這個規則繼續往下搜尋,直到cutoff距離大於閾值1。這裡我就把原**的圖直接引用過來了。

1是終止狀態,且再往後遍歷cutoff距離就都大於1,因此到此截止。但是還不能直接把這三個都當作糾錯詞。上面已經提到了cutoff距離永遠小於等於編輯距離。因此必須再計算abaaba, ababab,bababa這三個字串和ababa的編輯距離,如果編輯距離還是小於等於1,那麼就可以將這個詞提醒給使用者,你輸入錯誤,你想輸入的可能是「abaaba, ababab,bababa」。顯而易見,這三個字串和ababa的編輯距離都是1。因此這三個字串就可以提供給使用者正確參考。

截止到此,單詞糾錯的總體思想也就完成了,這個自動機只是乙個簡單的樣例,但是麻雀雖小五臟俱全,該有的方法都有。具體的實現還在能力範圍之外。最後,本文可能會有致命性錯誤或者顛覆性錯誤,各位看到發現的話請不吝賜教。

自然語言處理

自然語言處理主要步驟包括 2.詞法分析 對於英文,有詞頭 詞根 詞尾的拆分,名詞 動詞 形容詞 副詞 介詞的定性,多種詞意的選擇。比如diamond,有菱形 棒球場 鑽石3個含義,要根據應用選擇正確的意思。3.語法分析 通過語法樹或其他演算法,分析主語 謂語 賓語 定語 狀語 補語等句子元素。4.語...

自然語言處理

前言 自然語言處理 natural language processing 是計算科學領域與人工智慧領域中的乙個重要方向。它研究能實現人與計算機之間用自然語言進行有效通訊的各種理論和方法。自然語言處理是一門融語言學 電腦科學 數學於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言...

自然語言處理

一 字串操作 去空格及特殊符號 s hello,world 預設把左右空格去掉 print s.strip print s.lstrip hello,print s.rstrip 查詢字元 0 為未找到 sstr1 strchr sstr2 tr 找到返回目標子串開始下標 npos sstr1.in...