總網頁瀏覽量

2013年5月1日 星期三

漢字相似字查詢實作

漢字一共1151個部首組成64031個漢字


編輯距離演算法應用於
兩個字串互相轉換會花掉多少成本


64031的漢字拆解成部首
利用字體部首計算字體之間相似度
如果兩個字之間共同部首越多表示這兩個字體越相似


字串之間比較:
技術上的問題,因為char只有1bytes空間
而中文字佔2bytes
用char比較每個部首之間的相似度很容易出錯
不如將兩格char存進int裡面
這樣一個int代表一個中文字

因此兩個字串之間比較事實上是兩組的數字串互相比較彼此有沒有同樣的數字
例如:比較兩組數字串的相似度
A:300 222 318 349
B:118 222 318 349


棘棗


改正:大陣列改用讀取檔案方式
傳遞陣列如果陣列太大要用傳參照方式
將插入排序改成quick sort

以上方式通通對效能增加有限
效能不好主要是因為巢狀迴圈
七萬*七萬筆資料要處理
而且每一筆都要比較到
所以要跑四十九億次才可跑完

解決方法避免不必要的字串比較
只要找出一千的編輯成本小於20的字就停止搜尋

沒有留言:

張貼留言