淺談python jieba分詞模塊的基本用法
jieba(結(jié)巴)是一個(gè)強(qiáng)大的分詞庫(kù),完美支持中文分詞,本文對(duì)其基本用法做一個(gè)簡(jiǎn)要總結(jié)。
特點(diǎn)
- 支持三種分詞模式:
- 精確模式,試圖將句子最精確地切開(kāi),適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語(yǔ)都掃描出來(lái), 速度非???,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分,提高召回率,適合用于搜索引擎分詞。
- 支持繁體分詞
- 支持自定義詞典
- MIT 授權(quán)協(xié)議
安裝jieba
pip install jieba
簡(jiǎn)單用法
結(jié)巴分詞分為三種模式:精確模式(默認(rèn))、全模式和搜索引擎模式,下面對(duì)這三種模式分別舉例介紹:
精確模式
import jieba s = u'我想和女朋友一起去北京故宮博物院參觀和閑逛。'
cut = jieba.cut(s) print '【Output】' print cut print ','.join(cut)
【Output】 <generator object cut at 0x7f8dbc0efc30> 我,想,和,女朋友,一起,去,北京故宮博物院,參觀,和,閑逛,。
可見(jiàn)分詞結(jié)果返回的是一個(gè)生成器(這對(duì)大數(shù)據(jù)量數(shù)據(jù)的分詞尤為重要)。
全模式
print '【Output】' print ','.join(jieba.cut(s,cut_all = True))
【Output】 我,想,和,女朋友,朋友,一起,去,北京,北京故宮,北京故宮博物院,故宮,故宮博物院,博物,博物院,參觀,和,閑逛,,
可見(jiàn)全模式就是把文本分成盡可能多的詞。
搜索引擎模式
print '【Output】' print ','.join(jieba.cut_for_search(s))
【Output】 我,想,和,朋友,女朋友,一起,去,北京,故宮,博物,博物院,北京故宮博物院,參觀,和,閑逛,。
獲取詞性
每個(gè)詞都有其詞性,比如名詞、動(dòng)詞、代詞等,結(jié)巴分詞的結(jié)果也可以帶上每個(gè)詞的詞性,要用到j(luò)ieba.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')] '''
可以看到成功獲取到每個(gè)詞的詞性,這對(duì)于我們對(duì)分詞結(jié)果做進(jìn)一步處理很有幫助,比如只想獲取分詞結(jié)果列表中的名詞,那么就可以這樣過(guò)濾:
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')] '''
至于詞性的每個(gè)字母分別表示什么詞性,jieba分詞的結(jié)果可能有哪些詞性,就要去查閱詞性對(duì)照表了,本文結(jié)尾附了一份從網(wǎng)上搜到的詞性對(duì)照表,想了解更詳細(xì)的詞性分類信息,可以到網(wǎng)上搜索"結(jié)巴分詞詞性對(duì)照"。
并行分詞
在文本數(shù)據(jù)量非常大的時(shí)候,為了提高分詞效率,開(kāi)啟并行分詞就很有必要了。jieba支持并行分詞,基于python自帶的multiprocessing模塊,但要注意的是在Windows環(huán)境下不支持。
用法:
# 開(kāi)啟并行分詞模式,參數(shù)為并發(fā)執(zhí)行的進(jìn)程數(shù) jieba.enable_parallel(5) # 關(guān)閉并行分詞模式 jieba.disable_parallel()
舉例:開(kāi)啟并行分詞模式對(duì)三體全集文本進(jìn)行分詞
santi_text = open('./santi.txt').read() print len(santi_text)
2681968
可以看到三體全集的數(shù)據(jù)量還是非常大的,有260多萬(wàn)字節(jié)的長(zhǎng)度。
jieba.enable_parallel(100) santi_words = [x for x in jieba.cut(santi_text) if len(x) >= 2] jieba.disable_parallel()
獲取出現(xiàn)頻率Top n的詞
還是以上面的三體全集文本為例,假如想要獲取分詞結(jié)果中出現(xiàn)頻率前20的詞列表,可以這樣獲取:
from collections import Counter c = Counter(santi_words).most_common(20) print c # 輸出: ''' [(u'\r\n', 21805), (u'一個(gè)', 3057), (u'沒(méi)有', 2128), (u'他們', 1690), (u'我們', 1550), (u'這個(gè)', 1357), (u'自己', 1347), (u'程心', 1320), (u'現(xiàn)在', 1273), (u'已經(jīng)', 1259), (u'世界', 1243), (u'羅輯', 1189), (u'可能', 1177), (u'什么', 1176), (u'看到', 1114), (u'知道', 1094), (u'地球', 951), (u'人類', 935), (u'太空', 930), (u'三體', 883)] '''
可以看到結(jié)果中'\r\n'居然是出現(xiàn)頻率最高的詞,還有'一個(gè)'、'沒(méi)有'、'這個(gè)'等這種我們并不想要的無(wú)實(shí)際意義的詞,那么就可以根據(jù)前面說(shuō)的詞性來(lái)進(jìn)行過(guò)濾,這個(gè)以后細(xì)講。
使用用戶字典提高分詞準(zhǔn)確性
不使用用戶字典的分詞結(jié)果:
txt = u'歐陽(yáng)建國(guó)是創(chuàng)新辦主任也是歡聚時(shí)代公司云計(jì)算方面的專家' print ','.join(jieba.cut(txt))
歐陽(yáng),建國(guó),是,創(chuàng)新,辦,主任,也,是,歡聚,時(shí)代,公司,云,計(jì)算,方面,的,專家
使用用戶字典的分詞結(jié)果:
jieba.load_userdict('user_dict.txt') print ','.join(jieba.cut(txt))
歐陽(yáng)建國(guó),是,創(chuàng)新辦,主任,也,是,歡聚時(shí)代,公司,云計(jì)算,方面,的,專家
可以看出使用用戶字典后分詞準(zhǔn)確性大大提高。
注:其中user_dict.txt的內(nèi)容如下:
歐陽(yáng)建國(guó) 5
創(chuàng)新辦 5 i
歡聚時(shí)代 5
云計(jì)算 5
用戶字典每行一個(gè)詞,格式為:
詞語(yǔ) 詞頻 詞性
其中詞頻是一個(gè)數(shù)字,詞性為自定義的詞性,要注意的是詞頻數(shù)字和空格都要是半角的。
附:結(jié)巴分詞詞性對(duì)照表(按詞性英文首字母排序)
形容詞(1個(gè)一類,4個(gè)二類)
a 形容詞
ad 副形詞
an 名形詞
ag 形容詞性語(yǔ)素
al 形容詞性慣用語(yǔ)
區(qū)別詞(1個(gè)一類,2個(gè)二類)
b 區(qū)別詞
bl 區(qū)別詞性慣用語(yǔ)
連詞(1個(gè)一類,1個(gè)二類)
c 連詞
cc 并列連詞
副詞(1個(gè)一類)
d 副詞
嘆詞(1個(gè)一類)
e 嘆詞
方位詞(1個(gè)一類)
f 方位詞
前綴(1個(gè)一類)
h 前綴
后綴(1個(gè)一類)
k 后綴
數(shù)詞(1個(gè)一類,1個(gè)二類)
m 數(shù)詞
mq 數(shù)量詞
名詞 (1個(gè)一類,7個(gè)二類,5個(gè)三類)
名詞分為以下子類:
n 名詞
nr 人名
nr1 漢語(yǔ)姓氏
nr2 漢語(yǔ)名字
nrj 日語(yǔ)人名
nrf 音譯人名
ns 地名
nsf 音譯地名
nt 機(jī)構(gòu)團(tuán)體名
nz 其它專名
nl 名詞性慣用語(yǔ)
ng 名詞性語(yǔ)素
擬聲詞(1個(gè)一類)
o 擬聲詞
介詞(1個(gè)一類,2個(gè)二類)
p 介詞
pba 介詞“把”
pbei 介詞“被”
量詞(1個(gè)一類,2個(gè)二類)
q 量詞
qv 動(dòng)量詞
qt 時(shí)量詞
代詞(1個(gè)一類,4個(gè)二類,6個(gè)三類)
r 代詞
rr 人稱代詞
rz 指示代詞
rzt 時(shí)間指示代詞
rzs 處所指示代詞
rzv 謂詞性指示代詞
ry 疑問(wèn)代詞
ryt 時(shí)間疑問(wèn)代詞
rys 處所疑問(wèn)代詞
ryv 謂詞性疑問(wèn)代詞
rg 代詞性語(yǔ)素
處所詞(1個(gè)一類)
s 處所詞
時(shí)間詞(1個(gè)一類,1個(gè)二類)
t 時(shí)間詞
tg 時(shí)間詞性語(yǔ)素
助詞(1個(gè)一類,15個(gè)二類)
u 助詞
uzhe 著
ule 了 嘍
uguo 過(guò)
ude1 的 底
ude2 地
ude3 得
usuo 所
udeng 等 等等 云云
uyy 一樣 一般 似的 般
udh 的話
uls 來(lái)講 來(lái)說(shuō) 而言 說(shuō)來(lái)
uzhi 之
ulian 連 (“連小學(xué)生都會(huì)”)
動(dòng)詞(1個(gè)一類,9個(gè)二類)
v 動(dòng)詞
vd 副動(dòng)詞
vn 名動(dòng)詞
vshi 動(dòng)詞“是”
vyou 動(dòng)詞“有”
vf 趨向動(dòng)詞
vx 形式動(dòng)詞
vi 不及物動(dòng)詞(內(nèi)動(dòng)詞)
vl 動(dòng)詞性慣用語(yǔ)
vg 動(dòng)詞性語(yǔ)素
標(biāo)點(diǎn)符號(hào)(1個(gè)一類,16個(gè)二類)
w 標(biāo)點(diǎn)符號(hào)
wkz 左括號(hào),全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
wky 右括號(hào),全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
wyz 左引號(hào),全角:“ ‘ 『
wyy 右引號(hào),全角:” ' 』
wj 句號(hào),全角:。
ww 問(wèn)號(hào),全角:? 半角:?
wt 嘆號(hào),全角:! 半角:!
wd 逗號(hào),全角:, 半角:,
wf 分號(hào),全角:; 半角: ;
wn 頓號(hào),全角:、
wm 冒號(hào),全角:: 半角: :
ws 省略號(hào),全角:…… …
wp 破折號(hào),全角:—— -- ——- 半角:--- ----
wb 百分號(hào)千分號(hào),全角:% ‰ 半角:%
wh 單位符號(hào),全角:¥ $ £ ° ℃ 半角:$
字符串(1個(gè)一類,2個(gè)二類)
x 字符串
xx 非語(yǔ)素字
xu 網(wǎng)址URL
語(yǔ)氣詞(1個(gè)一類)
y 語(yǔ)氣詞(delete yg)
狀態(tài)詞(1個(gè)一類)
z 狀態(tài)詞
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python算法應(yīng)用實(shí)戰(zhàn)之隊(duì)列詳解
隊(duì)列是一種先進(jìn)先出(First-In-First-Out,F(xiàn)IFO)的數(shù)據(jù)結(jié)構(gòu)。隊(duì)列被用在很多地方,比如提交操作系統(tǒng)執(zhí)行的一系列進(jìn)程、打印任務(wù)池等,一些仿真系統(tǒng)用隊(duì)列來(lái)模擬銀行或雜貨店里排隊(duì)的顧客。下面就介紹了Python中隊(duì)列的應(yīng)用實(shí)戰(zhàn),需要的可以參考。2017-02-02寫(xiě)了個(gè)監(jiān)控nginx進(jìn)程的Python腳本
接上一文用iptables讓SSH服務(wù)對(duì)陌生人說(shuō)不。還是有點(diǎn)擔(dān)心這個(gè)學(xué)期內(nèi),nginx可能會(huì)因?yàn)橄到y(tǒng)各種原因而出現(xiàn)異常退出,導(dǎo)致Web服務(wù)暫停。所以,又來(lái)了一個(gè)方案2012-05-05Python中反轉(zhuǎn)二維數(shù)組的行和列問(wèn)題
這篇文章主要介紹了Python中反轉(zhuǎn)二維數(shù)組的行和列問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01python之ImportError:模塊引入異常問(wèn)題
這篇文章主要介紹了python之ImportError:模塊引入異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

python寫(xiě)入csv時(shí)writerow()和writerows()函數(shù)簡(jiǎn)單示例

Python_查看sqlite3表結(jié)構(gòu),查詢語(yǔ)句的示例代碼

Python無(wú)權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式