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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM