Python进行中文分词

1. jieba库概述

jieba("结巴")是Python中最流行的中文分词库,采用基于前缀词典实现的高效分词算法,支持多种分词模式,是中文自然语言处理(NLP)的基础工具。
核心特性

  • 精确模式:试图将句子最精确地切开,适合文本分析
  • 全模式:把句子中所有可以成词的词语都扫描出来,速度非常快但有冗余
  • 搜索引擎模式:在精确模式基础上,对长词再次切分,提高召回率
  • 支持自定义词典:可添加专业领域词汇提高分词准确度
  • 支持词性标注:可标注分词结果的词性
  • 支持并行分词:利用多核CPU加速分词处理

2. jieba.cut函数

python 复制代码
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. 使用示例

python 复制代码
# 安装
pip install jieba
python 复制代码
import jieba
from collections import Counter


text = "本周进行自然语言处理系列文档示例,示例围绕自然语言处理程序。"
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()关闭并行分词