python學習筆記——jieba庫入門

誰該妥協發表於2020-09-28

一、查詢官方文件

1.百度

https://pypi.org/project/jieba/ 

2.完整文件:https://github.com/fxsjy/jieba

 

二、介紹

1.簡介

 jieba(中文意思是“結巴”)中文文字切分:打造成最好的Python中文分詞模組。

2.特點

  • 支援四種分詞模式:
    • 精確模式,試圖將句子最精確地切開,適合文字分析;
    • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
    • 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
    • paddle模式,利用PaddlePaddle深度學習框架,訓練序列標註(雙向GRU)網路模型實現分詞。同時支援詞性標註。paddle模式使用需安裝paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。目前paddle模式支援jieba v0.40及以上版本。jieba v0.40以下版本,請升級jieba,pip install jieba --upgrade 。PaddlePaddle官網
  • 支援繁體分詞
  • 支援自定義詞典
  • MIT 授權協議

 

三、主要功能

1.分詞

1.1前三種分詞模式案例

import jieba

string = '中華人民共和國是一個偉大的國家'

#精確模式
aa = jieba.lcut(string)  # 等效於:jieba.lcut(string, cut_all=False)是否分割出所有情況=否
print(aa)
#全模式
aa = jieba.lcut(string, cut_all=True)  # 是否分割出所有情況=是
print(aa)
#搜尋引擎模式(在精確模式的基礎上,對長詞再次切分)
aa = jieba.lcut_for_search(string)
print(aa)

結果:


['中華人民共和國', '是', '一個', '偉大', '的', '國家']

['中華', '中華人民', '中華人民共和國', '華人', '人民', '人民共和國', '共和', '共和國', '國是', '一個', '偉大', '的', '國家']

['中華', '華人', '人民', '共和', '共和國', '中華人民共和國', '是', '一個', '偉大', '的', '國家']

1.2相似方法

原理:檢視原始碼可知, lcut()是cut()放進list裡返回的資料

 

2.新增自定義詞典(提高分詞準確率

開發者可以指定自己自定義的詞典以便包含 jieba 詞庫裡沒有的詞。雖然 jieba 有新詞識別能力,但是自行新增新詞可以保證更高的正確率

2.1 一個精確模式案例

import jieba

string = '小明白參加雲端計算專案研究'
aa = jieba.lcut(string)
print(aa)

結果:

['小', '明白', '參加', '雲', '計算', '專案', '研究']

發現:“小明白”這個人名分的不準確,“雲端計算”這個名詞分的也不準確。

2.2 解決方案1:

使用 jieba.add_word(word)新增詞庫沒有的詞
import jieba

string = '小明白參加雲端計算專案研究'
jieba.add_word("雲端計算")
jieba.add_word("小明白")
aa = jieba.lcut(string)
print(aa)

結果:

['小明白', '參加', '雲端計算', '專案', '研究']

2.2 解決方案2(載入詞典檔案):

jieba.load_userdict(file_name) # file_name 為檔案類物件或自定義詞典的路徑

先建一個XX.txt檔案

import jieba

string = '小明白參加雲端計算專案研究'
jieba.load_userdict('dict.txt')
aa = jieba.lcut(string)
print(aa)

結果:

['小明白', '參加', '雲端計算', '專案', '研究']

3.關鍵詞提取

import jieba.analyse

  • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
    • sentence 為待提取的文字
    • topK 為返回幾個 TF/IDF 權重最大的關鍵詞,預設值為 20
    • withWeight 為是否一併返回關鍵詞權重值,預設值為 False
    • allowPOS 僅包括指定詞性的詞,預設值為空,即不篩選
  • jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 例項,idf_path 為 IDF 頻率檔案
import jieba.analyse

string = '小明白參加雲端計算專案研究'
jieba.add_word("雲端計算")
jieba.add_word("小明白")
new_words = jieba.analyse.extract_tags(string, topK=3)
print(new_words)

結果:

['小明白', '雲端計算', '參加']

 

 

 

相關文章