fourth 拼寫糾正

2021-06-20 17:57:42 字數 1873 閱讀 5532

xapian提供了拼寫校正功能,其基本演算法就是編輯距離,它支援utf-8,支援中文。

1、建立拼寫校正辭典

雖然編輯距離的演算法很土很原始,但是xapian提供了方便的介面建立辭典,至少有如下兩種方式:

(1)xapian::writabledatabase.db.add_spelling(word, freq)

word就是正確的詞,freq是出現頻率,預設是1。

頻率的作用是這樣的,如果對於乙個詞比如籃球和藍球,前者add了4次,後者出現了3詞,那麼當對」蘭球」進行拼寫糾正的時候,就會選擇多的那個即籃球。

(2)上面的add_spelling方法有點麻煩,如果把乙個詞乙個詞新增進去不是很麻煩……於是我們繼續借助termgenerator.

首先xapian::termgenerator.set_database(db)

然後xapian::termgenerator.set_flags(flag_spelling)

之後,索引通過termgenerator建索引的詞都會被加入到spelling辭典中了!

2、使用辭典進行拼寫校正

進行拼寫校正,這是在query階段完成的。

(1)開啟xapian::database

(2)呼叫db.get_spelling_suggestion(word,dist = 2)就能獲得校正啦!如果沒有建議的校正,會返回乙個空的字串,這需要自己處理一下。dist是允許的最大編輯距離,預設是2.

總體來說,雖然編輯距離演算法是最土的演算法之一(相對與語義分析等高階技術),但對於一般的簡單檢索系統已經足夠了。更何況xapian提供了強大、合理的介面,讓我們能很方便的建立起拼寫糾正辭典,這真的已經是很人性化的了。

方法一**:

#include

#include

#include

#define content  "70比 69, 這是 男籃 亞錦賽 歷史上 的 最小 分 差 比賽 , 笑 到 最後 的是 東道主 中國隊 。 可以說 , 這是 一次 最 驚險 的 勝利 ; 也可 以 說 , 這是 中國男籃 最 幸運 的 結局 。終 >  場 哨 響 , 中國隊 主教練 鄧 華德 和 籃管中心 副主任 胡 加時 緊緊擁抱 在一 起 , 兩人 都 激動 得 熱淚盈眶 —— 中國隊 贏了 , 贏得 很 慶幸 。"

using namespace std;

const char*spells[3]=;

int main(int argc , char **argv)

database.commit();

}catch(const xapian::error &e)

}方法二**:

#include

#include

#include

#define content  "70比 69, 這是 男籃 亞錦賽 歷史上 的 最小 分 差 比賽 , 笑 到 最後 的是 東道主 中國隊 。 可以說 , 這是 一次 最 驚險 的 勝利 ; 也可 以 說 , 這是 中國男籃 最 幸運 的 結局 。終 >  場 哨 響 , 中國隊 主教練 鄧 華德 和 籃管中心 副主任 胡 加時 緊緊擁抱 在一 起 , 兩人 都 激動 得 熱淚盈眶 —— 中國隊 贏了 , 贏得 很 慶幸 。"

using namespace std;

int main(int argc , char **argv)catch(const xapian::error &e)

}搜尋 **:

#include

#include

using namespace std;

#define word " 蘭球"

int main(int argc , char **argv)catch(const xapian::error &e)

}

機器學習 單詞拼寫糾正器python實現

下面,借助樸素貝葉斯分類器的基本思想,編寫乙個單詞拼寫糾正器,它大致實現的功能如下 如果使用者輸入的單詞存在,則直接提示在字典中發現,並返回 如果單詞不在詞典中,糾正器會猜測使用者的可能輸入,然後做出最多兩步的距離調整,並返回糾正後,使用者最可能想輸入的前三個單詞 如果經過最多的兩步調整後,還是未找...

利用貝葉斯公式實現單詞拼寫糾正器

下面總結幾個我在學習貝葉斯公式的時候能夠對我的理解有所幫助的要點,首先引用一句話 概率論只不過把常識用數學公式表達了出來 拉普拉斯 貝葉斯公式將人的思維方式用數學公式表達出來,所以貝葉斯公式在機器學習中的應用則是將人的思維賦予機器。先抄一遍貝葉斯公式 貝葉斯公式的直觀理解就是,展示了先驗概率跟後驗概...

19錯誤糾正

乙個布林矩陣有一種奇偶性,即該矩陣所有行和所有列的和都是乙個偶數。下面這個 4 4的矩陣就具有奇偶性 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 它所有行的和是2,0,4 和2。它所有列的和是2,2,2 和2。你的工作就是編寫乙個程式,讀入這個矩陣並檢查它是否具有奇偶性。如果沒有...