英文拼字檢查(spellcheck)
這篇簡單介紹英文拼字檢查的實作邏輯,最常看到拼字檢查不外乎一些文書處理工具,可以檢查拼錯的英文字,再給予建議的候選字。
處理邏輯可以簡單這樣分
1.過濾
2.比對
3.給予建議
過濾不外乎就是把一些中文字、符號等過濾掉,再來用空白切字,下面提供C#過濾寫法。
Regex rgx = new Regex("[^a-zA-Z]");
string englishContent = rgx.Replace(content, " ");
List<char> parameters = new List<char>();
parameters.Add(' ');
string[] wordList = englishContent.Split(parameters.ToArray());
wordList = wordList.Where(c => c != "" && c.Length>1).ToArray();
return wordList;
再來是比對,需要一個字典,字典上的字確定是對的,網路很多開源的字典可以參考,再來就把剛剛切好的字去跟字典比對,若有在字典出現,系統則認為是對的字,若沒有進入下一步驟。
給予建議字,因為找不到一樣的字,這時就用編輯距離(Edit Distance)來去算跟他最相似的字,給予候選建議字。
後面兩個步驟在實作上建議可以用Trie的樹狀結構來做。
處理邏輯可以簡單這樣分
1.過濾
2.比對
3.給予建議
過濾不外乎就是把一些中文字、符號等過濾掉,再來用空白切字,下面提供C#過濾寫法。
Regex rgx = new Regex("[^a-zA-Z]");
string englishContent = rgx.Replace(content, " ");
List<char> parameters = new List<char>();
parameters.Add(' ');
string[] wordList = englishContent.Split(parameters.ToArray());
wordList = wordList.Where(c => c != "" && c.Length>1).ToArray();
return wordList;
再來是比對,需要一個字典,字典上的字確定是對的,網路很多開源的字典可以參考,再來就把剛剛切好的字去跟字典比對,若有在字典出現,系統則認為是對的字,若沒有進入下一步驟。
給予建議字,因為找不到一樣的字,這時就用編輯距離(Edit Distance)來去算跟他最相似的字,給予候選建議字。
後面兩個步驟在實作上建議可以用Trie的樹狀結構來做。
留言
張貼留言