• Python 数据分析的敲门砖 jieba模块中文分词



    文章开篇

    Python的魅力,犹如星河璀璨,无尽无边;人生苦短、我用Python!


    Jieba简介

    jieba 是一个用于中文文本分词Python 库。
    它能够将一整段中文文本切分成有意义的词语或短语
    分词是中文**自然语言处理(NLP)**中非常重要的一步,因为中文句子中的词与词之间不像英文那样有明确的空格分隔,所以需要专门的工具来进行分词。


    使用场景

    在文本分析中,可能需要知道文本中哪些词或短语出现的频率最高,或者文本的主题是什么。
    在情感分析中,分词可以帮助你识别文本中的关键词或短语,进而判断文本的情感倾向
    在机器翻译时,源语言和目标语言都需要进行分词,以便将文本转换成机器可以理解的格式
    在搜索引擎中,需要对输入的查询内容进行分词,以便更好地理解用户的意图,并返回相关的搜索结果。


    jieba的引用

    jieba属于第三方模块,使用前需要额外下载安装

    pip install jieba
    
    • 1

    下载安装完成后,即可导入使用

    import jieba
    
    • 1

    jieba常用的方法


    1.精确模式分词

    jieba.cut(sentence, cut_all=False):核心函数,用于将中文文本切分成词语;
    sentence 是要分词的文本
    cut_all 是一个可选参数,默认为False;

    • 当它为 True 时,使用全模式进行分词;
    • 当为 False 时,使用精确模式进行分词;

    返回值是一个生成器,包含了分词后的结果

    import jieba
    
    sentence = "你的男朋友是个盖世垃圾,将会脚踏七彩祥云迎娶你的闺蜜"
    seg_list = jieba.cut(sentence, cut_all=True)
    print("模糊模式分词结果:", "/ ".join(seg_list)) # 模糊模式分词结果: 你/ 的/ 男朋友/ 朋友/ 是/ 个/ 盖世/ 垃圾/ ,/ 将/ 会/ 脚踏/ 七彩/ 祥云/ 迎娶/ 你/ 的/ 闺/ 蜜
    
    seg_list = jieba.cut(sentence, cut_all=False)
    print("精确模式分词结果:", "/ ".join(seg_list)) # 精确模式分词结果: 你/ 的/ 男朋友/ 是/ 个/ 盖世/ 垃圾/ ,/ 将会/ 脚踏/ 七彩/ 祥云/ 迎娶/ 你/ 的/ 闺蜜
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.搜索引擎模式分词

    jieba.cut_for_search(sentence):用于搜索引擎的分词模式,适合短文本分词;
    返回值是一个生成器,包含了分词后的结果;

    import jieba
    
    sentence = "今天的天气很糟糕"
    seg_list = jieba.cut_for_search(sentence)
    
    print("搜索引擎模式分词结果:", "/ ".join(seg_list))   # 搜索引擎模式分词结果: 今天/ 的/ 天气/ 很/ 糟糕
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.添加新词

    jieba.add_word(word, freq=None, tag=None):用于向 jieba 的词典中添加新词;
    word 是要添加的新词
    freq 是可选参数,表示该词的出现频率
    tag 是可选参数,表示该词的词性

    import jieba
    
    # 使用新词进行分词
    sentence = "网络热词公主请上车"
    seg_list = jieba.cut(sentence, cut_all=False)
    
    print("分词结果:", "/ ".join(seg_list)) # 分词结果: 网络/ 热词/ 公主/ 请/ 上车
    
    # 添加新词到词典
    jieba.add_word("公主请上车", 20)
    seg_list = jieba.cut(sentence, cut_all=False)
    
    print("分词结果包含新词:", "/ ".join(seg_list)) # 分词结果包含新词: 网络/ 热词/ 公主请上车
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4.调整词频

    jieba.suggest_freq(segment, tune=True):调整单个词语的词频,使其能(或不能)被分出来。
    segment 是要调整词频的词语。
    tune 是一个可选参数,当为 True 时,调整词频后,会立即更新词典;当为 False 时,不更新词典。

    import jieba
    
    sentence = "天蚕土豆是一个网文作者"
    seg_list = jieba.cut(sentence, cut_all=False)
    print("分词结果:", "/ ".join(seg_list)) # 分词结果: 天蚕/ 土豆/ 是/ 一个/ 网文/ 作者
    
    # 调整词频,使得"调整"可以被切分出来
    jieba.suggest_freq("天蚕土豆", True)
    
    seg_list = jieba.cut(sentence, cut_all=False)
    print("分词结果包含调整词频后的词:", "/ ".join(seg_list))    # 分词结果包含调整词频后的词: 天蚕土豆/ 是/ 一个/ 网文/ 作者
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    5.提取关键词

    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=()):用于文本关键词提取。
    sentence 是要提取关键词的文本。
    topK 是可选参数,表示返回关键词的个数。
    withWeight 是可选参数,当为 True 时,返回关键词及其权重;当为 False 时,只返回关键词。
    allowPOS 是可选参数,用于指定需要提取的关键词的词性。

    import jieba.analyse
    
    text = "今天天气非常的糟糕,我不喜欢阴雨天"
    keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
    print("关键词提取结果:", keywords) # 关键词提取结果: [('今天天气', 2.4582479479), ('阴雨天', 2.3196185118), ('糟糕', 1.6664666296419999), ('喜欢', 1.140517680604), ('非常', 0.9806566012679999)]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    应用案例

    import jieba.posseg as pseg
    
    # 示例文本
    text = "这部电影真的很好看,演员演技出色,剧情也很吸引人。"
    
    # 使用jieba进行词性标注
    words = pseg.cut(text)
    
    # 情感分析(简单示例,实际应用可能需要复杂的模型)
    sentiment = 0  # 初始情感分数
    for word, flag in words:
        if 'n' in flag:  # 名词可能包含情感信息
            sentiment += 1
        elif 'd' in flag:  # 副词可能加强或减弱情感
            sentiment += 2 if word in ['非常', '十分', '特别', '极其'] else -1
    
    # 根据情感分数判断情感倾向
    if sentiment > 0:
        print("正面情感")
    elif sentiment < 0:
        print("负面情感")
    else:
        print("中性情感")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    总结

    使用jieba库可以轻松地对中文文本进行分词和词频统计,展现文本中的高频词汇。
    然而,jieba库的功能远不止于此,它还包括词性标注、关键词提取等,是一个功能强大的中文分词第三方库,广泛应用于自然语言处理任务中。

  • 相关阅读:
    【考研英语词汇训练营】Day 16 —— bankrupt,remain,regulate,construct,reflect
    Codeforces Round #804 (Div. 2) 题解(简)
    elementUI动态合并单元格无敌详细解释版
    基于安卓的电力设备智能巡检APP设计
    如何在复现LaneNet车道线检测项目时,采用网上博主制作数据集的方法来只做自己的数据集,当把此数据集投喂进网络训练时(采用Pytorch库)会报如下的错误?
    数据比对总结
    JSR303和拦截器
    Java设计模式之过滤器模式(Filter Pattern)
    2022 ICPC 杭州站
    基于selenium的pyse自动化测试框架
  • 原文地址:https://blog.csdn.net/weixin_54217348/article/details/136370919