jieba(结巴分词)是一个流行的中文分词工具,具有高效、准确和易用的特点,广泛应用于中文文本处理、自然语言处理等领域。
1. 基本介绍 #
主要特点 #
- 支持三种分词模式:
- 精确模式(默认)
- 全模式
- 搜索引擎模式
- 支持繁体分词
- 支持自定义词典
- 词性标注功能
- 并行分词(提高速度)
- 高性能(C++实现核心算法)
安装方法 #
pip install jieba2. 基本功能 #
2.1 分词功能 #
精确模式(默认) #
import jieba
text = "我爱自然语言处理技术"
seg_list = jieba.cut(text) # 默认是精确模式
print("/".join(seg_list)) # 我/爱/自然语言/处理/技术全模式 #
seg_list = jieba.cut(text, cut_all=True)
print("/".join(seg_list)) # 我/爱/自然/自然语言/语言/处理/技术搜索引擎模式 #
seg_list = jieba.cut_for_search(text)
print("/".join(seg_list)) # 我/爱/自然/语言/自然语言/处理/技术2.2 词性标注 #
import jieba.posseg as pseg
words = pseg.cut(text)
for word, flag in words:
print(f"{word}({flag})", end=" ")
# 我(r) 爱(v) 自然语言(l) 处理(vn) 技术(n)常用词性标记:
n- 名词v- 动词a- 形容词r- 代词m- 数词t- 时间词
2.3 关键词提取 #
import jieba.analyse
text = "机器学习是人工智能的重要分支,深度学习是机器学习的一个子集"
# TF-IDF算法
keywords = jieba.analyse.extract_tags(text, topK=3)
print(keywords) # ['机器学习', '深度', '学习']
# TextRank算法
keywords = jieba.analyse.textrank(text, topK=3)
print(keywords) # ['学习', '机器', '深度']3. 高级功能 #
3.1 自定义词典 #
添加单个词 #
jieba.add_word("自然语言处理") # 添加新词
jieba.suggest_freq("自然语言处理", True) # 调整词频加载词典文件 #
词典文件格式(每行:词语 词频 词性):
云计算 5 n
区块链 3 n加载方法:
jieba.load_userdict("user_dict.txt")3.2 并行分词 #
jieba.enable_parallel(4) # 开启并行分词,参数为并行进程数3.3 返回词语在原文中的位置 #
result = jieba.tokenize(text)
for tk in result:
print(f"word: {tk[0]}, start: {tk[1]}, end: {tk[2]}")4. 应用示例 #
4.1 文本分析 #
def analyze_text(text):
# 分词
words = jieba.cut(text)
word_count = len(list(words))
# 关键词提取
keywords = jieba.analyse.extract_tags(text, topK=5)
# 词性统计
pos_dict = {}
for word, pos in pseg.cut(text):
pos_dict[pos] = pos_dict.get(pos, 0) + 1
return {
"word_count": word_count,
"keywords": keywords,
"pos_stats": pos_dict
}4.2 结合其他库使用(如pandas) #
import pandas as pd
df = pd.DataFrame({"text": ["文本1内容", "文本2内容"]})
df["segmented"] = df["text"].apply(lambda x: "/".join(jieba.cut(x)))5. 性能优化建议 #
- 使用并行分词:对于大文本,开启并行分词
- 预加载词典:在程序初始化时加载所有需要的词典
- 缓存分词结果:对相同文本避免重复分词
- 调整词典:根据领域特点优化词典
6. 常见问题解决 #
分词不准确:
- 添加领域词汇到自定义词典
- 调整词频
jieba.suggest_freq()
性能问题:
- 开启并行模式
- 使用
jieba.cut的生成器版本而非jieba.lcut
内存占用高:
- 避免同时处理极大文本
- 使用流式处理大文件
7. 与其他工具对比 #
| 特性 | jieba | SnowNLP | THULAC | LTP |
|---|---|---|---|---|
| 分词准确率 | 高 | 中 | 高 | 高 |
| 速度 | 快 | 慢 | 中 | 中 |
| 自定义词典 | 支持 | 不支持 | 支持 | 支持 |
| 词性标注 | 支持 | 支持 | 支持 | 支持 |
| 语言 | Python | Python | C++ | C++ |
jieba因其易用性和良好的平衡性成为最受欢迎的中文分词工具之一,特别适合Python开发者快速实现中文文本处理功能。