發表文章

目前顯示的是 2月, 2018的文章

英文拼字檢查(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的樹狀結構來做。

文章切斷落功能C#(paragraph segmentation using C#)

圖片
Hi大家好,好久沒寫網誌分享東西,可能是年初很多會議跟需求要談,沒啥時間來分享,其實最近也研究一些Docker的東西,有空再來分享。 今天想簡單講一下文檔切斷落的功能,你現在有一份Word或PDF等文字檔,你想把它以段落來切可以怎麼做?  切完段落便可做後續的應用,整段落的相似抄襲比對等等的 。 程式如下非常簡單 主要用\r\n(即0D0A)做切割,要注意除了段行符號外,最好前面還有句點,因為PDF再用工具解析成string時,他一行字會自動\r\n,前面兩行在做一下過濾的處理,句點取代是針對英文文章的置換,空白取代是有時候句點後面有空格才有換行符號,做完這處理差不多就大功告成了,最後再用一段的長度篩選一下,避免過短的句子也拿來當段落。 content = content.Replace(".", "。"); content = content.Replace(" ", ""); string[] resultString = Regex.Split(content, "。\r\n", RegexOptions.IgnoreCase); var paragraphs = resultString.Where(x => x.Length >= 30); 注意你必須先用解析工具把word或PDF解析成txt格式,可用Aspone等等工具,大致這樣,下次見。