任務2 常用的分詞演算法 I

2021-10-13 07:16:55 字數 806 閱讀 9644

最簡單的分詞演算法是在單詞層面的最大匹配演算法,最大匹配演算法又可以分為前向最大匹配和後向最大匹配,二者大致上是類似的,只是在字元的縮減方向上有所差異。

這個演算法得到的結果或者說目的是:最終分得的單詞個數越少越好,每個單詞的字元長度越長越好;

前向最大匹配 (forward-max matching)我們經常有意見分歧

字典:[「我們」,「經常」,「有」,「意見」,「有意見」,「分歧」]

設定最大匹配 max_len=5,首先我們可以得到 [ 我們經常有 ],查詢字典中沒有這個單詞,然後從後面依次減少乙個字元去查詢:

字典中有 [我們] 這個單詞,就可以把 「我們」 給切分出來了

我們 / 經常有意見分歧

然後我們再看 [ 經常有意見 ] 按照上面的方法依次查詢,最後可以得到:

我們 / 經常 / 有意見 / 分歧

可以發現在最大匹配演算法下,「有意見」 切分出來後就不會再繼續往下切分了,即使字典中存在 「有」 以及 「意見」 兩個單詞。

在這裡,max_len 可以設定為 5~10,或者先掃瞄一邊字典庫,得到字串長度的分布,再自定義設定也可。

後向最大匹配 (backward-max matching)

與前向最大匹配大同小異,同樣以上面這一句話的切分為例,後向最大匹配的順序是:

這句話最後得到的切分結果與前向最大匹配是一樣的,90%的情況下,二者的結果是一樣的。

最大匹配演算法的缺點

常用分詞演算法的比較與設想

與基於理解的分詞演算法和基於統計的分詞演算法相比,基於文字匹配的演算法更加通用。基於文字匹配的演算法又稱之為 機械分詞演算法 他是它 是按照一定的策略將待分析的漢字串與乙個 充分大的 機器詞典中的詞條進行配,若在詞典中找到某個字串,則匹配成功,可識別出乙個詞。按照掃瞄方向的不 同,文字匹配分詞方法可...

中文分詞的演算法與實現(結巴分詞)

結巴分詞支援三種分詞模式 1.精確模式,試圖將句子最精確的切開,適合文字分析 2.全模式,把句子中所有的可以成詞的詞語都掃瞄出來,速度非常快,但是不能解釋歧義 3.搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。一 分詞 from future import un...

i2s和s2i演算法 sstream用法

標頭檔案 include cout本人實戰常用如下模板 void i2s int num,string str 1.2 string to int 下面的例子將輸入到str中的字元通過string stream型別的變數ss轉換為int型別的變數,輸入到num中 stringstream ss st...