簡介
jieba是一個強大的中文分詞工具,用於將中文文字切分成單個詞語。
-
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官網 -
支援繁體分詞
-
支援自定義詞典
-
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 (詞頻理解)