1. jieba庫概述
jieba(“結巴”)是Python中最流行的中文分詞庫,采用基于前綴詞典實現的高效分詞算法,支持多種分詞模式,是中文自然語言處理(NLP)的基礎工具。
核心特性
- 精確模式:試圖將句子最精確地切開,適合文本分析
- 全模式:把句子中所有可以成詞的詞語都掃描出來,速度非常快但有冗余
- 搜索引擎模式:在精確模式基礎上,對長詞再次切分,提高召回率
- 支持自定義詞典:可添加專業領域詞匯提高分詞準確度
- 支持詞性標注:可標注分詞結果的詞性
- 支持并行分詞:利用多核CPU加速分詞處理
2. jieba.cut函數
import jieba
seg_list = jieba.cut("這是一個測試文本", cut_all=False)
參數說明
參數 | 類型 | 默認值 | 說明 |
---|---|---|---|
sentence | str | 必需 | 待分詞的字符串 |
cut_all | bool | False | 是否采用全模式 |
HMM | bool | True | 是否使用HMM模型 |
use_paddle | bool | False | 是否使用PaddlePaddle模型(需額外安裝) |
返回值
關鍵點:jieba.cut()返回的是生成器(Generator),不是列表或元組。
這意味著:生成器只能被迭代一次,之后就會耗盡,無法直接索引(如seg_list[0]會報錯),無法直接獲取長度(如len(seg_list)會報錯),內存效率高,適合處理大文本,但需要特別注意使用方式。
3. 使用示例
# 安裝
pip install jieba
import jieba
from collections import Countertext = "本周進行自然語言處理系列文檔示例,示例圍繞自然語言處理程序。"
words = jieba.cut(text)words_list = list(words)
words_count = Counter(words_list)
words_filter = [word for word, count in words_count.items() if count > 1]print("分詞結果:", words_list)
print("詞頻:", words_count)
print("高頻詞匯:", words_filter)
4. 其他常用函數
jieba.lcut(sentence, cut_all=False, HMM=True, use_paddle=False)
功能:與cut()功能相同,但直接返回列表而非生成器,解決了生成器只能迭代一次的問題,便于多次使用分詞結果。
jieba.cut_for_search(sentence, HMM=True)
功能:搜索引擎模式分詞,對長詞再次切分以提高召回率,在精確模式基礎上,對未在詞典中找到的長詞進行二次切分
jieba.posseg.cut(sentence, HMM=True)
功能:提供詞性標注功能,基于精確模式分詞并標注詞性
jieba.add_word(word, freq=None, tag=None)
功能:向分詞詞典中添加新詞
參數:
word:要添加的詞語;
freq:詞頻(可選),用于調整詞語切分優先級;
tag:詞性(可選)
jieba.load_userdict(file_name)
功能:加載自定義詞典文件
文件格式:每行一個詞,格式為:詞語 詞頻 詞性(詞頻和詞性可選)
jieba.tokenize(sentence, mode=‘default’, HMM=True)
功能:返回詞語在原文中的位置信息
參數:mode:‘default’(精確模式)或’search’(搜索引擎模式)
返回值:元組列表,每個元組包含(詞語, 起始位置, 結束位置)
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
功能:基于TF-IDF算法提取關鍵詞
參數:
topK:返回關鍵詞數量
withWeight:是否返回權重值
allowPOS:僅提取指定詞性的詞
jieba.enable_parallel(num)
功能:利用多核CPU加速分詞處理,啟用并行分詞,參數為并行進程數,程序結束可以調用jieba.disable_parallel()關閉并行分詞