• NLP 之 jieba (结巴)制作词云


    NLP 之 jieba (结巴)制作词云

    一 、jieba的导入

    %pip install jieba
    
    • 1

    二、 jieba 结巴分词的几种模式及使用

    1. 精确模式

      • 精确划分,视图将句子最精确地切分,适合文本分析
      jieba.lcut(text,cul_all=False)
      
      • 1
    2. 全局模式

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

        jieba.lcut(text,cul_all=True)
        
        • 1
    3. 搜索引擎模式

      • 搜索引擎模式,是在精确划分的基础上,再进行全模式划分,,提高召唤率,适合用于搜索引擎分词。

      • jieba.lcut_for_search(text)
        
        • 1
    4. 展示三种模式

      text2 = '落霞与孤鹜齐飞,秋水共长天一色'
      
      print('精确搜索','/'.join(jieba.lcut(text2,cut_all=False)))
      print('全模式','/'.join(jieba.lcut(text2,cut_all=True)))
      print('搜索引擎模式','/'.join(jieba.lcut_for_search(text2)))
      
      """
      精确搜索     落霞与孤鹜齐飞/,/秋水共长天一色
      全模式       落霞/落霞与孤鹜齐飞/,/秋水/秋水共长天一色/长天/天一/一色
      搜索引擎模式  落霞/落霞与孤鹜齐飞/,/秋水/长天/天一/一色/秋水共长天一色
      """
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

    如果有一些网络热词,能够被识别出来,不要被切分开,就要进行自定义一个词典,这个词典本身是txt文档,然后先试用jieba.load_userdict(‘文档地址’),再根据需求,使用jieba中任意一个模式进行切分。

    text3 = '我是来自妈妈省的蓝色妖姬唱着只因你太美而来'
    jieba.load_userdict('dict.txt')
    
    print('精确模式','/'.join(jieba.lcut(text3,cut_all=False)))
    print('全模式','/'.join(jieba.lcut(text3,cut_all=True)))
    print('搜索引擎模式','/'.join(jieba.lcut_for_search(text3)))
    
    """
    精确模式     我/是/来自/妈妈/省/的/蓝色妖姬/唱/着/只/因/你/太美而来
    全模式       我/是/来自/妈妈/省/的/蓝色/蓝色妖姬/妖姬/唱/着/只因/你/太美/而来
    搜索引擎模式  我/是/来自/妈妈/省/的/蓝色/妖姬/蓝色妖姬/唱/着/只/因/你/太美/而来/太美而来
    
    
    """
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    三、词云的过程

    第一步:数据导入
    • 数据准备,制作词云的数据导入
    • 停用词导入及自定义停用词词典:网上找的停用词及自定义停用词
    第二步:数据清洗
    • 去掉数据中的特殊符号或者说只保留中文,如去掉emoj符号,等一些特殊的对分析无用的符号。 方法是用正则方法。
    • 判断词云数据是否是字符串类型,是的话对数据进行切分,把所有的数据保留成一个长的字符串,用空格连接
    第三步:准备好产生词云图的文本数据
    • 对清洗后的长字符串进行切分,对其值进行统计得到绘制词云的最终数据import_words.
    第四步:制作词云图 这里需要导入worldcolud ,和从PTL导入Tmage
    • 使用PTL里面的 Imag 读取nd array的图片,这一步是通过读取图片的数据,保存成nd array.
    • 使用词云提取图片颜色生成器 ,worldcolund.Imagecolorgenerator( bgim)
    • 设置词云的背景颜色,词云显示的词数及最大最小字体等一些参数,然后将import_words传进来,plt.show就可以完成词云的绘制。、
    • 代码显示
    import jieba
    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    import matplotlib.pyplot as plt
    # 从列表中处理  拿到抖音数据里面的个性签名内容,使用结巴对语句进行切分
    dou_yin_data = pd.read_csv('./douyin.csv')
    
    
    # 哈工大、四川大学、百度等都有发布的停用词文件 可以在网上自行获取
    # 读取停用词
    stop_words_list = pd.read_csv('./stopwords.txt',encoding='gbk',header=None)
    for statement in dou_yin_data.signature:
        print(statement)
    # 只保留中文数据
    good_words = dou_yin_data.signature.str.replace(r'[^\u4e00-\u9f5a]','')
    
    # 产生字符串
    content = ''
    for statement in good_words :
        if type(statement) != str:
            continue
        words = jieba.lcut(statement,cut_all=False)
        for word in words:
            if word not in stop_words:
                if word not in stop_words_list:
                    content += word + ' '
    ## 字符串切分,产生最终绘制词云的数据
    import_words = Series(content.split(' ')).value_counts()[10:310]
    
    # 绘制词云
    from PIL import Image
    import wordcloud
    # 制作抖音大V签名的词云图
    # 舆论分析 评论分析 反馈分析 建议分析
    
    # 读取nd array 的图片
    bgimg = np.array(Image.open('./bgimg.png'))
    # 词云提取图片颜色生成器
    genclr = wordcloud.ImageColorGenerator(bgimg)
    wc = wordcloud.WordCloud(font_path='./FZZJ-LongYTJW.TTF',# 设置字体
                             background_color='#D4F6CC', # 背景颜色
                             max_words=200,
                             max_font_size=300,
                             min_font_size=5,
                             random_state=42,
                             mask=bgimg,
                             color_func=genclr)
    
    # 渲染词云的文体
    wc.generate_from_frequencies(import_words)
    
    plt.figure(figsize=(18,18))
    plt.imshow(wc)
    plt.axis('off')
    
    • 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
    • 54
    • 55

  • 相关阅读:
    pycharm-debug 模式修改代码无需重新启动程序用法
    Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别
    [附源码]Java计算机毕业设计SSM高校本科毕业及资料存档管理系统
    java基础 API Calendar类
    详解Git合并(Merge)错误如何回退。(包括Reset, Revert和页面回滚三种,并说明其优缺点)
    【计算机网络】 心跳机制
    安卓手机使用油猴脚本教程
    Python的Pandas库(一)基础使用
    springboot连接rabbitmq报错:Failed to checkredeclare auto-delete queue(s)
    Spring Boot: Lombok 注解原理分析及实践
  • 原文地址:https://blog.csdn.net/woaixuexi6666/article/details/127680488