一.介紹:
jieba:
“結巴”中文分詞:做最好的 Python 中文分詞組件
“Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.
完整文檔見 :
GitHub: https://github.com/fxsjy/jieba
特點
- 支持三種分詞模式:
- 精確模式,試圖將句子最精確地切開,適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。
- 支持繁體分詞
- 支持自定義詞典
- MIT 授權協議
在線演示: http://jiebademo.ap01.aws.af.cm/
安裝說明
代碼對 Python 2/3 均兼容
- 全自動安裝: easy_install jieba 或者 pip install jieba / pip3 install jieba
- 半自動安裝:先下載 https://pypi.python.org/pypi/jieba/ ,解壓后運行 python setup.py install
- 手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄
- 通過 import jieba 來引用
二.功能介紹及例子
1.分詞主要功能:
先介紹主要的使用功能,再展示代碼輸出。jieba分詞的主要功能有如下幾種:
1. jieba.cut:該方法接受三個輸入參數:需要分詞的字符串; cut_all 參數用來控制是否采用全模式;HMM參數用來控制是否適用HMM模型
2. jieba.cut_for_search:該方法接受兩個參數:需要分詞的字符串;是否使用HMM模型,該方法適用於搜索引擎構建倒排索引的分詞,粒度比較細。
3. 待分詞的字符串可以是unicode或者UTF-8字符串,GBK字符串。注意不建議直接輸入GBK字符串,可能無法預料的誤解碼成UTF-8,
4. jieba.cut 以及jieba.cut_for_search返回的結構都是可以得到的generator(生成器), 可以使用for循環來獲取分詞后得到的每一個詞語或者使用
5. jieb.lcut 以及 jieba.lcut_for_search 直接返回list
6. jieba.Tokenizer(dictionary=DEFUALT_DICT) 新建自定義分詞器,可用於同時使用不同字典,jieba.dt為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。
2.簡單模式:
2.1.精確模式(返回結果是一個生成器,對大量數據分詞很重要,占內存小):
import jieba s = '我想大口吃肉大碗喝酒!!!' cut=jieba.cut(s) print(cut) #精確模式 print('精確模式輸出:') print(','.join(cut))
輸出為:

2.2.全模式(返回結果也是生成器,特點是把文本分成盡可能多的詞):
import jieba s = '我想大口吃肉大碗喝酒!!!' print('全模式:') result=jieba.cut(s, cut_all=True) print(result) print(' '.join(result))
輸出為:

2.3.搜索引擎模式:
import jieba s = '我想大口吃肉大碗喝酒!!!' print('搜索引擎模式:') result=jieba.cut_for_search(s) print(result) print(','.join(result))
輸出為:

3.獲取詞性:每個詞都有其詞性,比如名詞、動詞、代詞等,結巴分詞的結果也可以帶上每個詞的詞性,要用到jieba.posseg
分詞及輸出詞性:
import jieba.posseg as psg s = '我想大口吃肉大碗喝酒!!!' print('分詞及詞性:') result=psg.cut(s) print(result) print([(x.word,x.flag) for x in result])

過濾詞性,如獲取名詞:
import jieba.posseg as psg s = '我想大口吃肉大碗喝酒!!!' print('分詞及詞性:') result=psg.cut(s) print(result) #篩選為名詞的 print([(x.word,x.flag) for x in result if x.flag=='n'])

4.並行分詞:在文本數據量非常大的時候,為了提高分詞效率,開啟並行分詞就很有必要了。jieba支持並行分詞,基於python自帶的multiprocessing模塊,但要注意的是在Windows環境下不支持。
# 開啟並行分詞模式,參數為並發執行的進程數 jieba.enable_parallel(5) # 關閉並行分詞模式 jieba.disable_parallel()

5.獲取出現頻率Top n的詞(有些詞無實際意義,可篩選):
from collections import Counter words_total=open('1',encoding='utf-8').read() c = Counter(words_total).most_common(20) print (c)

6.使用用戶字典提高分詞准確性:
jieba分詞器還有一個方便的地方是開發者可以指定自己的自定義詞典,以便包含詞庫中沒有的詞,雖然jieba分詞有新詞識別能力,但是自行添加新詞可以保證更高的正確率。
使用命令:
jieba.load_userdict(filename) # filename為自定義詞典的路徑。在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,一個詞占一行,每一行分成三部分,一部分為詞語,一部分為詞頻,最后為詞性(可以省略),用空格隔開。

7.關鍵詞抽取:

附:結巴分詞詞性對照表(按詞性英文首字母排序)
形容詞(1個一類,4個二類)
a 形容詞
ad 副形詞
an 名形詞
ag 形容詞性語素
al 形容詞性慣用語
區別詞(1個一類,2個二類)
b 區別詞
bl 區別詞性慣用語
連詞(1個一類,1個二類)
c 連詞
cc 並列連詞
副詞(1個一類)
d 副詞
嘆詞(1個一類)
e 嘆詞
方位詞(1個一類)
f 方位詞
前綴(1個一類)
h 前綴
后綴(1個一類)
k 后綴
數詞(1個一類,1個二類)
m 數詞
mq 數量詞
名詞 (1個一類,7個二類,5個三類)
名詞分為以下子類:
n 名詞
nr 人名
nr1 漢語姓氏
nr2 漢語名字
nrj 日語人名
nrf 音譯人名
ns 地名
nsf 音譯地名
nt 機構團體名
nz 其它專名
nl 名詞性慣用語
ng 名詞性語素
擬聲詞(1個一類)
o 擬聲詞
介詞(1個一類,2個二類)
p 介詞
pba 介詞“把”
pbei 介詞“被”
量詞(1個一類,2個二類)
q 量詞
qv 動量詞
qt 時量詞
代詞(1個一類,4個二類,6個三類)
r 代詞
rr 人稱代詞
rz 指示代詞
rzt 時間指示代詞
rzs 處所指示代詞
rzv 謂詞性指示代詞
ry 疑問代詞
ryt 時間疑問代詞
rys 處所疑問代詞
ryv 謂詞性疑問代詞
rg 代詞性語素
處所詞(1個一類)
s 處所詞
時間詞(1個一類,1個二類)
t 時間詞
tg 時間詞性語素
助詞(1個一類,15個二類)
u 助詞
uzhe 着
ule 了 嘍
uguo 過
ude1 的 底
ude2 地
ude3 得
usuo 所
udeng 等 等等 雲雲
uyy 一樣 一般 似的 般
udh 的話
uls 來講 來說 而言 說來
uzhi 之
ulian 連 (“連小學生都會”)
動詞(1個一類,9個二類)
v 動詞
vd 副動詞
vn 名動詞
vshi 動詞“是”
vyou 動詞“有”
vf 趨向動詞
vx 形式動詞
vi 不及物動詞(內動詞)
vl 動詞性慣用語
vg 動詞性語素
標點符號(1個一類,16個二類)
w 標點符號
wkz 左括號,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
wky 右括號,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
wyz 左引號,全角:“ ‘ 『
wyy 右引號,全角:” ’ 』
wj 句號,全角:。
ww 問號,全角:? 半角:?
wt 嘆號,全角:! 半角:!
wd 逗號,全角:, 半角:,
wf 分號,全角:; 半角: ;
wn 頓號,全角:、
wm 冒號,全角:: 半角: :
ws 省略號,全角:…… …
wp 破折號,全角:—— -- ——- 半角:--- ----
wb 百分號千分號,全角:% ‰ 半角:%
wh 單位符號,全角:¥ $ £ ° ℃ 半角:$
字符串(1個一類,2個二類)
x 字符串
xx 非語素字
xu 網址URL
語氣詞(1個一類)
y 語氣詞(delete yg)
狀態詞(1個一類)
z 狀態詞
參考:https://pypi.org/project/jieba/#history
https://www.cnblogs.com/jiayongji/p/7119065.html
https://blog.csdn.net/gzmfxy/article/details/78994396

