1. 程式人生 > 其它 >Python 中的 jieba 庫

Python 中的 jieba 庫

目錄

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)