Python中文文本處理利器jieba分詞庫使用
一. 介紹
A. 什么是jieba庫
- jieba庫是一款開源的中文分詞工具,能夠將中文文本切分成詞語。
B. jieba庫的特點和優(yōu)勢
- 支持四種分詞模式:精確模式、全模式、搜索引擎模式和paddle模式。
- 提供自定義詞典功能,可以添加、刪除詞語。
- 支持關鍵詞提取和詞性標注。
- 提供Tokenize接口,可以獲取每個詞語的起始位置和詞性。
- 支持并行分詞,提高分詞速度。
C. 安裝jieba庫
在命令行中使用pip安裝jieba庫:
pip install jieba
二. 分詞基礎
A. 字典加載
jieba庫內(nèi)置了一個默認的詞典,可以直接使用。
也可以使用自定義的詞典,通過
jieba.load_userdict(file_path)加載。
B. 分詞模式
- 精確模式
- 精確模式是將文本按照最大概率進行切分,效果較好。
- 使用方法:
jieba.cut(sentence),返回一個可迭代的分詞結果。
- 全模式
- 全模式將文本中所有可能的詞語都切分出來,可能存在冗余。
- 使用方法:
jieba.cut(sentence, cut_all=True),返回一個可迭代的分詞結果。
- 搜索引擎模式
- 搜索引擎模式根據(jù)詞語的位置進行切分,適合搜索引擎分詞。
- 使用方法:
jieba.cut_for_search(sentence),返回一個可迭代的分詞結果。
- paddle模式
- 利用PaddlePaddle深度學習框架,訓練序列標注(雙向GRU)網(wǎng)絡模型實現(xiàn)分詞。同時支持詞性標注。paddle模式使用需安裝paddlepaddle-tiny,
pip install paddlepaddle-tiny==1.6.1。目前paddle模式支持jieba v0.40及以上版本。jieba v0.40以下版本,請升級jieba,pip install jieba --upgrade。
- 利用PaddlePaddle深度學習框架,訓練序列標注(雙向GRU)網(wǎng)絡模型實現(xiàn)分詞。同時支持詞性標注。paddle模式使用需安裝paddlepaddle-tiny,
C. 使用示例
# encoding=utf-8
import jieba
# 啟動paddle模式。 0.40版之后開始支持,早期版本不支持
jieba.enable_paddle()
strs=["我來到北京清華大學","乒乓球拍賣完了","中國科學技術大學"]
for str in strs:
seg_list = jieba.cut(str,use_paddle=True) # 使用paddle模式
print("Paddle Mode: " + '/'.join(list(seg_list)))
# 全模式
seg_list = jieba.cut("我來到北京清華大學", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list))
# 精確模式
seg_list = jieba.cut("我來到北京清華大學", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))
# 默認是精確模式
seg_list = jieba.cut("他來到了網(wǎng)易杭研大廈")
print(", ".join(seg_list))
# 搜索引擎模式
seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國科學院計算所,后在日本京都大學深造")
print(", ".join(seg_list))
輸出:
【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學
【精確模式】: 我/ 來到/ 北京/ 清華大學
【新詞識別】:他, 來到, 了, 網(wǎng)易, 杭研, 大廈 (此處,“杭研”并沒有在詞典中,但是也被Viterbi算法識別出來了)
【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造
三. 自定義詞典
A. 添加詞語
- 使用
add_word(word, freq=None, tag=None)和del_word(word)可在程序中動態(tài)修改詞典。
B. 載入自定義詞典
- 如果有一個包含自定義詞語的文件,可以使用
jieba.load_userdict(file_path)方法加載該文件,并將其中的詞語加入到詞典中。
C. 使用示例
import jieba
# 添加單個詞語到詞典中
jieba.add_word("自然語言處理")
# 載入自定義詞典文件
jieba.load_userdict("custom_dict.txt")
sentence = "我愛自然語言處理"
# 分詞結果包含自定義詞語
seg_list = jieba.cut(sentence)
print("/".join(seg_list)) # 輸出: 我/愛/自然語言處理
四. 關鍵詞提取
A. 基于TF-IDF算法的關鍵詞提取
- jieba庫提供了基于TF-IDF算法的關鍵詞提取方法
jieba.extract_tags(sentence, topK=10),用于從文本中提取關鍵詞。 topK參數(shù)指定返回的關鍵詞數(shù)量,默認為10。
B. 基于TextRank算法的關鍵詞提取
- jieba庫還提供了基于TextRank算法的關鍵詞提取方法
jieba.textrank(sentence, topK=10),也可以用于從文本中提取關鍵詞。 topK參數(shù)指定返回的關鍵詞數(shù)量,默認為10。
C. 使用示例
import jieba sentence = "自然語言處理是人工智能領域的重要技術之一" # 基于TF-IDF算法的關鍵詞提取 keywords = jieba.extract_tags(sentence, topK=5) print(keywords) # 輸出: ['自然語言處理', '人工智能', '技術', '領域', '重要'] # 基于TextRank算法的關鍵詞提取 keywords = jieba.textrank(sentence, topK=5) print(keywords) # 輸出: ['技術', '重要', '領域', '自然語言處理', '人工智能']
五. 詞性標注
A. 詞性標注集
- jieba庫支持對分詞結果進行詞性標注,使用的是jieba庫內(nèi)置的詞性標注集。
B. 使用示例
import jieba
import jieba.posseg as pseg
# 分詞并進行詞性標注
words = pseg.cut("自然語言處理很有趣") #jieba默認模式
jieba.enable_paddle() #啟動paddle模式。 0.40版之后開始支持,早期版本不支持
words = pseg.cut("我愛北京天安門",use_paddle=True) #paddle模式
for word, flag in words:
print(word, flag)
# 輸出:
# 自然語言 l
# 處理 v
# 很 d
# 有趣 a
paddle模式詞性標注對應表如下:
paddle模式詞性和專名類別標簽集合如下表,其中詞性標簽 24 個(小寫字母),專名類別標簽 4 個(大寫字母)。
| 標簽 | 含義 | 標簽 | 含義 | 標簽 | 含義 | 標簽 | 含義 |
|---|---|---|---|---|---|---|---|
| n | 普通名詞 | f | 方位名詞 | s | 處所名詞 | t | 時間 |
| nr | 人名 | ns | 地名 | nt | 機構名 | nw | 作品名 |
| nz | 其他專名 | v | 普通動詞 | vd | 動副詞 | vn | 名動詞 |
| a | 形容詞 | ad | 副形詞 | an | 名形詞 | d | 副詞 |
| m | 數(shù)量詞 | q | 量詞 | r | 代詞 | p | 介詞 |
| c | 連詞 | u | 助詞 | xc | 其他虛詞 | w | 標點符號 |
| PER | 人名 | LOC | 地名 | ORG | 機構名 | TIME | 時間 |
六. 并行分詞
A. 并行分詞的優(yōu)勢
- jieba庫支持并行分詞,能夠利用多核CPU提高分詞速度。
- 并行分詞使用的是基于python多進程的方式,需要在分詞前調用
jieba.enable_parallel()啟用并行分詞,之后可以正常使用分詞功能。
B. 并行分詞使用示例
import jieba
jieba.enable_parallel(4) # 啟用并行分詞,使用4個進程
sentence = "自然語言處理很有趣"
# 分詞結果
seg_list = jieba.cut(sentence)
print("/".join(seg_list))
# 輸出: 自然/語言/處理/很/有趣
jieba.disable_parallel() # 關閉并行分詞
七. Tokenize接口
A. 默認模式
- jieba庫提供了Tokenize接口
jieba.tokenize(sentence, mode='default'),用于獲取每個詞語的起始位置和詞性。 - 默認模式下,返回結果包含詞語、詞語在文本中的起始位置和結束位置。
B. 搜索引擎模式
- 在Tokenize接口中,可以選擇搜索引擎模式,通過
mode='search'參數(shù)指定。 - 搜索引擎模式下,返回結果還包含分詞的偏移量,適用于搜索引擎等應用場景。
C. 返回結果格式
- Tokenize接口返回的結果是一個可迭代的生成器,每個生成器元素都是一個元組,包含詞語、起始位置、結束位置和詞性(可選)。
D. 使用示例
import jieba
sentence = "自然語言處理很有趣"
# 默認模式下的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)
# 輸出:
# 自然語言 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
# 語言 2 4
# 處理 4 6
# 很 6 7
# 有趣 7 9
八. 總結
本教程介紹了Python中jieba庫的基本使用方法和常用功能,包括分詞基礎、自定義詞典、關鍵詞提取、詞性標注、并行分詞和Tokenize接口。通過學習和掌握這些功能,你可以在中文文本處理中靈活應用jieba庫,實現(xiàn)有效的分詞、關鍵詞提取和詞性標注等任務。
在使用jieba庫時,你可以根據(jù)具體需求選擇不同的分詞模式,如精確模式、全模式和搜索引擎模式。還可以通過自定義詞典添加特定詞語,提高分詞的準確性。關鍵詞提取功能可以幫助你從文本中提取出重要的關鍵詞,有助于文本理解和信息提取。詞性標注功能可以標注每個詞語的詞性,對于一些需要深入分析的任務很有幫助。Tokenize接口可以提供詞語的起始位置和詞性信息,適用于一些特定的應用場景。并行分詞功能可以充分利用多核CPU,提高分詞速度。
到此這篇關于Python中文文本處理利器jieba分詞庫使用的文章就介紹到這了,更多相關Python jieba分詞庫使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python內(nèi)置函數(shù)之staticmethod函數(shù)使用及說明
這篇文章主要介紹了Python內(nèi)置函數(shù)之staticmethod函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-07-07
python中利用numpy.array()實現(xiàn)倆個數(shù)值列表的對應相加方法
今天小編就為大家分享一篇python中利用numpy.array()實現(xiàn)倆個數(shù)值列表的對應相加方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python裝飾器限制函數(shù)運行時間超時則退出執(zhí)行
今天小編就為大家分享一篇關于Python裝飾器限制函數(shù)運行時間超時則退出執(zhí)行,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04
Tensorflow:轉置函數(shù) transpose的使用詳解
今天小編就為大家分享一篇Tensorflow:轉置函數(shù) transpose的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python+drawpad實現(xiàn)CPU監(jiān)控小程序
這篇文章主要為大家詳細介紹了如何利用Python+drawpad實現(xiàn)一個簡單的CPU監(jiān)控小程序,文中示例代碼講解詳細,感興趣的小伙伴可以嘗試一下2022-08-08
python?DataFrame數(shù)據(jù)分組統(tǒng)計groupby()函數(shù)的使用
在python的DataFrame中對數(shù)據(jù)進行分組統(tǒng)計主要使用groupby()函數(shù),本文主要介紹了python?DataFrame數(shù)據(jù)分組統(tǒng)計groupby()函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下2022-03-03

