jieba 分詞主要包含以下步驟:
- 根據 dict.txt 詞典生成 Trie 樹,對待分詞的句子,依據 Trie 樹生成 DAG(有向無環圖)
- 採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合
- 對於未登錄詞,採用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法
Jieba 分詞結合了基於規則和基於統計兩種方法。
- 首先基於前綴詞典進行詞圖掃描。因此,基於前綴詞典可以快速構建包含全部可能分詞結果的有向無環圖,這個圖中包含多條分詞路徑。
- 基於標註語料,使用動態規劃的方法可以找出最大概率路徑,並將其作爲最終的分詞結果。
- 對於未登錄詞,Jieba 是用了基於漢字成詞的 HMM 模型,採用 Viterbi 算法進行推導。
Trie 樹結構: