Python中文文本處理利器jieba分詞庫(kù)使用
一. 介紹
A. 什么是jieba庫(kù)
- jieba庫(kù)是一款開(kāi)源的中文分詞工具,能夠?qū)⒅形奈谋厩蟹殖稍~語(yǔ)。
B. jieba庫(kù)的特點(diǎn)和優(yōu)勢(shì)
- 支持四種分詞模式:精確模式、全模式、搜索引擎模式和paddle模式。
- 提供自定義詞典功能,可以添加、刪除詞語(yǔ)。
- 支持關(guān)鍵詞提取和詞性標(biāo)注。
- 提供Tokenize接口,可以獲取每個(gè)詞語(yǔ)的起始位置和詞性。
- 支持并行分詞,提高分詞速度。
C. 安裝jieba庫(kù)
在命令行中使用pip安裝jieba庫(kù):
pip install jieba
二. 分詞基礎(chǔ)
A. 字典加載
jieba庫(kù)內(nèi)置了一個(gè)默認(rèn)的詞典,可以直接使用。
也可以使用自定義的詞典,通過(guò)
jieba.load_userdict(file_path)
加載。
B. 分詞模式
- 精確模式
- 精確模式是將文本按照最大概率進(jìn)行切分,效果較好。
- 使用方法:
jieba.cut(sentence)
,返回一個(gè)可迭代的分詞結(jié)果。
- 全模式
- 全模式將文本中所有可能的詞語(yǔ)都切分出來(lái),可能存在冗余。
- 使用方法:
jieba.cut(sentence, cut_all=True)
,返回一個(gè)可迭代的分詞結(jié)果。
- 搜索引擎模式
- 搜索引擎模式根據(jù)詞語(yǔ)的位置進(jìn)行切分,適合搜索引擎分詞。
- 使用方法:
jieba.cut_for_search(sentence)
,返回一個(gè)可迭代的分詞結(jié)果。
- paddle模式
- 利用PaddlePaddle深度學(xué)習(xí)框架,訓(xùn)練序列標(biāo)注(雙向GRU)網(wǎng)絡(luò)模型實(shí)現(xiàn)分詞。同時(shí)支持詞性標(biāo)注。paddle模式使用需安裝paddlepaddle-tiny,
pip install paddlepaddle-tiny==1.6.1
。目前paddle模式支持jieba v0.40及以上版本。jieba v0.40以下版本,請(qǐng)升級(jí)jieba,pip install jieba --upgrade
。
- 利用PaddlePaddle深度學(xué)習(xí)框架,訓(xùn)練序列標(biāo)注(雙向GRU)網(wǎng)絡(luò)模型實(shí)現(xiàn)分詞。同時(shí)支持詞性標(biāo)注。paddle模式使用需安裝paddlepaddle-tiny,
C. 使用示例
# encoding=utf-8 import jieba # 啟動(dòng)paddle模式。 0.40版之后開(kāi)始支持,早期版本不支持 jieba.enable_paddle() strs=["我來(lái)到北京清華大學(xué)","乒乓球拍賣完了","中國(guó)科學(xué)技術(shù)大學(xué)"] for str in strs: seg_list = jieba.cut(str,use_paddle=True) # 使用paddle模式 print("Paddle Mode: " + '/'.join(list(seg_list))) # 全模式 seg_list = jieba.cut("我來(lái)到北京清華大學(xué)", cut_all=True) print("Full Mode: " + "/ ".join(seg_list)) # 精確模式 seg_list = jieba.cut("我來(lái)到北京清華大學(xué)", cut_all=False) print("Default Mode: " + "/ ".join(seg_list)) # 默認(rèn)是精確模式 seg_list = jieba.cut("他來(lái)到了網(wǎng)易杭研大廈") print(", ".join(seg_list)) # 搜索引擎模式 seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所,后在日本京都大學(xué)深造") print(", ".join(seg_list))
輸出:
【全模式】: 我/ 來(lái)到/ 北京/ 清華/ 清華大學(xué)/ 華大/ 大學(xué)
【精確模式】: 我/ 來(lái)到/ 北京/ 清華大學(xué)
【新詞識(shí)別】:他, 來(lái)到, 了, 網(wǎng)易, 杭研, 大廈 (此處,“杭研”并沒(méi)有在詞典中,但是也被Viterbi算法識(shí)別出來(lái)了)
【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國(guó), 科學(xué), 學(xué)院, 科學(xué)院, 中國(guó)科學(xué)院, 計(jì)算, 計(jì)算所, 后, 在, 日本, 京都, 大學(xué), 日本京都大學(xué), 深造
三. 自定義詞典
A. 添加詞語(yǔ)
- 使用
add_word(word, freq=None, tag=None)
和del_word(word)
可在程序中動(dòng)態(tài)修改詞典。
B. 載入自定義詞典
- 如果有一個(gè)包含自定義詞語(yǔ)的文件,可以使用
jieba.load_userdict(file_path)
方法加載該文件,并將其中的詞語(yǔ)加入到詞典中。
C. 使用示例
import jieba # 添加單個(gè)詞語(yǔ)到詞典中 jieba.add_word("自然語(yǔ)言處理") # 載入自定義詞典文件 jieba.load_userdict("custom_dict.txt") sentence = "我愛(ài)自然語(yǔ)言處理" # 分詞結(jié)果包含自定義詞語(yǔ) seg_list = jieba.cut(sentence) print("/".join(seg_list)) # 輸出: 我/愛(ài)/自然語(yǔ)言處理
四. 關(guān)鍵詞提取
A. 基于TF-IDF算法的關(guān)鍵詞提取
- jieba庫(kù)提供了基于TF-IDF算法的關(guān)鍵詞提取方法
jieba.extract_tags(sentence, topK=10)
,用于從文本中提取關(guān)鍵詞。 topK
參數(shù)指定返回的關(guān)鍵詞數(shù)量,默認(rèn)為10。
B. 基于TextRank算法的關(guān)鍵詞提取
- jieba庫(kù)還提供了基于TextRank算法的關(guān)鍵詞提取方法
jieba.textrank(sentence, topK=10)
,也可以用于從文本中提取關(guān)鍵詞。 topK
參數(shù)指定返回的關(guān)鍵詞數(shù)量,默認(rèn)為10。
C. 使用示例
import jieba sentence = "自然語(yǔ)言處理是人工智能領(lǐng)域的重要技術(shù)之一" # 基于TF-IDF算法的關(guān)鍵詞提取 keywords = jieba.extract_tags(sentence, topK=5) print(keywords) # 輸出: ['自然語(yǔ)言處理', '人工智能', '技術(shù)', '領(lǐng)域', '重要'] # 基于TextRank算法的關(guān)鍵詞提取 keywords = jieba.textrank(sentence, topK=5) print(keywords) # 輸出: ['技術(shù)', '重要', '領(lǐng)域', '自然語(yǔ)言處理', '人工智能']
五. 詞性標(biāo)注
A. 詞性標(biāo)注集
- jieba庫(kù)支持對(duì)分詞結(jié)果進(jìn)行詞性標(biāo)注,使用的是jieba庫(kù)內(nèi)置的詞性標(biāo)注集。
B. 使用示例
import jieba import jieba.posseg as pseg # 分詞并進(jìn)行詞性標(biāo)注 words = pseg.cut("自然語(yǔ)言處理很有趣") #jieba默認(rèn)模式 jieba.enable_paddle() #啟動(dòng)paddle模式。 0.40版之后開(kāi)始支持,早期版本不支持 words = pseg.cut("我愛(ài)北京天安門(mén)",use_paddle=True) #paddle模式 for word, flag in words: print(word, flag) # 輸出: # 自然語(yǔ)言 l # 處理 v # 很 d # 有趣 a
paddle模式詞性標(biāo)注對(duì)應(yīng)表如下:
paddle模式詞性和專名類別標(biāo)簽集合如下表,其中詞性標(biāo)簽 24 個(gè)(小寫(xiě)字母),專名類別標(biāo)簽 4 個(gè)(大寫(xiě)字母)。
標(biāo)簽 | 含義 | 標(biāo)簽 | 含義 | 標(biāo)簽 | 含義 | 標(biāo)簽 | 含義 |
---|---|---|---|---|---|---|---|
n | 普通名詞 | f | 方位名詞 | s | 處所名詞 | t | 時(shí)間 |
nr | 人名 | ns | 地名 | nt | 機(jī)構(gòu)名 | nw | 作品名 |
nz | 其他專名 | v | 普通動(dòng)詞 | vd | 動(dòng)副詞 | vn | 名動(dòng)詞 |
a | 形容詞 | ad | 副形詞 | an | 名形詞 | d | 副詞 |
m | 數(shù)量詞 | q | 量詞 | r | 代詞 | p | 介詞 |
c | 連詞 | u | 助詞 | xc | 其他虛詞 | w | 標(biāo)點(diǎn)符號(hào) |
PER | 人名 | LOC | 地名 | ORG | 機(jī)構(gòu)名 | TIME | 時(shí)間 |
六. 并行分詞
A. 并行分詞的優(yōu)勢(shì)
- jieba庫(kù)支持并行分詞,能夠利用多核CPU提高分詞速度。
- 并行分詞使用的是基于python多進(jìn)程的方式,需要在分詞前調(diào)用
jieba.enable_parallel()
啟用并行分詞,之后可以正常使用分詞功能。
B. 并行分詞使用示例
import jieba jieba.enable_parallel(4) # 啟用并行分詞,使用4個(gè)進(jìn)程 sentence = "自然語(yǔ)言處理很有趣" # 分詞結(jié)果 seg_list = jieba.cut(sentence) print("/".join(seg_list)) # 輸出: 自然/語(yǔ)言/處理/很/有趣 jieba.disable_parallel() # 關(guān)閉并行分詞
七. Tokenize接口
A. 默認(rèn)模式
- jieba庫(kù)提供了Tokenize接口
jieba.tokenize(sentence, mode='default')
,用于獲取每個(gè)詞語(yǔ)的起始位置和詞性。 - 默認(rèn)模式下,返回結(jié)果包含詞語(yǔ)、詞語(yǔ)在文本中的起始位置和結(jié)束位置。
B. 搜索引擎模式
- 在Tokenize接口中,可以選擇搜索引擎模式,通過(guò)
mode='search'
參數(shù)指定。 - 搜索引擎模式下,返回結(jié)果還包含分詞的偏移量,適用于搜索引擎等應(yīng)用場(chǎng)景。
C. 返回結(jié)果格式
- Tokenize接口返回的結(jié)果是一個(gè)可迭代的生成器,每個(gè)生成器元素都是一個(gè)元組,包含詞語(yǔ)、起始位置、結(jié)束位置和詞性(可選)。
D. 使用示例
import jieba sentence = "自然語(yǔ)言處理很有趣" # 默認(rèn)模式下的Tokenize接口 tokens = jieba.tokenize(sentence) for tk in tokens: word = tk[0] start_index = tk[1] end_index = tk[2] print(word, start_index, end_index) # 輸出: # 自然語(yǔ)言 0 4 # 處理 4 6 # 很 6 7 # 有趣 7 9 # 搜索引擎模式下的Tokenize接口 tokens = jieba.tokenize(sentence, mode='search') for tk in tokens: word = tk[0] start_index = tk[1] end_index = tk[2] print(word, start_index, end_index) # 輸出: # 自然 0 2 # 語(yǔ)言 2 4 # 處理 4 6 # 很 6 7 # 有趣 7 9
八. 總結(jié)
本教程介紹了Python中jieba庫(kù)的基本使用方法和常用功能,包括分詞基礎(chǔ)、自定義詞典、關(guān)鍵詞提取、詞性標(biāo)注、并行分詞和Tokenize接口。通過(guò)學(xué)習(xí)和掌握這些功能,你可以在中文文本處理中靈活應(yīng)用jieba庫(kù),實(shí)現(xiàn)有效的分詞、關(guān)鍵詞提取和詞性標(biāo)注等任務(wù)。
在使用jieba庫(kù)時(shí),你可以根據(jù)具體需求選擇不同的分詞模式,如精確模式、全模式和搜索引擎模式。還可以通過(guò)自定義詞典添加特定詞語(yǔ),提高分詞的準(zhǔn)確性。關(guān)鍵詞提取功能可以幫助你從文本中提取出重要的關(guān)鍵詞,有助于文本理解和信息提取。詞性標(biāo)注功能可以標(biāo)注每個(gè)詞語(yǔ)的詞性,對(duì)于一些需要深入分析的任務(wù)很有幫助。Tokenize接口可以提供詞語(yǔ)的起始位置和詞性信息,適用于一些特定的應(yīng)用場(chǎng)景。并行分詞功能可以充分利用多核CPU,提高分詞速度。
到此這篇關(guān)于Python中文文本處理利器jieba分詞庫(kù)使用的文章就介紹到這了,更多相關(guān)Python jieba分詞庫(kù)使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python作圖基礎(chǔ)之plt.contour實(shí)例詳解
contour和contourf都是畫(huà)三維等高線圖的,下面這篇文章主要給大家介紹了關(guān)于python作圖基礎(chǔ)操作之plt.contour的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06python小程序基于Jupyter實(shí)現(xiàn)天氣查詢的方法
這篇文章主要介紹了python小程序基于Jupyter實(shí)現(xiàn)天氣查詢的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片功能
這篇文章主要介紹了Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片,這里給大家介紹了pillow模塊的使用,需要的朋友可以參考下2019-12-12利用python-docx模塊寫(xiě)批量生日邀請(qǐng)函
這篇文章主要為大家詳細(xì)介紹了利用python-docx模塊批量生日邀請(qǐng)函,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08python中對(duì)二維列表中一維列表的調(diào)用方法
在本文里小編給大家整理的是關(guān)于python中對(duì)二維列表中一維列表的調(diào)用方法,正在學(xué)習(xí)的朋友們可以參考下。2020-06-06python基于pyDes庫(kù)實(shí)現(xiàn)des加密的方法
這篇文章主要介紹了python基于pyDes庫(kù)實(shí)現(xiàn)des加密的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pyDes庫(kù)的下載、安裝及使用pyDes庫(kù)進(jìn)行加密的相關(guān)操作技巧,需要的朋友可以參考下2017-04-04Centos7下源碼安裝Python3 及shell 腳本自動(dòng)安裝Python3的教程
這篇文章主要介紹了Centos7下源碼安裝Python3 shell 腳本自動(dòng)安裝Python3的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03使用python 獲取進(jìn)程pid號(hào)的方法
這篇文章主要介紹了使用python 獲取進(jìn)程pid號(hào)的方法,需要的朋友可以參考下2014-03-03Python爬蟲(chóng)進(jìn)階之Beautiful Soup庫(kù)詳解
這篇文章主要介紹了Python爬蟲(chóng)進(jìn)階之Beautiful Soup庫(kù)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲(chóng)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04