模塊 jieba結巴分詞庫 中文分詞


jieba結巴分詞庫

jieba(結巴)是一個強大的分詞庫,完美支持中文分詞,本文對其基本用法做一個簡要總結。

安裝jieba

pip install jieba

簡單用法

結巴分詞分為三種模式:精確模式(默認)、全模式和搜索引擎模式,下面對這三種模式分別舉例介紹:

精確模式

import jieba
s = u'我想和女朋友一起去北京故宮博物院參觀和閑逛。'
cut = jieba.cut(s)

print '【Output】'
print cut
print ','.join(cut)
【Output】
<generator object cut at 0x7f8dbc0efc30>
我,想,和,女朋友,一起,去,北京故宮博物院,參觀,和,閑逛,。

可見分詞結果返回的是一個生成器(這對大數據量數據的分詞尤為重要)。

全模式

print '【Output】'
print ','.join(jieba.cut(s,cut_all = True))
【Output】
我,想,和,女朋友,朋友,一起,去,北京,北京故宮,北京故宮博物院,故宮,故宮博物院,博物,博物院,參觀,和,閑逛,,

可見全模式就是把文本分成盡可能多的詞。

搜索引擎模式

print '【Output】'
print ','.join(jieba.cut_for_search(s))
【Output】
我,想,和,朋友,女朋友,一起,去,北京,故宮,博物,博物院,北京故宮博物院,參觀,和,閑逛,。

獲取詞性

每個詞都有其詞性,比如名詞、動詞、代詞等,結巴分詞的結果也可以帶上每個詞的詞性,要用到jieba.posseg,舉例如下:

import jieba.posseg as psg
print '【Output】'
print [(x.word,x.flag) for x in psg.cut(s)]

# 輸出:
'''
[(u'我', u'r'), (u'想', u'v'), (u'和', u'c'), (u'女朋友', u'n'), (u'一起', u'm'), 
(u'去', u'v'), (u'北京故宮博物院', u'ns'), (u'參觀', u'n'), (u'和', u'c'), (u'閑逛', u'v'), (u'。', u'x')]
'''

可以看到成功獲取到每個詞的詞性,這對於我們對分詞結果做進一步處理很有幫助,比如只想獲取分詞結果列表中的名詞,那么就可以這樣過濾:

print [(x.word,x.flag) for x in psg.cut(s) if x.flag.startswith('n')]

# 輸出:
'''
[(u'女朋友', u'n'), (u'北京故宮博物院', u'ns'), (u'參觀', u'n')]
'''

至於詞性的每個字母分別表示什么詞性,jieba分詞的結果可能有哪些詞性,就要去查閱詞性對照表了,本文結尾附了一份從網上搜到的詞性對照表,想了解更詳細的詞性分類信息,可以到網上搜索"結巴分詞詞性對照"。

並行分詞

在文本數據量非常大的時候,為了提高分詞效率,開啟並行分詞就很有必要了。jieba支持並行分詞,基於python自帶的multiprocessing模塊,但要注意的是在Windows環境下不支持。

用法:

# 開啟並行分詞模式,參數為並發執行的進程數
jieba.enable_parallel(5)

# 關閉並行分詞模式
jieba.disable_parallel()

舉例:開啟並行分詞模式對三體全集文本進行分詞

santi_text = open('./santi.txt').read()
print len(santi_text)
2681968

可以看到三體全集的數據量還是非常大的,有260多萬字節的長度。

jieba.enable_parallel(100)
santi_words = [x for x in jieba.cut(santi_text) if len(x) >= 2]
jieba.disable_parallel()

獲取出現頻率Top n的詞

還是以上面的三體全集文本為例,假如想要獲取分詞結果中出現頻率前20的詞列表,可以這樣獲取:

from collections import Counter
c = Counter(santi_words).most_common(20)
print c

# 輸出:
'''
[(u'\r\n', 21805), (u'一個', 3057), (u'沒有', 2128), (u'他們', 1690), (u'我們', 1550), 
(u'這個', 1357), (u'自己', 1347), (u'程心', 1320), (u'現在', 1273), (u'已經', 1259), 
(u'世界', 1243), (u'羅輯', 1189), (u'可能', 1177), (u'什么', 1176), (u'看到', 1114), 
(u'知道', 1094), (u'地球', 951), (u'人類', 935), (u'太空', 930), (u'三體', 883)]
'''

可以看到結果中'\r\n'居然是出現頻率最高的詞,還有'一個'、'沒有'、'這個'等這種我們並不想要的無實際意義的詞,那么就可以根據前面說的詞性來進行過濾,這個以后細講。

使用用戶字典提高分詞准確性

不使用用戶字典的分詞結果:

txt = u'歐陽建國是創新辦主任也是歡聚時代公司雲計算方面的專家'
print ','.join(jieba.cut(txt))
歐陽,建國,是,創新,辦,主任,也,是,歡聚,時代,公司,雲,計算,方面,的,專家

使用用戶字典的分詞結果:

jieba.load_userdict('user_dict.txt')
print ','.join(jieba.cut(txt))
歐陽建國,是,創新辦,主任,也,是,歡聚時代,公司,雲計算,方面,的,專家

可以看出使用用戶字典后分詞准確性大大提高。

注:其中user_dict.txt的內容如下:

歐陽建國 5

創新辦 5 i

歡聚時代 5

雲計算 5

用戶字典每行一個詞,格式為:

詞語 詞頻 詞性

其中詞頻是一個數字,詞性為自定義的詞性,要注意的是詞頻數字和空格都要是半角的。

附:結巴分詞詞性對照表

  • 按詞性英文首字母排序

形容詞

類型 二級類型 標簽 解釋
形容詞 一類 a 形容詞
形容詞 二類 a 形容詞
形容詞 二類 ad 副形詞
形容詞 二類 an 名形詞
形容詞 二類 ag 形容詞性語素
形容詞 二類 al 形容詞性慣用語
區別詞 一類 b 區別詞
區別詞 二類 bl 區別詞性慣用語

名詞

類型 二級類型 標簽 解釋
名詞 一類 n 名詞
名詞 二類 nr 人名
名詞 三類 nr1 漢語姓氏
名詞 三類 nr2 漢語名字
名詞 三類 nrj 日語人名
名詞 三類 nrf 音譯人名
名詞 二類 ns 地名
名詞 三類 nsf 音譯地名
名詞 二類 nt 機構團體名
名詞 二類 nz 其它專名
名詞 二類 nl 名詞性慣用語
名詞 二類 ng 名詞性語素

代詞(1個一類,4個二類,6個三類)

標簽 解釋
r 代詞
rr 人稱代詞
rz 指示代詞
rzt 時間指示代詞
rzs 處所指示代詞
rzv 謂詞性指示代詞
ry 疑問代詞
ryt 時間疑問代詞
rys 處所疑問代詞
ryv 謂詞性疑問代詞
rg 代詞性語素

助詞(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 單位符號,全角:¥ $ £ ° ℃ 半角:$

其它

類型 二級類型 標簽 解釋
連詞 一類 c 連詞
連詞 二類 cc 並列連詞
副詞 一類 d 副詞
嘆詞 一類 e 嘆詞

| 方位詞|一類|f |方位詞
| 前綴|一類)|h |前綴|
| 后綴|一類|k 后綴|
| 數詞|一類,1個二類|
| 數詞|一類|m |數詞|
| 數詞|二類|mq |數量詞|

擬聲詞(1個一類)

標簽 解釋
o 擬聲詞

介詞(1個一類,2個二類)

|p |介詞|
|pba |介詞“把”|
|pbe|i 介詞“被”|

量詞(1個一類,2個二類)

標簽 解釋
q 量詞
qv 動量詞
qt 時量詞

字符串(1個一類,2個二類)

標簽 解釋
x 字符串
xx 非語素字
xu 網址URL

語氣詞(1個一類)

標簽 解釋
y 語氣詞(delete yg)

狀態詞(1個一類)

標簽 解釋
z 狀態詞

處所詞(1個一類)

標簽 解釋
s 處所詞

時間詞(1個一類,1個二類)

標簽 解釋
t 時間詞
tg 時間詞性語素


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM