jieba——「結巴」中文分詞是sunjunyi開發的一款Python中文分詞組件,能夠在Github上查看jieba項目。python
要使用jieba中文分詞,首先須要安裝jieba中文分詞,做者給出了以下的安裝方法:git
1.全自動安裝:easy_install jieba
或者 pip install jieba
/ pip3 install jieba
github
2.半自動安裝:先下載 http://pypi.python.org/pypi/jieba/ ,解壓後運行 python setup.py install
算法
3.手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄函數
做者介紹其採用的算法:搜索引擎
1.基於前綴詞典實現高效的詞圖掃描,生成句子中漢字全部可能成詞狀況所構成的有向無環圖 (DAG)spa
2.採用了動態規劃查找最大機率路徑, 找出基於詞頻的最大切分組合code
3.對於未登陸詞,採用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法blog
主要功能:索引
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
爲默認分詞器,全部全局分詞相關函數都是該分詞器的映射。