jieba 分词
一.介紹:
jieba:
“結(jié)巴”中文分詞:做最好的 Python 中文分詞組件
“Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.
完整文檔見 :
GitHub:?https://github.com/fxsjy/jieba
特點
- 支持三種分詞模式:
- 精確模式,試圖將句子最精確地切開,適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
二.功能介紹及例子
1.分詞主要功能:
? ? ? ? ? ? ?先介紹主要的使用功能,再展示代碼輸出。jieba分詞的主要功能有如下幾種:
1.?jieba.cut:該方法接受三個輸入?yún)?shù):需要分詞的字符串; cut_all 參數(shù)用來控制是否采用全模式;HMM參數(shù)用來控制是否適用HMM模型
2. jieba.cut_for_search:該方法接受兩個參數(shù):需要分詞的字符串;是否使用HMM模型,該方法適用于搜索引擎構(gòu)建倒排索引的分詞,粒度比較細(xì)。
3. 待分詞的字符串可以是unicode或者UTF-8字符串,GBK字符串。注意不建議直接輸入GBK字符串,可能無法預(yù)料的誤解碼成UTF-8,
4. jieba.cut 以及jieba.cut_for_search返回的結(jié)構(gòu)都是可以得到的generator(生成器), 可以使用for循環(huán)來獲取分詞后得到的每一個詞語或者使用
5. jieb.lcut?以及 jieba.lcut_for_search 直接返回list
6. jieba.Tokenizer(dictionary=DEFUALT_DICT)?新建自定義分詞器,可用于同時使用不同字典,jieba.dt為默認(rèn)分詞器,所有全局分詞相關(guān)函數(shù)都是該分詞器的映射。
2.簡單模式:
2.1.精確模式(返回結(jié)果是一個生成器,對大量數(shù)據(jù)分詞很重要,占內(nèi)存小):
?
import jiebas = '我想大口吃肉大碗喝酒!!!' cut=jieba.cut(s) print(cut) #精確模式 print('精確模式輸出:') print(','.join(cut))? ? ? ? ?輸出為:
?
2.2.全模式(返回結(jié)果也是生成器,特點是把文本分成盡可能多的詞):
import jiebas = '我想大口吃肉大碗喝酒!!!' print('全模式:') result=jieba.cut(s, cut_all=True) print(result) print(' '.join(result))輸出為:
2.3.搜索引擎模式:
import jiebas = '我想大口吃肉大碗喝酒!!!' print('搜索引擎模式:') result=jieba.cut_for_search(s) print(result) print(','.join(result)) 輸出為:2.4:單個字模式:不用jieba,直接用list(sentence)? 即可
train_df = pd.read_csv(dir)[:10].Report def seg(sentence):return list(sentence.strip()) word_list = train_df.apply(seg)》》》 2 [行, 駛, 沒, 有, 頓, 挫, 的, 感, 覺, 原, 地, 換, 擋, 有, 闖, ... 3 [舉, 起, 車, 輛, 在, 左, 前, 輪, 這, 邊, 的, 缸, 體, 上] 4 [家, 庭, 用, 車, 可, 以, 入, 手, 的, 維, 修, 保, 養(yǎng), 價, 格, ...3.獲取詞性:每個詞都有其詞性,比如名詞、動詞、代詞等,結(jié)巴分詞的結(jié)果也可以帶上每個詞的詞性,要用到jieba.posseg
分詞及輸出詞性:
import jieba.posseg as psgs = '我想大口吃肉大碗喝酒!!!' print('分詞及詞性:') result=psg.cut(s) print(result) print([(x.word,x.flag) for x in result]) 輸出為過濾詞性,如獲取名詞: 直接加個條件判斷就行了
import jieba.posseg as psgs = '我想大口吃肉大碗喝酒!!!' print('分詞及詞性:') result=psg.cut(s) print(result) #篩選為名詞的 print([(x.word,x.flag) for x in result if x.flag=='n'])輸出為
4.并行分詞:在文本數(shù)據(jù)量非常大的時候,為了提高分詞效率,開啟并行分詞就很有必要了。jieba支持并行分詞,基于python自帶的multiprocessing模塊,但要注意的是在Windows環(huán)境下不支持。
# 開啟并行分詞模式,參數(shù)為并發(fā)執(zhí)行的進(jìn)程數(shù) jieba.enable_parallel(5)# 關(guān)閉并行分詞模式 jieba.disable_parallel()如:
5.獲取出現(xiàn)頻率Top n的詞(有些詞無實際意義,可篩選):?Counter.most_common(num)
from collections import Counter words_total=open('1',encoding='utf-8').read() c = Counter(words_total).most_common(20) print (c)6.使用用戶字典提高分詞準(zhǔn)確性:
jieba分詞器還有一個方便的地方是開發(fā)者可以指定自己的自定義詞典,以便包含詞庫中沒有的詞,雖然jieba分詞有新詞識別能力,但是自行添加新詞可以保證更高的正確率。
使用命令:
jieba.load_userdict(filename) # filename為自定義詞典的路徑。在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,一個詞占一行,每一行分成三部分,一部分為詞語,一部分為詞頻,最后為詞性(可以省略),用空格隔開。
7.關(guān)鍵詞抽取: jieba.analyse,extract_tags? ?或者?? jieba.analyse.textrank
?
?
github:https://github.com/fxsjy/jieba
參考:https://www.baidu.com/s?ie=UTF-8&wd=jieba%20posseg
總結(jié)
- 上一篇: 图解Java 垃圾回收机制
- 下一篇: 第三方控件netadvantage Ul