2011-04-05 42 views
2

我開始在這裏編寫程序來檢查用戶輸入的字是否正確,那麼程序將有能力從點對點字母/ s的字母/ s。能夠通過這一點將字母移到那一點,只是爲了糾正依賴於.txt文件中單詞列表的單詞。從文件中檢查輸入的字符串包含允許的字

例如輸入:

"tihs is nto a corerct sentnece" (this is not a correct sentence) 

如果用戶輸入了錯誤的字/秒,程序將掃描的文本文件,然後找到最正確的近的字來糾正錯誤輸入的單詞,然後該程序必須糾正的能力並輸出如下正確的句子:

"this is not a correct sentence" from (tihs is nto a corerct sentnece) 

根據.txt文件掃描每個不正確的單詞/ s。

我的問題是,我將如何開始編碼這個東西?謝謝...

+4

一個地方開始是[Levenshtein距離](http://en.wikipedia.org/wiki/Levenshtein_distance)。 – 2011-04-05 01:49:20

+0

@ Mark Elliot:哇,非常酷! – mre 2011-04-05 02:37:07

+0

感謝Mark Elliot,這非常有幫助。 – 2011-04-05 02:51:44

回答

2

首先,你顯然需要找到拼寫錯誤的單詞。接下來,您應該確定一種爲可能正確的單詞選擇值的方法。即「folor」可能是混亂的字母的「floor」,或者是「f」的「color」,而不是「c」等等。在這種情況下,兩個單詞都非常接近:兩個混合字母和一個字符替換鍵盤上靠近它的另一個字符。您必須根據您認爲的更常見的錯誤來分配每個值。一般來說,您可以將每個字的值設置爲優先隊列,然後從那裏拉出。 但是,如果唯一的情況是所描述的情況(交換字母),那麼就樣本量而言,它會稍微簡單一些,但您仍然必須爲每個單詞指定一個值。

注:nto也可以固定噸。如果你想擺脫這種可能性,你也必須檢查語法。

+0

感謝您的回覆。你已經幫了我很多... – 2011-04-05 02:57:44

3

"How to write a spelling corrector"由彼得·諾維格:

的工業強度的法術校正像谷歌的的全部細節會比啓發較爲混亂,但我想,在飛機上飛行家,在不到一個頁面的代碼,我可以寫一個玩具拼寫校正器,以至少每秒10個字的處理速度達到80或90%的準確度。

Peter Norvig是一位非常有才華的計算機科學家,也是一位出色的解說員,所以我強烈推薦他的博客。

+0

謝謝麥克塞繆爾,我會仔細研究並仔細閱讀上面的建議(「如何寫一個拼寫糾正器」)。非常感謝答覆。這會幫助我很多。 – 2011-04-05 02:58:38

+0

你能解釋java中的Python 2.5代碼嗎?我對Python的代碼不太熟悉。謝謝... – 2011-04-05 03:08:55

相關問題