《自然语言处理》—— jieba库的介绍与使用

2024-08-30 10:44

本文主要是介绍《自然语言处理》—— jieba库的介绍与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、jieba库有什么作用
    • 1、基本介绍
    • 2、分词模式
    • 3、常用函数
    • 4、应用场景
    • 5、安装与使用
  • 二、示例代码
    • 1、精确模式分词
    • 2、全模式分词
    • 3、搜索引擎模式分词
    • 4、向jieba词典中添加一个新词
    • 5、自定义词典,添加到jiba词库中

一、jieba库有什么作用

jieba库是一个优秀的Python中文分词第三方库,主要用于将中文文本切分成词语或词汇单位,便于后续的自然语言处理(NLP)和文本分析任务。以下是对jieba库的详细介绍:

1、基本介绍

  • 功能:jieba分词库提供了高效而灵活的中文分词功能,能够处理复杂的中文文本,并将其切分为合理的词汇单元。
  • 特性
    • 支持三种分词模式:精确模式全模式搜索引擎模式,满足不同场景下的需求。
    • 支持自定义词典,用户可以根据需要添加或删除特定的词汇,提高分词的准确性。
    • 提供了关键词提取功能,有助于文本摘要和信息检索等任务。
    • 实现了基于前缀词典和动态规划的分词算法,分词速度快且准确率高。

2、分词模式

  • 精确模式:将文本精确地切分开,不存在冗余单词,适合文本分析任务。例如,jieba.cut(text, cut_all=False)。
  • 全模式:把文本中所有可能的词语都扫描出来,速度非常快,但可能存在冗余数据。例如,jieba.cut(text, cut_all=True)。
  • 搜索引擎模式:在精确模式的基础上,对长词再次进行切分,提高召回率,适合用于搜索引擎分词。例如,jieba.cut_for_search(text)。

3、常用函数

  • jieba.cut:按照指定的分词模式切分文本,返回生成器。
  • jieba.lcut:按照指定的分词模式切分文本,返回列表。
  • jieba.load_userdict:加载用户自定义词典,以确保特定词汇被正确切分。
  • jieba.add_word:手动添加一个新词汇到词典中,临时生效。
  • jieba.del_word:从词典中删除一个词汇。
  • jieba.suggest_freq:调整词出现的频率,以便更好地进行分词。
  • jieba.enable_parallel:启用并行分词,提高分词速度。
  • jieba.sent_tokenize:将文本拆分成句子。
  • jieba.analyse.extract_tags:提取文本中的关键词,返回关键词列表。

4、应用场景

jieba库广泛应用于文本挖掘、搜索引擎、信息检索、文本分类、情感分析等多个领域。通过分词,jieba库能够帮助用户更好地理解和处理中文文本数据,从而提高相关应用的性能和效果。

5、安装与使用

  • jieba库可以通过pip命令轻松安装,安装命令为pip install jieba

    pip install jieba
    
  • 安装完成后,即可在Python代码中通过import jieba来导入并使用jieba库。

    import jieba
    

二、示例代码

1、精确模式分词

  • jieba.cutjieba.lcut 精确分词的区别

    a = jieba.cut("我正在学习自然语言处理", cut_all=False)
    # 因为jieba.cut返回的是生成器,不能直接输出查看结果
    print(a)   # 结果:<generator object Tokenizer.cut at 0x0000016B5944F610>
    # 需要先转换为列表或其他可迭代对象才可以查看,且需要指定分隔符
    print(" / ".join(a))  # 结果:我 / 正在 / 学习 / 自然语言 / 处理a = jieba.lcut("我正在学习自然语言处理", cut_all=False)
    # 可以直接输出查看,返回的是一个列表
    print(a)  # 结果:['我', '正在', '学习', '自然语言', '处理']
    
  • 因此选择 jieba.cut 还是 jieba.lcut 主要取决于你的具体需求:

    • 如果你需要边分词边处理,或者对内存使用有较高要求,推荐使用 jieba.cut
    • 如果你需要立即获取所有分词结果并进行后续处理,或者对内存使用不敏感,那么 jieba.lcut 可能是一个更好的选择。

2、全模式分词

  • 只需要将 cut_all=False 参数,改为 cut_all=True 即可

    a = jieba.cut("我正在学习自然语言处理", cut_all=True)
    print(" / ".join(a))  # 结果:我 / 正在 / 学习 / 自然 / 自然语言 / 语言 / 处理a = jieba.lcut("我正在学习自然语言处理", cut_all=True)
    print(a)  # 结果:['我', '正在', '学习', '自然', '自然语言', '语言', '处理']"""
    全模式:把文本中所有可能的词语都切出来
    这里便是把‘自然语言’所有可能的词语都切出来
    """
    

3、搜索引擎模式分词

  • 搜索引擎模式会进一步细化分词

    import jiebatext = "我爱北京天安门,天安门上太阳升。"
    seg_list = jieba.cut_for_search(text)
    print("/ ".join(seg_list))# 输出结果(实际输出可能有所不同): 搜索引擎模式分词结果:我/ 爱/ 北京/ 天安/ 天安门/ ,/ 天安/ 天安门/ 上/ 太阳/ 太阳升/ 。
    

4、向jieba词典中添加一个新词

  • 向jieba词典中添加一个新词后,在切分句子中有这个新词时便会将他看成一个词,便不会对它再进行更细的切分

    import jiebastr = '我正在学习自然语言处理'
    a = jieba.lcut(sentence=str)
    print(a)  # 结果:['我', '正在', '学习', '自然语言', '处理']str = '我正在学习自然语言处理'
    jieba.add_word('自然语言处理')  # 向词典添加一个新词
    a = jieba.lcut(sentence=str)
    print(a)  # 结果:['我', '正在', '学习', '自然语言处理']
    

5、自定义词典,添加到jiba词库中

  • 意思就是可以自定义一些词,放在文本中,添加到jib词库中,在分词的时候让系统默认这些词就是一个单独的词语,不用再分

  • 其实就是添加多个新词

    import jieba# 假设我们有一个自定义词典文件 自定义词典.txt,内容如下:  
    # 著名的高等学府
    # 优秀的科技公司jieba.load_userdict("自定义词典.txt")  # 加载自定义词典
    text = "清华大学是著名的高等学府,华为公司是一家优秀的科技公司。"
    a = jieba.lcut(sentence=text)
    print(a)
    # 输出结果: ['清华大学', '是', '著名的高等学府', ',', '华为公司', '是', '一家', '优秀的科技公司', '。']
    

这篇关于《自然语言处理》—— jieba库的介绍与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120600

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他