iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中jieba模块的深入了解
  • 291
分享到

python中jieba模块的深入了解

2024-04-02 19:04:59 291人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言        二、模块的安装三、jieba模块具体讲解3.1分词模式3.2cut()、lcut()3.2.1cut(s

一、前言        

英语单词之间是通过空格分隔的,但是中文却不存在空格的概念,因此需要一个模块来解决中文的分词问题。jieba模块是一个python第三方中文分词模块,可以用于将语句中的中文词语分离出来

此外,全国计算机等级考试二级Python语言程序设计也涉及到该模块的相关知识。因此大家可以好好了解下该模块。

二、模块的安装

 jieba模块作为python的一个第三方模块,是需要我们自行下载安装后才能使用的,我们主要采用pip安装工具进行jieba的安装,具体步骤如下:

windows操作系统中,快捷键win+R

然后输入cmd,点击确定,打开

输入:

pip install jieba 

即可安装成功。

三、jieba模块具体讲解

3.1分词模式

jieba模块支持三种分词模式:全模式、精准模式以及搜索引擎模式。

①全模式:全模式可以将句子中所有可能的词语全部提取出来,该模式提取速度快,但可能会出现冗余词汇

如图,第一行出现了冗余词汇,其采用的就是全模式,而第二行采用精准模式。

②精准模式:精准模式通过优化的智能算法将语句精准的分隔,适用于文本分析

③搜索引擎模式:索引擎模式在精准模式的基础上对词语进行再次划分,提高召回率,适用于搜索引擎分词。 

3.2cut()、lcut()

3.2.1cut(sentence, cut_all=False, HMM=True, use_paddle=False)

参数解析:

  sentence:要分割的str(unicode)。

  cut_all:模型类型。True 表示全模式,False 表示精准模式。其默认为精准模式。

  HMM:是否使用隐马尔可夫模型。

函数功能: 

The main function that segments an entire sentence that contains Chinese characters into separated words.

将包含汉字的整个句子分割成单独的单词的主要功能。

import jieba
sentence = 'python是世界上最好的编程语言'
ls = jieba.cut(sentence, cut_all=False)
print(ls)
# <generator object Tokenizer.cut at 0x000001966B14EA98>

print(type(ls))
# <class 'generator'>

 

如图,其是迭代器类型,可以用以下三种方式显示结果

①' '.join()

# ①''.join
ls_1 = ' '.join(ls)
print(ls_1)
# python 是 世界 上 最好 的 编程 编程语言 语言

②for循环遍历 

# ②for循环遍历
for i in ls:
    print(i)
'''
python
是
世界
上
最好
的
编程语言
'''

③列表推导式

# ③列表推导式
ls_2 = [i for i in ls]
print(ls_2)
# ['python', '是', '世界', '上', '最好', '的', '编程语言']

3.2.2lcut(sentence,cut_all=False)

    def lcut(self, *args, **kwargs):
        return list(self.cut(*args, **kwargs))

查看jieba模块,其定义lcut()函数如上,可以发现lcut()函数最终返回的是list(cut())

import jieba
sentence = 'python是世界上最好的编程语言'
ls = jieba.cut(sentence, cut_all=False)
print(ls)
print(list(ls))
ls1 = jieba.lcut(sentence, cut_all=True)
print(ls1)
ls2 = jieba.lcut(sentence)
print(ls2)

结果如下 :

注意:cut_all=False是精准模式,也是其默认的类型。

3.3cut_for_search()、lcut_for_search()

cut_for_search(sentence, HMM=True)和lcut_for_search(sentence, HMM=True)和上面所讲的类似。其都是对搜索引擎进行更精细的细分,即采用搜索引擎模式。

import jieba
sentence = 'python是世界上最好的编程语言'
ls3 = jieba.cut_for_search(sentence)
print(ls3)
# <generator object Tokenizer.cut_for_search at 0x00000199C7A3D9A8>
print(list(ls3))
# ['python', '是', '世界', '上', '最好', '的', '编程', '语言', '编程语言']
ls4 = jieba.lcut_for_search(sentence)
print(ls4)
# ['python', '是', '世界', '上', '最好', '的', '编程', '语言', '编程语言']

3.4add_word(self, word, freq=None, tag=None)

Add a word to dictionary.
freq and tag can be omitted, freq defaults to be a calculated value that ensures the word can be cut out.
  • 函数功能:在字典中添加一个单词。
  • 参数解析:freq 和 tag 可以省略,freq 默认是一个计算值,保证单词可以被切掉。
import jieba
sentence = 'python是世界上最好的编程语言'
ls2 = jieba.lcut(sentence)
print(ls2)
ls5 = jieba.add_word('最好的')
ls6 = jieba.lcut(sentence)
print(ls6)

 

结果如上,最终最好的就没有被切掉。

3.5del_word(word)

函数功能:分词词典中删除词word

import jieba
sentence = 'python是世界上最好的编程语言'
ls2 = jieba.lcut(sentence)
print(ls2)
ls7 = jieba.del_word('世界')
ls8 = jieba.lcut(sentence)
print(ls8)

不过经过笔者更改word,发现word是编程语言时,最后就分割成了编程和语言;当word是编程时,结果没变化;当word是python时,结果也没变化。因此有些需要笔者自己去尝试。

3.6suggest_freq(segment, tune=False)

 """
        Suggest word frequency to force the characters in a word to be
        joined or splitted.
        Parameter:
            - segment : The segments that the word is expected to be cut into,
                        If the word should be treated as a whole, use a str.
            - tune : If True, tune the word frequency.
        Note that HMM may affect the final result. If the result doesn't change,
        set HMM=False.
        """
  • 函数功能:建议词频,强制将单词中的字符合并或拆分。
  • 参数解析:
    •   segment :该单词预期被切割成的片段,如果该单词应该被视为一个整体,则使用str。
    •   tune : 如果为True,则调整词频。

注意:HMM可能会影响最终结果。如果结果不变,设置HMM=False。 

3.7tokenize(unicode_sentence, mode="default", HMM=True)

  """
        Tokenize a sentence and yields tuples of (word, start, end)
        Parameter:
            - sentence: the str(unicode) to be segmented.
            - mode: "default" or "search", "search" is for finer segmentation.
            - HMM: whether to use the Hidden Markov Model.
        """
  • 函数功能:标记一个句子并产生 (word, start, end) 的元组
  • 参数解析:
    •     unicode_sentence:要分割的 str(unicode)。
    •     模式:"default" or "search", "search" is for finer segmentation.    “默认”或“搜索”,“搜索”用于更精细的分割。
    •     HMM: 是否使用隐马尔可夫模型。 

四、所需代码展示

# -*- coding: utf-8-*-
import jieba
sentence = 'python是世界上最好的编程语言'
ls = jieba.cut(sentence, cut_all=False)
# print(ls)
# print(list(ls))
# # <generator object Tokenizer.cut at 0x0000019F5E44DA98>
# print(type(ls))
# # <class 'generator'>
 
# # ①''.join
# ls_1 = ' '.join(ls)
# print(ls_1)
# # python 是 世界 上 最好 的 编程语言
# ②for循环遍历
# for i in ls:
#     print(i)
# '''
# python
# 是
# 世界
# 上
# 最好
# 的
# 编程语言
# '''
# # ③列表推导式
# ls_2 = [i for i in ls]
# print(ls_2)
# # ['python', '是', '世界', '上', '最好', '的', '编程语言']
# ls1 = jieba.lcut(sentence, cut_all=True)
# print(ls1)
ls2 = jieba.lcut(sentence)
print(ls2)
 
# ls3 = jieba.cut_for_search(sentence)
# print(ls3)
# # <generator object Tokenizer.cut_for_search at 0x00000199C7A3D9A8>
# print(list(ls3))
# # ['python', '是', '世界', '上', '最好', '的', '编程', '语言', '编程语言']
# ls4 = jieba.lcut_for_search(sentence)
# print(ls4)
# ['python', '是', '世界', '上', '最好', '的', '编程', '语言', '编程语言']
 
# ls5 = jieba.load_userdict('文案.txt')
# ls6 = jieba.lcut(sentence)
# print(ls6)
# ls5 = jieba.add_word('最好的')
# ls6 = jieba.lcut(sentence)
# print(ls6)
ls7 = jieba.del_word('世界')
ls8 = jieba.lcut(sentence)
print(ls8)

需要的可以自行复制

五、总结

  • ①全国计算机等级考试二级python语言程序设计中涉及到的内容一般只是分词模式、lcut()、lcut_for_search()和add_word()这几方面知识;
  • ②笔者所写的不是特别详细,要是之后有好的案例或者其他方式,会进行添加以及完善3.6,3.7的内容;
  • ③该模块的理解与使用不是特别难,希望大家自己动手试试,找几个案例,敲敲代码!!

到此这篇关于python中jieba模块的深入了解的文章就介绍到这了,更多相关python jieba 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python中jieba模块的深入了解

本文链接: https://www.lsjlt.com/news/118851.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中jieba模块的深入了解
    目录一、前言        二、模块的安装三、jieba模块具体讲解3.1分词模式3.2cut()、lcut()3.2.1cut(s...
    99+
    2022-11-11
  • 深入了解Python的类与模块化
    目录学习目标1. 面向对象编程:类1.1 面向对象编程的基本概念1.2 自定义类1.3 再谈继承2. 模块2.1 导入模块2.2 导入Python标准模块2.3 单独导入模块中所需对...
    99+
    2022-11-12
  • 深入理解python中的select模块
    简介 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kq...
    99+
    2022-06-04
    模块 python select
  • 深入理解python中的atexit模块
    atexit 模块介绍 python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作...
    99+
    2022-06-04
    模块 python atexit
  • 深入解析Python中的urllib2模块
    Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库。这里总结了一些 urllib2 的使用细节。 Prox...
    99+
    2022-06-04
    模块 Python
  • Python中jieba分词模块的用法
    这篇文章主要讲解了“Python中jieba分词模块的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中jieba分词模块的用法”吧!0、前言jieba库是进行中文分词的利器,...
    99+
    2023-06-04
  • 深入理解Node中的buffer模块
    在Node、ES2015出现之前,前端工程师只需要进行一些简单的字符串或DOM操作就可以满足业务需要,所以对二进制数据是比较陌生。node出现以后,前端面对的技术场景发生了变化,可以深入到网络传输、文件操作...
    99+
    2022-06-04
    模块 Node buffer
  • 深入理解Python3中的http.client模块
    http 模块简介 Python3 中的 http 包中含有几个用来开发 HTTP 协议的模块。 http.client 是一个底层的 HTTP 协议客户端,被更高层的 urllib.request ...
    99+
    2022-06-04
    模块 http client
  • 深入解析Python编程中JSON模块的使用
    JSON编码支持的基本数据类型为 None , bool , int , float 和 str , 以及包含这些类型数据的lists,tuples和dictionaries。 对于dictionaries...
    99+
    2022-06-04
    模块 Python JSON
  • python爬虫之request模块深入讲解
    目录一、概述二、安装和基本步骤使用三、http知识复习四、request请求模块的方法使用五,params和payload参数使用说明总结一、概述 在后期渗透测试中,经常会遇到需要向...
    99+
    2022-11-13
  • 深入理解Node.js的HTTP模块
    前言 我们知道传统的HTPP服务器会由Aphche、Nginx、IIS之类的软件来担任,但是nodejs并不需要,nodejs提供了http模块,自身就可以用来构建服务器,而且http模块是由C++实现的,...
    99+
    2022-06-04
    模块 Node js
  • 深入了解Python中的变量
    目录1 Python变量概述2 Python变量的命名3 Python变量赋值3.1 Python赋值概述3.2 Python变量的基本格式3.3 Python变量的其他赋值格式3....
    99+
    2022-11-12
  • 深入了解Python中的os.path.join函数
    深入了解Python中的os.path.join函数 1. 引言 在Python中,处理文件和目录路径是常见的任务。为了简化路径的拼接和操作,Python提供了os.path模块,其中的join函数是...
    99+
    2023-09-08
    python 开发语言
  • 深入了解Python的继承
    目录面向对象三大特性:1、单继承1.1 继承的概念、语法和特点1)、继承的语法2)、专业术语总结面向对象三大特性: 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的...
    99+
    2022-11-12
  • Python关于时间序列calendar模块的深入讲解
    大家好,在之前的文章中详细介绍了time和datetime模块的使用。这两个模块更多的是用于处理时间和日期相关的问题。 本文介绍的是第三个模块calendar,则主要是用于解决日历方...
    99+
    2022-11-12
  • C++深入了解模板的使用
    目录一.泛型编程二.函数模板1.函数模板概念2.函数模板格式3.函数模板的原理三.类模板一.泛型编程 泛型编程:不再是针对某种类型,能适应广泛的类型,跟具体的类型无关的代码 如何实现...
    99+
    2022-11-13
  • Java代理模式的深入了解
    目录一、静态代理模式1.1、 代理模式的定义:1.2、代理模式的优缺点二、动态代理模式总结一、静态代理模式 1.1、 代理模式的定义: 由于某些原因需要给某对象提供一个代理以控制对该...
    99+
    2022-11-12
  • Java工厂模式的深入了解
    目录一、简单工厂模式二、工厂方法模式三、抽象工厂模式3.1、抽象工厂模式的定义3.2、  抽象工厂模式的结构3.3抽象工厂模式代码示例四、小结一、简单工厂模式 何为简单工厂...
    99+
    2022-11-12
  • Java单例模式的深入了解
    目录一、设计模式概览1.1、软件设计模式的概念1.2、软件设计模式的基本要素1.3、GoF的23种设计模式的分类和功能1.4、软件设计的七大原则 二、单利模式1.1、单例模...
    99+
    2022-11-12
  • 深入了解HTML5中的行内和块级元素
    了解HTML5中的行内元素和块级元素,需要具体代码示例HTML5是当前 web 开发中广泛应用的一种标记语言。在 HTML5 中,元素被分为两大类别:行内元素和块级元素。理解这两种元素的特性对于正确使用 HTML5 是非常重要的。下面将通过...
    99+
    2023-12-28
    html 块级元素 行内元素
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作