python中jieba模塊的深入了解
一、前言
英語(yǔ)單詞之間是通過空格分隔的,但是中文卻不存在空格的概念,因此需要一個(gè)模塊來解決中文的分詞問題。jieba模塊是一個(gè)python第三方中文分詞模塊,可以用于將語(yǔ)句中的中文詞語(yǔ)分離出來。
此外,全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)python語(yǔ)言程序設(shè)計(jì)也涉及到該模塊的相關(guān)知識(shí)。因此大家可以好好了解下該模塊。
二、模塊的安裝
jieba模塊作為python的一個(gè)第三方模塊,是需要我們自行下載安裝后才能使用的,我們主要采用pip安裝工具進(jìn)行jieba的安裝,具體步驟如下:
在windows操作系統(tǒng)中,快捷鍵win+R,
然后輸入cmd,點(diǎn)擊確定,打開
輸入:
pip install jieba
即可安裝成功。
三、jieba模塊具體講解
3.1分詞模式
jieba模塊支持三種分詞模式:全模式、精準(zhǔn)模式以及搜索引擎模式。
①全模式:全模式可以將句子中所有可能的詞語(yǔ)全部提取出來,該模式提取速度快,但可能會(huì)出現(xiàn)冗余詞匯。
如圖,第一行出現(xiàn)了冗余詞匯,其采用的就是全模式,而第二行采用精準(zhǔn)模式。
②精準(zhǔn)模式:精準(zhǔn)模式通過優(yōu)化的智能算法將語(yǔ)句精準(zhǔn)的分隔,適用于文本分析。
③搜索引擎模式:搜索引擎模式在精準(zhǔn)模式的基礎(chǔ)上對(duì)詞語(yǔ)進(jìn)行再次劃分,提高召回率,適用于搜索引擎分詞。
3.2cut()、lcut()
3.2.1cut(sentence, cut_all=False, HMM=True, use_paddle=False)
參數(shù)解析:
sentence:要分割的str(unicode)。
cut_all:模型類型。True 表示全模式,F(xiàn)alse 表示精準(zhǔn)模式。其默認(rèn)為精準(zhǔn)模式。
HMM:是否使用隱馬爾可夫模型。
函數(shù)功能:
The main function that segments an entire sentence that contains Chinese characters into separated words.
將包含漢字的整個(gè)句子分割成單獨(dú)的單詞的主要功能。
import jieba sentence = 'python是世界上最好的編程語(yǔ)言' ls = jieba.cut(sentence, cut_all=False) print(ls) # <generator object Tokenizer.cut at 0x000001966B14EA98>
print(type(ls)) # <class 'generator'>
如圖,其是迭代器類型,可以用以下三種方式顯示結(jié)果
①' '.join()
# ①''.join ls_1 = ' '.join(ls) print(ls_1) # python 是 世界 上 最好 的 編程 編程語(yǔ)言 語(yǔ)言
②for循環(huán)遍歷
# ②for循環(huán)遍歷 for i in ls: print(i) ''' python 是 世界 上 最好 的 編程語(yǔ)言 '''
③列表推導(dǎo)式
# ③列表推導(dǎo)式 ls_2 = [i for i in ls] print(ls_2) # ['python', '是', '世界', '上', '最好', '的', '編程語(yǔ)言']
3.2.2lcut(sentence,cut_all=False)
def lcut(self, *args, **kwargs): return list(self.cut(*args, **kwargs))
查看jieba模塊,其定義lcut()函數(shù)如上,可以發(fā)現(xiàn)lcut()函數(shù)最終返回的是list(cut())
import jieba sentence = 'python是世界上最好的編程語(yǔ)言' ls = jieba.cut(sentence, cut_all=False) print(ls) print(list(ls)) ls1 = jieba.lcut(sentence, cut_all=True) print(ls1) ls2 = jieba.lcut(sentence) print(ls2)
結(jié)果如下 :
注意:cut_all=False是精準(zhǔn)模式,也是其默認(rèn)的類型。
3.3cut_for_search()、lcut_for_search()
cut_for_search(sentence, HMM=True)和lcut_for_search(sentence, HMM=True)和上面所講的類似。其都是對(duì)搜索引擎進(jìn)行更精細(xì)的細(xì)分,即采用搜索引擎模式。
import jieba sentence = 'python是世界上最好的編程語(yǔ)言' ls3 = jieba.cut_for_search(sentence) print(ls3) # <generator object Tokenizer.cut_for_search at 0x00000199C7A3D9A8> print(list(ls3)) # ['python', '是', '世界', '上', '最好', '的', '編程', '語(yǔ)言', '編程語(yǔ)言'] ls4 = jieba.lcut_for_search(sentence) print(ls4) # ['python', '是', '世界', '上', '最好', '的', '編程', '語(yǔ)言', '編程語(yǔ)言']
3.4add_word(self, word, freq=None, tag=None)
Add a word to dictionary. freq and tag can be omitted, freq defaults to be a calculated value that ensures the word can be cut out.
- 函數(shù)功能:在字典中添加一個(gè)單詞。
- 參數(shù)解析:freq 和 tag 可以省略,freq 默認(rèn)是一個(gè)計(jì)算值,保證單詞可以被切掉。
import jieba sentence = 'python是世界上最好的編程語(yǔ)言' ls2 = jieba.lcut(sentence) print(ls2) ls5 = jieba.add_word('最好的') ls6 = jieba.lcut(sentence) print(ls6)
結(jié)果如上,最終最好的就沒有被切掉。
3.5del_word(word)
函數(shù)功能:分詞詞典中刪除詞word
import jieba sentence = 'python是世界上最好的編程語(yǔ)言' ls2 = jieba.lcut(sentence) print(ls2) ls7 = jieba.del_word('世界') ls8 = jieba.lcut(sentence) print(ls8)
不過經(jīng)過筆者更改word,發(fā)現(xiàn)word是編程語(yǔ)言時(shí),最后就分割成了編程和語(yǔ)言;當(dāng)word是編程時(shí),結(jié)果沒變化;當(dāng)word是python時(shí),結(jié)果也沒變化。因此有些需要筆者自己去嘗試。
3.6suggest_freq(segment, tune=False)
""" Suggest word frequency to force the characters in a word to be joined or splitted. Parameter: - segment : The segments that the word is expected to be cut into, If the word should be treated as a whole, use a str. - tune : If True, tune the word frequency. Note that HMM may affect the final result. If the result doesn't change, set HMM=False. """
- 函數(shù)功能:建議詞頻,強(qiáng)制將單詞中的字符合并或拆分。
- 參數(shù)解析:
- segment :該單詞預(yù)期被切割成的片段,如果該單詞應(yīng)該被視為一個(gè)整體,則使用str。
- tune : 如果為True,則調(diào)整詞頻。
注意:HMM可能會(huì)影響最終結(jié)果。如果結(jié)果不變,設(shè)置HMM=False。
3.7tokenize(unicode_sentence, mode="default", HMM=True)
""" Tokenize a sentence and yields tuples of (word, start, end) Parameter: - sentence: the str(unicode) to be segmented. - mode: "default" or "search", "search" is for finer segmentation. - HMM: whether to use the Hidden Markov Model. """
- 函數(shù)功能:標(biāo)記一個(gè)句子并產(chǎn)生 (word, start, end) 的元組
- 參數(shù)解析:
- unicode_sentence:要分割的 str(unicode)。
- 模式:"default" or "search", "search" is for finer segmentation. “默認(rèn)”或“搜索”,“搜索”用于更精細(xì)的分割。
- HMM: 是否使用隱馬爾可夫模型。
四、所需代碼展示
# -*- coding: utf-8-*- import jieba sentence = 'python是世界上最好的編程語(yǔ)言' ls = jieba.cut(sentence, cut_all=False) # print(ls) # print(list(ls)) # # <generator object Tokenizer.cut at 0x0000019F5E44DA98> # print(type(ls)) # # <class 'generator'> # # ①''.join # ls_1 = ' '.join(ls) # print(ls_1) # # python 是 世界 上 最好 的 編程語(yǔ)言 # ②for循環(huán)遍歷 # for i in ls: # print(i) # ''' # python # 是 # 世界 # 上 # 最好 # 的 # 編程語(yǔ)言 # ''' # # ③列表推導(dǎo)式 # ls_2 = [i for i in ls] # print(ls_2) # # ['python', '是', '世界', '上', '最好', '的', '編程語(yǔ)言'] # ls1 = jieba.lcut(sentence, cut_all=True) # print(ls1) ls2 = jieba.lcut(sentence) print(ls2) # ls3 = jieba.cut_for_search(sentence) # print(ls3) # # <generator object Tokenizer.cut_for_search at 0x00000199C7A3D9A8> # print(list(ls3)) # # ['python', '是', '世界', '上', '最好', '的', '編程', '語(yǔ)言', '編程語(yǔ)言'] # ls4 = jieba.lcut_for_search(sentence) # print(ls4) # ['python', '是', '世界', '上', '最好', '的', '編程', '語(yǔ)言', '編程語(yǔ)言'] # ls5 = jieba.load_userdict('文案.txt') # ls6 = jieba.lcut(sentence) # print(ls6) # ls5 = jieba.add_word('最好的') # ls6 = jieba.lcut(sentence) # print(ls6) ls7 = jieba.del_word('世界') ls8 = jieba.lcut(sentence) print(ls8)
需要的可以自行復(fù)制
五、總結(jié)
- ①全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)python語(yǔ)言程序設(shè)計(jì)中涉及到的內(nèi)容一般只是分詞模式、lcut()、lcut_for_search()和add_word()這幾方面知識(shí);
- ②筆者所寫的不是特別詳細(xì),要是之后有好的案例或者其他方式,會(huì)進(jìn)行添加以及完善3.6,3.7的內(nèi)容;
- ③該模塊的理解與使用不是特別難,希望大家自己動(dòng)手試試,找?guī)讉€(gè)案例,敲敲代碼!!
到此這篇關(guān)于python中jieba模塊的深入了解的文章就介紹到這了,更多相關(guān)python jieba 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用TensorFlow對(duì)圖像進(jìn)行隨機(jī)旋轉(zhuǎn)的實(shí)現(xiàn)示例
這篇文章主要介紹了使用TensorFlow對(duì)圖像進(jìn)行隨機(jī)旋轉(zhuǎn)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01django基礎(chǔ)之?dāng)?shù)據(jù)庫(kù)操作方法(詳解)
下面小編就為大家?guī)硪黄猟jango基礎(chǔ)之?dāng)?shù)據(jù)庫(kù)操作方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05Python使用Rich實(shí)現(xiàn)美化終端顯示效果
Rich庫(kù)的功能就像它的名字一樣,使Python編程更加豐富(rich),用來幫助開發(fā)者在控制臺(tái)(命令行)輸出中創(chuàng)建豐富、多彩和具有格式化的文本,下面我們就來了解下它的具體使用吧2024-02-02爬蟲使用IP來隱藏真實(shí)地址的過程(python示例)
這篇文章主要為大家介紹了爬蟲使用IP來隱藏真實(shí)地址的過程(python示例)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Python Selenium截圖功能實(shí)現(xiàn)代碼
這篇文章主要介紹了Python Selenium截圖功能實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04ubuntu 18.04搭建python環(huán)境(pycharm+anaconda)
這篇文章主要為大家詳細(xì)介紹了ubuntu 18.04搭建python環(huán)境,包括Anaconda安裝、Pycharm安裝及初始配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06python實(shí)現(xiàn)自動(dòng)打卡小程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)打卡小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03python人工智能tensorflow函數(shù)tf.assign使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.assign使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05