jieba(結巴)是乙個強大的分詞庫,完美支援中文分詞,本文對其基本用法做乙個簡要總結。
1.安裝jieba
pip install jieba
2.簡單用法
結巴分詞分為三種模式:精確模式(預設)、全模式和搜尋引擎模式,下面對這三種模式分別舉例介紹:
(1)精確模式
import jieba s = u'我想和女朋友一起去北京故宮博物院參觀和閒逛。'
cut = jieba.cut(s) print(cut) print(','.join(cut))
#結果:
我,想,和,女朋友,一起,去,北京故宮博物院,參觀,和,閒逛,。
可見分詞結果返回的是乙個生成器(這對大資料量資料的分詞尤為重要)。
(2)全模式
cut=jieba.cut(s,cut_all = true))
print(','.join(cut))
#結果:
我,想,和,女朋友,朋友,一起,去,北京,北京故宮,北京故宮博物院,故宮,故宮博物院,博物,博物院,參觀,和,閒逛,,
可見全模式就是把文字分成盡可能多的詞。
(3)搜尋引擎模式
print('【output】')
s = u'我想和女朋友一起去北京故宮博物院參觀和閒逛。' print(','.join(jieba.cut_for_search(s)))
【output】 我,想,和,朋友,女朋友,一起,去,北京,故宮,博物,博物院,北京故宮博物院,參觀,和,閒逛,。
3.獲取詞性
每個詞都有其詞性,比如名詞、動詞、代詞等,結巴分詞的結果也可以帶上每個詞的詞性,要用到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')] '''
4.並行分詞(windows下不支援)
在文字資料量非常大的時候,為了提高分詞效率,開啟並行分詞就很有必要了。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()
5.獲取出現頻率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'居然是出現頻率最高的詞,還有'乙個'、'沒有'、'這個'等這種我們並不想要的無實際意義的詞,那麼就可以根據前面說的詞性來進行過濾。
6.使用使用者字典提高分詞準確性
不使用使用者字典的分詞結果:
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
使用者字典每行乙個詞,格式為:
詞語 詞頻 詞性
其中詞頻是乙個數字,詞性為自定義的詞性,要注意的是詞頻數字和空格都要是半形的。
jieba為自然語言語言中常用工具包,jieba具有對分詞的詞性進行標註的功能,詞性類別如下:
ag形語素
形容詞性語素。形容詞**為 a,語素**g前面置以a。
a形容詞
取英語形容詞 adjective的第1個字母。
ad副形詞
直接作狀語的形容詞。形容詞** a和副詞**d並在一起。
an名形詞
具有名詞功能的形容詞。形容詞** a和名詞**n並在一起。
b區別詞
取漢字「別」的聲母。c連詞
取英語連詞 conjunction的第1個字母。
dg副語素
副詞性語素。副詞**為 d,語素**g前面置以d。d副詞
取 adverb的第2個字母,因其第1個字母已用於形容詞。e嘆詞
取英語嘆詞 exclamation的第1個字母。
f方位詞
取漢字「方」g語素
絕大多數語素都能作為合成詞的「詞根」,取漢字「根」的聲母。
h前接成分
取英語 head的第1個字母。i成語
取英語成語 idiom的第1個字母。
j簡稱略語
取漢字「簡」的聲母。
k後接成分
l習用語
習用語尚未成為成語,有點「臨時性」,取「臨」的聲母。m數詞
取英語 numeral的第3個字母,n,u已有他用。
ng名語素
名詞性語素。名詞**為 n,語素**g前面置以n。n名詞
取英語名詞 noun的第1個字母。
nr人名
名詞** n和「人(ren)」的聲母並在一起。
ns地名
名詞** n和處所詞**s並在一起。
nt機構團體
「團」的聲母為 t,名詞**n和t並在一起。
nz其他專名
「專」的聲母的第 1個字母為z,名詞**n和z並在一起。
o擬聲詞
取英語擬聲詞 onomatopoeia的第1個字母。p介詞
取英語介詞 prepositional的第1個字母。q量詞
取英語 quantity的第1個字母。r代詞
取英語代詞 pronoun的第2個字母,因p已用於介詞。
s處所詞
取英語 space的第1個字母。
tg時語素
時間詞性語素。時間詞**為 t,在語素的**g前面置以t。
t時間詞
取英語 time的第1個字母。u助詞
取英語助詞 auxiliary
vg動語素
動詞性語素。動詞**為 v。在語素的**g前面置以v。v動詞
取英語動詞 verb的第乙個字母。
vd副動詞
直接作狀語的動詞。動詞和副詞的**並在一起。
vn名動詞
指具有名詞功能的動詞。動詞和名詞的**並在一起。
w標點符號
x非語素字
非語素字只是乙個符號,字母 x通常用於代表未知數、符號。
y語氣詞
取漢字「語」的聲母。
z狀態詞
取漢字「狀」的聲母的前乙個字母。
un未知詞
不可識別詞及使用者自定義詞組。取英文unkonwn首兩個字母。(非北大標準,csw分詞中定義)
jieba分詞快速入門 自然語言處理
結巴 中文分詞 做最好的python中文分詞元件 jieba 支援繁體分詞 支援自定義詞典 示例 分詞 encoding utf 8 import jieba seg list jieba.cut 我來到北京清華大學 cut all true print full mode join seg lis...
自然語言中最好中文分詞 jieba
美圖欣賞 一.jieba介紹 結巴 中文分詞 做最好的python中文分詞元件 jieba 中文為 to stutter 中文文字分割 內建為最好的python中文單詞分割模組。二.jieba特徵支援典型分詞模式 精確模式,試圖將句子最精確地切開,適合文字分析 全模式,把句子中所有的可以成詞的短語都...
NLP自然語言處理
第1部分自然語言處理入門 1.1自然語言處理入門.mp4 第2部分hmm和crf 1.1crf模型簡介.mp4 1.1hmm模型介紹.mp4 1.2文字處理的基本方法 part1.mp4 2.1新聞主題分類任務 第4步 part2.mp4 第43部分rnn 1.1rnn模型小結.mp4 1.1rnn...