python jieba庫,句子分詞

二月雪發表於2024-08-25

簡介

jieba是一個強大的中文分詞工具,用於將中文文字切分成單個詞語。

  1. jieba庫支援四種分詞模式:
    -- 精確模式,試圖將句子最精確地切開,適合文字分析;
    -- 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
    -- 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
    -- 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官網

  2. 支援繁體分詞

  3. 支援自定義詞典

  4. MIT 授權協議

函式方法

1、安裝jieba庫

pip install jieba

注:使用paddle模式下的分詞和詞性標註功能,需要安裝 paddlepaddle-tiny 庫:pip install paddlepaddle-tiny

2、分詞

方法
jieba.cut(str, cut_all=False, HMM=True, use_paddle=False)
jieba.lcut(str, cut_all=False, HMM=True, use_paddle=False)
jieba.cut_for_search(str, HMM=True)
jieba.lcut_for_search(str, HMM=True)
str        需要進行切割的字串,待分詞的字串可以是 unicode 或 UTF-8 字串、GBK 字串
cut_all    引數用來控制是否採用全模式,預設採用“精確模型”
HMM        引數用來控制是否使用 HMM 模型;
use_paddle 引數用來控制是否使用paddle模式下的分詞模式,paddle模式採用延遲載入方式,透過enable_paddle介面安裝paddlepaddle-tiny,並且需要 import paddlepaddle-tiny


分詞返回值型別:
-- cut 和 cut_for_search 返回值型別都是一個迭代器generator(使用for可以依次遍歷出來)
-- lcut 和 lcut_for_search 返回值型別都是一個列表
注:
-- 待分詞的字串str:unicode 或 UTF-8 字串、GBK 字串。注意:不建議直接輸入 GBK 字串,可能無法預料地錯誤解碼成 UTF-8
-- cut_for_search 方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細
  • jieba.Tokenizer(dictionary=DEFAULT_DICT)
    -- 新建自定義分詞器,可用於同時使用不同詞典。jieba.dt 為預設分詞器,所有全域性分詞相關函式都是該分詞器的對映。

3、新增自定義詞典

  • jieba.load_userdict(file_name) -file_name為自定義詞典的路徑,詞典格式和dict.txt一樣,一個詞佔一行;每一行分三部分:詞語,詞頻(可省略),詞性(可省略),用空格隔開,順序不可顛倒,(頻率越高,成詞的機率就越大)

示例:/data/file/test.txt

計算機 5 n
北京 3 ns
天安門 2 ns
好用 15
天氣 2
陽光 3
陽光明媚 5 nz
李明 2 nr
那天
略

4、paddle模式詞性標註對應表:

標籤 含義 標籤 含義 標籤 含義 標籤 含義
n 普通名詞 f 方位名詞 s 處所名詞 t 時間
nr 人名 ns 地名 nt 機構名 nw 作品名
nz 其他專名 v 普通動詞 vd 動副詞 vn 名動詞
a 形容詞 ad 副形詞 an 名形詞 d 副詞
m 數量詞 q 量詞 r 代詞 p 介詞
c 連詞 u 助詞 xc 其他虛詞 w 標點符號
PER 人名 LOC 地名 ORG 機構名 TIME 時間

5、操作詞典

方法 說明
jieba.add_word(word, freq=None, tag=None) 新增新詞到詞典庫中
jieba.del_word(word) 刪除詞典庫中的詞
jieba.suggest_freq(segment, tune=True) 調節單個詞語的詞頻,使其能(或不能)被分出來

簡單程式碼示例:

import jieba

file_name = "/data/file/test.txt"  # 自定義的詞典庫
jieba.load_userdict(file_name)  # jieba新增詞典

_str = "今天天氣明媚,可以和李明一起去打球"
result = jieba.cut()

word_list = [_ for _ in resultt]

print(word_list)

分詞在NLP中的應用

中文分詞是自然語言處理(NLP)中的重要步驟,常見應用包括:

  • 文字分類:將文字切分成單詞,用於構建文字的特徵向量。
  • 資訊檢索:將查詢詞切分成單詞,用於在文字庫中進行搜尋。
  • 機器翻譯:將源語言切分成單詞,用於翻譯成目標語言。

參考文件:

github fxsjy/jieba (很詳細,推薦)
fxsjy/jieba #issues 14 (詞頻理解)

相關文章