当前位置: 首页 > news >正文

中文分词与数据可视化02

jieba 库简介

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

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

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

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

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

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

核心函数与用法

1. 分词功能

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

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

    • 参数:

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

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

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

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

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

jieba.cut_for_search(sentence)
功能:搜索引擎模式,适合短词组合的细粒度分词。

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

2. 自定义词典

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

  • 词典文件格式:每行 词语 [词频] [词性](后两者可省略)。

深度学习 10 n
机器学习

jieba.add_word(word, freq=None, tag=None)
功能:动态添加单个词语。

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

jieba.del_word(word)
功能:删除词典中的某个词。

jieba.del_word("某个不需要的词")

jieba.suggest_freq(segment, tune=True)
功能:调整词语的词频,强制拆分或合并。

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

 

 


3. 关键词提取

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False)
功能:基于 TF-IDF 算法提取关键词。

  • 参数:

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

    • withWeight:是否返回权重值。

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)。

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

 

 


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

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

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

 


6. 其他实用函数

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

jieba.enable_parallel(4)  # 使用4个CPU核心
  • jieba.disable_parallel()
    功能:关闭并行分词。

 


jieba 的优势

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

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

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

 


适用场景

  1. 中文文本清洗与分词

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

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

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

 

http://www.xdnf.cn/news/475579.html

相关文章:

  • 接触感知 钳位电路分析
  • [模型部署] 3. 性能优化
  • 我的 PDF 工具箱:CodeBuddy 打造 PDFMagician 的全过程记录
  • Java 并发编程归纳总结(可重入锁 | JMM | synchronized 实现原理)
  • 【LeetCode 热题 100】动态规划 系列
  • 从 Vue3 回望 Vue2:生命周期的清晰化——从混乱钩子到明确时机
  • 2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)
  • git克隆github项目到本地的三种方式
  • Vue百日学习计划Day16-18天详细计划-Gemini版
  • matlab建立整车模型,求汽车的平顺性
  • 【Golang笔记01】Goland基础语法规则
  • Leaflet 自定义瓦片地图与 PHP 大图切图算法 解决大图没办法在浏览器显示的问题
  • 容器编排利器-k8s入门指南
  • 移植RTOS,发现任务栈溢出怎么办?
  • 哪个品牌的智能对讲机好用?推荐1款,能扛事更智能
  • MySQL基础
  • Jenkins教程
  • 2025云智算技术白皮书
  • 青少年编程与数学 02-019 Rust 编程基础 16课题、包、单元包及模块
  • rust语言,与c,go语言一样也是编译成二进制文件吗?
  • Claude Prompt-Caching 方案调研
  • 6 任务路由与负载均衡
  • 【MySQL】索引太多会怎样?
  • apisix透传客户端真实IP(real-ip插件)
  • 【计算机网络】HTTP/1.0,HTTP/1.1,HTTP/2,HTTP/3汇总讲解,清晰表格整理面试重点对比
  • 本地跑通vue-element-admin项目
  • 踩坑:uiautomatorviewer.bat 打不开
  • A Neural Approach to Blind Motion Deblurring论文阅读
  • 如何安装cuda版本的pytorch
  • matlab与python问题解析