Python jieba分詞模組的基本用法

2021-09-09 00:16:07 字數 3252 閱讀 3724

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

pip install jieba

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

import jieba

s = u'我想和女朋友一起去北京故宮博物院參觀和閒逛。'

cut = jieba.cut(s)

print '【output】'

print cut

print ','.join(cut)

【output】

我,想,和,女朋友,一起,去,北京故宮博物院,參觀,和,閒逛,。

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

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支援並行分詞,基於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()

還是以上面的三體全集文字為例,假如想要獲取分詞結果**現頻率前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

使用者字典每行乙個詞,格式為:

詞語 詞頻 詞性

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

Python jieba分詞常用方法

支援3中分詞模式 1.全模式 把句子中的所有可以成詞的詞語都掃瞄出來,使用方法 jieba.cut 字串 cut all true,hmm false 2.精確模式 試圖將文字最精確的分開,適合於做文字分析。使用方法 jieba.cut 字串 cut all false,hmm true 3.搜尋引...

python jieba分詞 詞性標註

進行詞性標註 檔案讀取寫入 做實驗室的乙個專案,暫時要做的內容 對文字資料作摘要 8 首先觀察文字資料,我們需要擷取符號 open cut.txt r encoding utf 8 f1 open cut result.txt w encoding utf 8 for line in f.readl...

python jieba分詞庫的使用

測試環境 py3 win10 import jieba str test 有很多人擔心,美國一聲令下,會禁止所有的開源軟體被中國使用,這樣的擔憂是不必要的。返回迭代器 c1 jieba.cut str test c2 jieba.cut str test,cut all true c3 jieba....