jieba——“結巴”中文分詞是sunjunyi開發的一款Python中文分詞組件,可以在Github上查看jieba項目。
要使用jieba中文分詞,首先需要安裝jieba中文分詞,作者給出了如下的安裝方法:
1.全自動安裝:easy_install jieba 或者 pip install jieba / pip3 install jieba
2.半自動安裝:先下載 http://pypi.python.org/pypi/jieba/ ,解壓后運行 python setup.py install
3.手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄
作者介紹其采用的算法:
1.基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
2.采用了動態規划查找最大概率路徑, 找出基於詞頻的最大切分組合
3.對於未登錄詞,采用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法
主要功能:
1.分詞
分詞功能主要有兩個方法 jieba.cut 和 jieba.cut_for_search,
其中 jieba.cut方法 接受三個輸入參數:
1.需要分詞的字符串;
2.cut_all 參數用來控制是否采用全模式;
3.HMM 參數用來控制是否使用 HMM 模型
jieba.cut("我來到北京清華大學", cut_all=True)
其中 jieba.cut_for_search方法 接受兩個輸入參數:
1.需要分詞的字符串;
2.是否使用 HMM 模型。
該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細
jieba.cut_for_search("小明碩士畢業於中國科學院計算所,后在日本京都大學深造")
jieba.cut方法 和 jieba.cut_for_search方法 返回的結構都是一個可迭代的 generator,可以使用 for 循環來獲得分詞后得到的每一個詞語(unicode)
也可以使用 jieba.lcut方法 和 jieba.lcut_for_search方法 直接返回 list
作者的說明:待分詞的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。
注意:不建議直接輸入 GBK 字符串,可能無法預料地錯誤解碼成 UTF-8
以下是作者給出的demo和運行結果:
# coding:utf-8
# !/usr/bin/env python
import jieba
if __name__ == '__main__':
seg_list = jieba.cut("我來到北京清華大學", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) #全模式
seg_list = jieba.cut("我來到北京清華大學", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) #精確模式
seg_list = jieba.cut("他來到了網易杭研大廈") #默認是精確模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業於中國科學院計算所,后在日本京都大學深造") #搜索引擎模式
print(", ".join(seg_list))
輸出的結果

可以看到:
全模式:試圖將句子最精確地切開,適合文本分析,輸出的是所有可能的分詞組合,比如清華大學,會被分成:清華,清華大學,華大,大學
默認模型(精確模型):把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義,比如清華大學,只會輸出清華大學
搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞
還有另外一個方法 jieba.Tokenizer(dictionary=DEFAULT_DICT),用於新建自定義分詞器,可用於同時使用不同詞典。
jieba.dt 為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。
