Python 中的 jieba 庫
阿新 • • 發佈:2022-03-25
目錄
jieba庫
一、 簡介
1、 是什麼
(1)jieba是優秀的中文分詞第三方庫
- 中文文字需要通過分詞獲得單個的詞語
- jieba是優秀的中文分詞第三方庫,需要額外安裝
- jieba庫提供三種分詞模式,最簡單隻需掌握一個函式
(2)jieba分詞的原理
- jieba分詞依靠中文詞庫
- 利用一箇中文詞庫,確定漢字之間的關聯概率
- 漢字間概率大的組成片語,形成分詞結果
- 除了分詞,使用者還可以新增自定義的片語
2、 安裝
pip install jieba
匯入
import jieba
官方文件【https://github.com/fxsjy/jieba】
二、 基本使用
1、 三種模式
精確模式:
-
就是把一段文字精確地切分成若干個中文單詞,若干個中文單詞之間經過組合,就精確地還原之前的文字。其中不存在冗餘單詞
-
str = "你好呀,我叫李華!多多關照!" print(jieba.lcut(str))
全模式:
-
將一段文字中所有可能的詞語都掃描出來,可能有一段文字,它可以切分成不同的模式,或者有不同的角度來切分變成不同的詞語,在全模式下,jieba庫會將各種不同的組合都挖掘出來。分詞後的資訊組合起來會有冗餘,不再是原來的文字
-
str = "你好呀,我叫李華!多多關照!" print(jieba.lcut(str, cut_all=True))
搜尋引擎模式:
-
在精確模式的基礎上,對發現的那些長的詞語,我們會對它再次切分,進而適合搜尋引擎對短詞語的索引和搜尋。也有冗餘
-
str = "你好呀,我叫李華!多多關照!" print(jieba.lcut_for_search(str))
2、 使用語法
2.1 對片語的基本操作
-
新增
-
str = "你好呀,我叫李華!多多關照!" jieba.add_word("你") print(jieba.lcut(str))
-
-
刪除
-
str = "你好呀,我叫李華!多多關照!" jieba.del_word("李華") print(jieba.lcut(str))
-
-
載入自定義詞典
-
str = "你好呀,我叫李華!多多關照!" jieba.load_userdict("./dict.txt") # 檔案編碼必須為 utf-8 print(jieba.lcut(str))
-
-
調整詞出現的頻率
-
str = "你好呀,我叫李華!多多關照!" jieba.suggest_freq(("李", "華"), True) print(jieba.lcut(str))
-
2.2 關鍵字提取
TFIDF演算法
import jieba.analyse # 導包
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,
allowPOS=())
jieba.analyse.TFIDF(idf_path=None) # 建立一個新的 TFIDF 例項,idf_path是指指定 IDF 頻率檔案的路徑
引數:
- sentence:要提取的文字
- topK:返回多少個具有最高TF/IDF權重的關鍵字。預設值為 20
- withWeight:是否返回關鍵字的TF/IDF權重。預設為假
- allowPOS:過濾包含POS(詞性)的單詞。空無過濾,可以選擇
['ns', 'n', 'vn', 'v','nr']
TextRank演算法
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) # 有預設詞性
jieba.analyse.TextRank() # 新建自定義 TextRank 例項
2.3 詞性標註
jieba.posseg.POSTokenizer(tokenizer=None)
新建自定義分詞器,tokenizer 引數可指定內部使用的 jieba.Tokenizer 分詞器
jieba.posseg.dt 為預設詞性標註分詞器
import jieba.posseg
str = "你好呀,我叫李華!多多關照!"
pt = jieba.posseg.POSTokenizer()
print(pt.lcut(str)) # 得到 pair鍵值對,使用遍歷取值
# print(jieba.posseg.cut(str)) # 作用一樣
for i, k in ps.lcut(str):
print(i, k)
2.4 返回詞語在原文的起止位置
jieba.tokenize(arg, mode=None)
mode有搜尋模式(search)和預設模式(default)
import jieba
str = "你好呀,我叫李華!多多關照!"
g = jieba.tokenize(str, mode="search") # 生成器
for i in g:
print(i)