• 【全国计算机二级】python的jieba模块,你真的了解吗?


    CSDN话题挑战赛第1期
    活动详情地址:CSDN
    参赛话题:Python精彩第三方模块推荐
    话题描述:推荐需求实战中碰到的实用第三方模块,也可推荐有趣的 Python 第三方模块

    ???

    ?? 博客首页:****

    ?? 欢迎点赞??评论??

    热爱python,期待与大家一同进步成长!!

    目录

    一、前言? ? ? ??

    二、模块的安装

    三、jieba模块具体讲解

    3.1分词模式

    3.2cut()、lcut()

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

    3.2.2lcut(sentence,cut_all=False)

    3.3cut_for_search()、lcut_for_search()

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

    3.5del_word(word)

    3.6suggest_freq(segment, tune=False)

    3.7tokenize(unicode_sentence, mode=“default”, HMM=True)

    四、所需代码展示

    五、总结


    一、前言

    英语单词之间是通过空格分隔的,但是中文却不存在空格的概念,因此需要一个模块来解决中文的分词问题。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.
    
    • 1

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

    import jieba
    sentence = 'python是世界上最好的编程语言'
    ls = jieba.cut(sentence, cut_all=False)
    print(ls)
    # 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    print(type(ls))
    # 
    
    • 1
    • 2

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

    ①’ '.join()

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

    ②for循环遍历

    # ②for循环遍历
    for i in ls:
        print(i)
    '''
    python
    是
    世界
    上
    最好
    的
    编程语言
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ③列表推导式

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


    3.2.2lcut(sentence,cut_all=False)

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

    查看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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    结果如下

    注意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)
    # 
    print(list(ls3))
    # ['python', '是', '世界', '上', '最好', '的', '编程', '语言', '编程语言']
    ls4 = jieba.lcut_for_search(sentence)
    print(ls4)
    # ['python', '是', '世界', '上', '最好', '的', '编程', '语言', '编程语言']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10


    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.
    
    • 1
    • 2

    **函数功能:**在字典中添加一个单词。

    **参数解析:**freq 和 tag 可以省略,freq 默认是一个计算值,保证单词可以被切掉。

    import jieba
    sentence = 'python是世界上最好的编程语言'
    ls2 = jieba.lcut(sentence)
    print(ls2)
    ls5 = jieba.add_word('最好的')
    ls6 = jieba.lcut(sentence)
    print(ls6)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    不过经过笔者更改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.
            """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    **函数功能:**建议词频,强制将单词中的字符合并或拆分。

    参数解析:

    **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.
            """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    **函数功能:**标记一个句子并产生 (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))
    # # 
    # print(type(ls))
    # # 
    
    # # ①''.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)
    # # 
    # 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    需要的可以自行复制

    五、总结

    ①全国计算机等级考试二级python语言程序设计中涉及到的内容一般只是分词模式、lcut()、lcut_for_search()和add_word()这几方面知识;

    ②笔者所写的不是特别详细,要是之后有好的案例或者其他方式,会进行添加以及完善3.6,3.7的内容;

    ③该模块的理解与使用不是特别难,希望大家自己动手试试,找几个案例,敲敲代码!!

    ④以上内容如有错误,请指正!!


    CSDN话题挑战赛第1期
    活动详情地址:CSDN

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    常用的Linux系统的IO函数
    BI神器Power Query(26)-- 使用PQ实现表格多列转换(2/3)
    Debiased Contrastive Learning of Unsupervised Sentence Representations 论文阅读
    记录一次坑 | 包版本不一致产生的问题的排查过程
    安卓:Android Studio4.0~2023中正确的打开Android Device Monitor
    损失函数的期望值与泛化误差
    MaixII-Dock(v831)学习笔记——GPIO
    Python实现整蛊恶搞程序生成exe文件小弹窗祝福发给好兄弟好闺蜜好室友
    ​ 数据库约束
    云计算与大数据第15章 分布式大数据处理平台Hadoop习题带答案
  • 原文地址:https://blog.csdn.net/m0_67393039/article/details/126080750