python 中文分詞包 jieba

Galois發表於2020-12-18

Jieba 官網文件
Jieba 支援三種分詞模式:

  • 精確模式,試圖將句子最精確地切開,適合文字分析;
  • 全模式,把句子中所有的可以成詞的詞語都掃描處理,速度非常快,但是不能解決歧義;
  • 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於引擎分詞。

Jieba 還支援繁體分詞,並支援自定義詞典。

(env) pip3 install jieba
  • 基於字首詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
  • 採用了動態規劃查詢最大機率路徑, 找出基於詞頻的最大切分組合
  • 對於未登入詞,採用了基於漢字成詞能力的 HMM(隱馬爾科夫)模型,使用了 Viterbi 演算法

分詞

jieba.cut(需要分詞的字串, cut_all=?, HMM=?)

# 適合用於搜尋引擎構建倒排索引的分詞,粒度比較細
jieba.cut_for_search(需要分詞的字串, HMM=?)

jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的 generator,可以使用 for 迴圈來獲得分詞後得到的每一個詞語(unicode)。
或者用 jieba.lcut 以及 jieba.lcut_for_search 直接返回 list。

jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器,可用於同時使用不同詞典。
jieba.dt 為預設分詞器,所有全域性分詞相關函式都是該分詞器的對映。

新增自定義詞典

雖然 jieba 有新詞識別能力,但是自行新增新詞可以保證更高的正確率。

# 一個詞佔一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。
# file_name 若為路徑或二進位制方式開啟的檔案,則檔案必須為 UTF-8 編碼。
jieba.load_userdict(dict.txt)

更改分詞器(預設為 jieba.dt)的 tmp_dircache_file 屬性,可分別指定快取檔案所在的資料夾及其檔名,用於受限的檔案系統。

調整詞典

使用 add_word(word, freq=None, tag=None)del_word(word) 可在程式中動態修改詞典。
使用 suggest_freq(segment, tune=True) 可調節單個詞語的詞頻,使其能(或不能)被分出來。

自動計算的詞頻在使用 HMM 新詞發現功能時可能無效。

透過使用者自定義詞典來增強歧義糾錯能力

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章