好玩的分詞(1)——python jieba分詞模塊的基本用法

參考資料:結(jié)巴分詞GitHub文檔

jieba(結(jié)巴)是一個(gè)強(qiáng)大的分詞庫(kù),完美支持中文分詞,本文對(duì)其基本用法做一個(gè)簡(jiǎn)要總結(jié)。

安裝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é)果返回的是一個(gè)生成器(這對(duì)大數(shù)據(jù)量數(shù)據(jù)的分詞尤為重要)。

全模式

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

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

搜索引擎模式

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í)候,為了提高分詞效率,開啟并行分詞就很有必要了。jieba支持并行分詞,基于python自帶的multiprocessing模塊,但要注意的是在Windows環(huán)境下不支持。

用法:

# 開啟并行分詞模式,參數(shù)為并發(fā)執(zhí)行的進(jìn)程數(shù)
jieba.enable_parallel(5)

# 關(guān)閉并行分詞模式
jieba.disable_parallel()

舉例:開啟并行分詞模式對(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)詞

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在前幾天,我抽出時(shí)間總結(jié)了一下在高中期間可能會(huì)出現(xiàn)的英語(yǔ)句法知識(shí),一篇文章幫你搞懂高中出現(xiàn)的所有句法知識(shí),仔細(xì)斟酌...
    姜末閱讀 22,679評(píng)論 44 914
  • 原文鏈接(首發(fā)于十五言社區(qū)) 按形態(tài)學(xué)(morphology,有時(shí)也叫語(yǔ)素學(xué))給語(yǔ)言分類,世界上的語(yǔ)言可以粗略地分...
    非?;钴S用戶閱讀 7,113評(píng)論 4 10
  • 人稱代詞 主格:用在句首,做主語(yǔ);賓格:在動(dòng)詞、介詞之后;形容詞性的物主代詞:不能單獨(dú)使用;名詞性物主代詞:只能單...
    Acloun閱讀 8,290評(píng)論 3 21
  • 第一講 簡(jiǎn)縮形式的變法 1、簡(jiǎn)縮形式的變法:把倒數(shù)第二個(gè)字母,通常是元音字母變成’ 但are除外,are要把a(bǔ)打成...
    晨冀閱讀 789評(píng)論 0 1
  • 今天講的“醉酒男”和“豪車女”,他們都在怪天氣熱,這樣對(duì)嗎? 當(dāng)里個(gè)當(dāng),閑言碎語(yǔ)不多講,表一表好漢武二郎。想當(dāng)年,...
    那時(shí)靜空閱讀 257評(píng)論 0 0

友情鏈接更多精彩內(nèi)容