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

jieba 库

jieba(中文意思是“结巴”)库是 Python 中最流行、最强大的中文分词工具。

它的核心用途就是将连续的中文文本,切分成一个个独立的、有意义的词语。


核心用途:中文分词

这是 jieba 最根本的用途。由于中文句子中的词与词之间没有像英文那样的空格分隔,计算机在处理中文文本之前,必须先进行分词。

示例:

  • 输入句子: "我爱北京天安门"

  • 分词结果: ["我", "爱", "北京", "天安门"]

如果没有分词,计算机看到的只是一个长字符串,无法理解其含义。分词是中文自然语言处理的第一步,也是至关重要的一步。


jieba 库的主要功能和特点

除了基础的分词,jieba 还提供了多种强大的功能:

1. 三种分词模式
  • 精确模式(最常用): 试图将句子最精确地切开,适合文本分析。

    • jieba.cut("我来到北京清华大学", cut_all=False)

    • 结果:["我", "来到", "北京", "清华大学"]

  • 全模式: 把句子中所有可以成词的词语都扫描出来,速度非常快,但不能解决歧义。

    • jieba.cut("我来到北京清华大学", cut_all=True)

    • 结果:["我", "来到", "北京", "清华", "清华大学", "华大", "大学"]

  • 搜索引擎模式: 在精确模式的基础上,对长词再次切分,提高召回率,适合搜索引擎分词。

    • jieba.cut_for_search("小明硕士毕业于中国科学院计算所")

    • 结果:["小明", "硕士", "毕业", "于", "中国", "科学", "学院", "科学院", "中国科学院", "计算", "计算所"]

2. 自定义词典

你可以加载自定义词典,以便识别特定领域的词汇(如人名、专业术语、新词等),从而提高分词的准确性。

  • 用途:

    • 保证特定名称(如“王建国”、“深度学习”)不被切分开。

    • 添加新词(如“yyds”、“元宇宙”)。

  • 方法: jieba.load_userdict("user_dict.txt") 或使用 add_word(word, freq=None, tag=None) 方法。

3. 关键词提取

可以从一段文本中自动提取出关键信息的词语。

  • 基于 TF-IDF 算法的提取: jieba.analyse.extract_tags(text, topK=20)

  • 基于 TextRank 算法的提取: jieba.analyse.textrank(text, topK=20)

4. 词性标注

在分词的同时,为每个词语标注其词性(如名词、动词、形容词等)。

  • 方法: jieba.posseg.cut("我爱自然语言处理")

  • 结果: [("我", "r"), ("爱", "v"), ("自然语言", "l"), ("处理", "v")] (r=代词,v=动词,l=习语)

5. 令牌化(返回生成器或列表)

分词结果可以返回一个可迭代的生成器(节省内存),也可以直接返回一个列表(方便查看)。

  • jieba.cut(...):返回生成器

  • jieba.lcut(...):返回列表


应用场景

jieba 库是以下领域的基础工具:

  1. 搜索引擎: 建立倒排索引,进行关键词匹配。

  2. 情感分析: 分析评论、微博等文本的情感倾向(正面/负面)。

  3. 文本分类: 将新闻、邮件等自动分类到不同的类别(如体育、财经)。

  4. 智能客服与聊天机器人: 理解用户提问的意图。

  5. 语音合成与识别: 将文字转换成语音或反之,需要知道词的边界。

  6. 信息检索与文本挖掘: 从大量文本中提取有价值的信息和模式。

简单代码示例

import jieba# 1. 精确模式分词
text = "jieba是一个优秀的中文分词第三方库"
seg_list = jieba.lcut(text) # 返回列表
print("精确模式: " + "/ ".join(seg_list))
# 输出:精确模式: jieba/ 是/ 一个/ 优秀/ 的/ 中文/ 分词/ 第三方/ 库# 2. 添加自定义词典
jieba.add_word("第三方库") # 将“第三方库”视为一个词
seg_list2 = jieba.lcut(text)
print("添加词典后: " + "/ ".join(seg_list2))
# 输出:添加词典后: jieba/ 是/ 一个/ 优秀/ 的/ 中文/ 分词/ 第三方库# 3. 关键词提取
import jieba.analyse
text_for_keywords = "人工智能是当今科技发展的最重要方向之一,深度学习是其中的一个分支。"
keywords = jieba.analyse.extract_tags(text_for_keywords, topK=3)
print("关键词: " + ", ".join(keywords))
# 输出:关键词:人工智能, 深度学习, 分支

总结来说,jieba 库的用途是作为中文自然语言处理的基石,它将连续的中文文本转化为结构化的、计算机可以理解和处理的词语单元,为后续更复杂的文本分析任务奠定基础。

http://www.dtcms.com/a/395113.html

相关文章:

  • 开启 3D 之旅 - 你的第一个 WebGL 三角形
  • 基于AWS Lambda的机器学习动态定价系统 CI/CD管道部署方案介绍
  • 3D 文件格式解释
  • 对Hive表进行归档,减少小文件的影响
  • R 中,geo 数据集 分析探针转基因的时候,一个探针对应的多个基因的情况
  • 机器学习-逻辑回归-考试预测通过-1
  • 计算机中用8位如何计算最大值和最小值-128~127
  • PyTorch 神经网络工具箱完全指南
  • docker一键安装部署若依Ruoyi-Vue(保姆级)
  • 通义DeepResearch论文六连发全面解读
  • 大模型应用-prompt提示词工程
  • Windows 命令行:使用路径名和文件名来启动文件
  • 稻瘟病监测仪的功能用途
  • 仿照豆包实现 Prompt 变量模板输入框
  • 如何安装 SQLPro Studio for Mac?v2024.21.dmg 文件安装步骤详解(附安装包)
  • 扣子空间:字节跳动推出的AI Agent 智能体平台
  • 编程基础:表驱动
  • 内网穿透的应用-RemoteJVMDebug+cpolar:内网服务器调试的无界解决方案
  • 如何将PPT每一页批量导出为高清JPG图片?一文讲清操作流程
  • 高防服务器如何实现安全防护?ddos攻击会暴露ip吗?
  • linux硬盘分区管理
  • spring boot实现MCP服务器,及其cursor测试使用的方法
  • web前端开发与服务器通信的技术变迁历程
  • 市值机器人:智能力量与监管博弈下的金融新生态
  • LeetCode:46.二叉树展开为链表
  • LeetCode算法日记 - Day 50: 汉诺塔、两两交换链表中的节点
  • 力扣每日一刷Day24
  • LeetCode 226. 翻转二叉树
  • leetcode 2331 计算布尔二叉树的值
  • docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“