目錄
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)