中文分词与数据可视化02

jieba 库简介

jieba(结巴分词)是一个高效的中文分词工具,广泛用于中文自然语言处理(NLP)任务。它支持以下功能:

  • 分词:将句子切分为独立的词语。

  • 自定义词典:添加专业词汇或新词,提升分词准确性。

  • 关键词提取:基于 TF-IDF 或 TextRank 算法提取文本关键词。

  • 词性标注:识别词语的词性(如名词、动词)。

  • 并行分词:加速大规模文本处理。

核心函数与用法

1. 分词功能

  • jieba.cut(sentence, cut_all=False, HMM=True)

    • 功能:对句子进行分词,返回生成器(需转换为列表使用)。

    • 参数:

      • cut_all:是否启用全模式(默认 False,即精确模式)。

      • HMM:是否使用隐马尔可夫模型识别未登录词。

python 复制代码
import jieba
text = "自然语言处理很有趣"

# 精确模式(默认)
words = jieba.cut(text)
print("/".join(words))  # 输出:自然语言/处理/很/有趣

# 全模式(所有可能组合)
words = jieba.cut(text, cut_all=True)
print(list(words))  # 输出:['自然', '自然语言', '语言', '处理', '很', '有趣']

jieba.lcut()

功能与 jieba.cut() 相同,但直接返回列表(更常用):

python 复制代码
words = jieba.lcut("我爱Python编程")
print(words)  # 输出:['我', '爱', 'Python', '编程']

jieba.cut_for_search(sentence)

功能:搜索引擎模式,适合短词组合的细粒度分词。

python 复制代码
words = jieba.cut_for_search("自然语言处理技术")
print("/".join(words))  # 输出:自然/语言/处理/技术/自然语言/语言处理

2. 自定义词典

jieba.load_userdict(file_path)

功能:加载自定义词典文件(.txt 格式),支持添加新词、调整词频。

  • 词典文件格式:每行 词语 [词频] [词性](后两者可省略)。
python 复制代码
深度学习 10 n
机器学习

jieba.add_word(word, freq=None, tag=None)

功能:动态添加单个词语。

python 复制代码
jieba.add_word("区块链", freq=20)  # 添加新词并设置词频

jieba.del_word(word)

功能:删除词典中的某个词。

python 复制代码
jieba.del_word("某个不需要的词")

jieba.suggest_freq(segment, tune=True)

功能:调整词语的词频,强制拆分或合并。

python 复制代码
# 强制将 "自然语言" 拆分为 "自然" 和 "语言"
jieba.suggest_freq(("自然", "语言"), tune=True)

3. 关键词提取

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False)

功能:基于 TF-IDF 算法提取关键词。

  • 参数:

    • topK:返回前 N 个关键词。

    • withWeight:是否返回权重值。

python 复制代码
import jieba.analyse
text = "机器学习需要大量数据和算力支持。"
keywords = jieba.analyse.extract_tags(text, topK=3)
print(keywords)  # 输出:['机器学习', '算力', '数据']
  • jieba.analyse.textrank()

    功能:基于 TextRank 算法提取关键词,用法类似 extract_tags


4. 词性标注

jieba.posseg.cut(sentence)

功能:分词并标注词性(需导入 jieba.posseg)。

python 复制代码
import jieba.posseg as pseg
words = pseg.cut("我爱自然语言处理")
for word, flag in words:
    print(f"{word}({flag})", end=" ")
# 输出:我(r) 爱(v) 自然语言(nz) 处理(vn)

5. 停用词过滤(需手动实现)

虽然 jieba 不内置停用词表,但可结合自定义列表过滤:

python 复制代码
text = "这是一段需要过滤停用词的例子。"
stopwords = ["的", "是", "一段", "需要", "。"]
words = [word for word in jieba.lcut(text) if word not in stopwords]
print(words)  # 输出:['过滤', '停用词', '例子']

6. 其他实用函数

jieba.enable_parallel()

功能:启用并行分词(需多核 CPU),加速大规模文本处理。

python 复制代码
jieba.enable_parallel(4)  # 使用4个CPU核心
  • jieba.disable_parallel()

    功能:关闭并行分词。


jieba 的优势

  • 轻量高效:适合处理大规模中文文本。

  • 灵活扩展:支持自定义词典和算法调整。

  • 多场景适用:从简单分词到复杂 NLP 任务(如关键词提取、词性标注)。


适用场景

  1. 中文文本清洗与分词

  2. 关键词提取(生成标签、摘要)

  3. 词频统计(生成词云)

  4. 结合其他库(如 wordcloud, gensim)实现高级分析。

相关推荐
无垠的广袤8 小时前
ChatECNU 大语言模型与 PicoClaw 部署
人工智能·语言模型·自然语言处理·嵌入式·树莓派
小鸡吃米…9 小时前
自然语言处理的应用
人工智能·自然语言处理·nlp
咚咚王者9 小时前
人工智能之语言领域 自然语言处理 第六章 情感分析
人工智能·自然语言处理·easyui
小鸡吃米…10 小时前
自然语言处理 —— 信息检索
人工智能·自然语言处理·nlp
咚咚王者13 小时前
人工智能之语言领域 自然语言处理 第五章 文本分类
人工智能·自然语言处理·分类
xier_ran13 小时前
【第一周】论文精读:Query2doc: Query Expansion with Large Language Models
人工智能·语言模型·自然语言处理
总裁余(余登武)13 小时前
电力NLP:指令票规范识别
自然语言处理·电气
xier_ran13 小时前
【第一周】论文精读:Lost in the Middle: How Language Models Use Long Contexts
人工智能·语言模型·自然语言处理·agent·rag
数字供应链安全产品选型13 小时前
面向AI风险治理,悬镜原创多模态AIST新品问境AIST正式发布,提升AI自身安全!
人工智能·自然语言处理
AI人工智能+15 小时前
基于深度学习的营业执照识别系统,通过图像预处理、OCR识别和NLP解析三大技术模块,实现对复杂版式营业执照的高效精准识别
深度学习·自然语言处理·营业执照识别