暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

词云(python)制作

心在远方AND走在路上 2021-08-01
1239

一、词云简介

词云图从大量的文本信息筛选出重要的信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨(简单来说就是一眼就知道多次在文本中重复出现次数最多的字词)


二、词云制作

1、工具准备

1)、pycharm 已经部署完成

2)、python的三个库安装完成:

    pip install wordcloud
    pip install jieba
    pip install matplotlib

    3)、制作词云的文本信息

    2、举个栗子

    2.1、未指定词云出现模型图

    代码


      # ****** Auto : YangGaoChao ******************************
      # **** A beautiful day has begun. come on, Xiao Yang******
      # ***** Cretive time : 2021-06-16 20:10 ******************
      from wordcloud import WordCloud
      import matplotlib.pyplot as plt #绘制图像的模块
      import jieba #jieba分词
      print("词云的文本路径类似:D://word_software/python_Study/词云/YC.txt"
      )
      path_txt = input("请输入词云的文本路径:",)
      # path_txt = "D://YC.txt"
      f = open(path_txt,'r',encoding='UTF-8').read()


      # 结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云
      cut_text = " ".join(jieba.cut(f))


      wordcloud = WordCloud(
      #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
      font_path="C:/Windows/Fonts/simfang.ttf",
      #设置了背景,宽高
      background_color="white",width=1000,height=880).generate(cut_text)


      plt.imshow(wordcloud, interpolation="bilinear")
      plt.axis("off")
      plt.show()


      运行截图:

      2.2、指定词云出现模型图

      代码:


        # ****** Auto : YangGaoChao ******************************
        # **** A beautiful day has begun. come on, Xiao Yang******
        # ***** Cretive time : 2021-06-17 09:10 ******************
        from PIL import Image
        from wordcloud import WordCloud, ImageColorGenerator
        import matplotlib.pyplot as plt
        import numpy as np
        import jieba
        def YCGetWordCloud():
        print("词云的文本路径类似:D://word_software/python_Study/词云/YC.txt")
        path_txt = input("请输入词云的文本路径:",)
        print("词云的模型图路径类似:D://word_software/python_Study/词云/YC.jpg")
        path_img = input("请输入词云的文本路径:",)
        f = open(path_txt, 'r', encoding='UTF-8').read()
        background_image = np.array(Image.open(path_img))
        # 结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云,感兴趣的朋友可以去查一下,有多种分词模式
        #Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
        cut_text = " ".join(jieba.cut(f))


        wordcloud = WordCloud(
        # 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
        font_path="C:/Windows/Fonts/simfang.ttf",
        # font_path="C:/Windows/Fonts/Consolas.ttf",
        background_color="white",
        # mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的
        mask=background_image).generate(cut_text)
        # 生成颜色值
        image_colors = ImageColorGenerator(background_image)
        # 下面代码表示显示图片
        plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation="bilinear")
        plt.axis("off")
        plt.show()


        if __name__ == '__main__':
        YCGetWordCloud()



        为了方面大家使用;此段代码需要自己手动输入:词云图和词云文本的路径

        运行结果:

        三、词云库整理

        1、jieba包学习

        1.1简介:

        jieba” (Chinese for “to stutter”)Chiese text segmention:built to be the best Python Chinse word segmenmtation module.

        "jieba" Chiese文本分词:打造最好的Python中文分词模块。

        1.2.、jieba库分词的三种模式

        1.2.1、精准模式:把文本精准地分开,不存在冗余

          举个栗子:
          import jieba
          yc = jieba.lcut("与其降低你的开支,不如去尝试增加你的收入。这就是努力的理由")
          print(yc)

          运行结果:

            D:\word_software\python_Study\venv\Scripts\python.exe D:/word_software/python_Study/venv/06/0617/jieba整理.py
            Building prefix dict from the default dictionary ...
            Loading model from cache C:\Users\Thinkpad\AppData\Local\Temp\jieba.cache
            Loading model cost 0.592 seconds.
            Prefix dict has been built successfully.
            ['与其', '降低', '你', '的', '开支', ',', '不如', '去', '尝试', '增加', '你', '的', '收入', '。', '这', '就是', '努力', '的', '理由']



            1.2.2、全模式:把文中所有可能的词语都扫描出来,存在冗余

              举个栗子:
              import jieba
              yc = jieba.lcut("与其降低你的开支,不如去尝试增加你的收入。这就是努力的理由", cut_all = True)
              print(yc)

              运行结果:

                D:\word_software\python_Study\venv\Scripts\python.exe D:/word_software/python_Study/venv/06/0617/jieba整理.py
                Building prefix dict from the default dictionary ...
                Loading model from cache C:\Users\Thinkpad\AppData\Local\Temp\jieba.cache
                ['与其', '降低', '你', '的', '开支', ',', '不如', '去', '尝试', '增加', '你', '的', '收入', '。', '这', '就是', '努力', '的', '理由']
                Loading model cost 0.689 seconds.
                Prefix dict has been built successfully.



                1.2.3、搜索引擎模式:在精准模式的基础上,再次对长词进行切分

                  举个栗子:
                  import jieba
                  yc = jieba.lcut_for_search("与其降低你的开支,不如去尝试增加你的收入。这就是努力的理由")
                  print(yc)

                  运行结果:

                    D:\word_software\python_Study\venv\Scripts\python.exe D:/word_software/python_Study/venv/06/0617/jieba整理.py
                    Building prefix dict from the default dictionary ...
                    Loading model from cache C:\Users\Thinkpad\AppData\Local\Temp\jieba.cache
                    Loading model cost 0.709 seconds.
                    Prefix dict has been built successfully.
                    ['与其', '降低', '你', '的', '开支', ',', '不如', '去', '尝试', '增加', '你', '的', '收入', '。', '这', '就是', '努力', '的', '理由']


                    1.3、语法总结


                    2、wordcloud库学习

                    2.1、简介:

                    优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。


                    2.2基本使用

                    wordcloud 库把词云当作一个WordCloud对象

                    wordcloud.WordCloud()代表一个文本对应的词云

                    可以根据文本中词语出现的频率等参数绘制词云

                    绘制词云的形状、尺寸和颜色均可设定

                    以WordCloud对象为基础,配置参数、加载文本、输出文件

                    2.3、配置对象参数:w= wordcloud.WordCloud(<参数>)


                      参数       描述
                      width 指定词云对象生成图片的宽度,默认400像素
                      w=wordcloud.WordCloud(width=600)
                      height      指定词云对象生成图片的高度,默认200像素
                                  w=wordcloud.WordCloud(height=400)
                      min_font_size 指定词云中字体的最小字号,默认4号
                      w=wordcloud.WordCloud(min_font_size=10)
                      max_font_size 指定词云中字体的最大字号,根据高度自动调节
                      w=wordcloud.WordCloud(max_font_size=20)
                      font_step 指定词云中字体字号的步进间隔,默认为1
                      w=wordcloud.WordCloud(font_step=2)
                      font_path 指定文体文件的路径,默认None
                                  w=wordcloud.WordCloud(font_path="msyh.ttc")
                      max_words 指定词云显示的最大单词数量,默认200
                      w=wordcloud.WordCloud(max_words=20)
                      stop_words 指定词云的排除词列表,即不显示的单词列表
                      w=wordcloud.WordCloud(stop_words="Python")
                      mask 指定词云形状,默认为长方形,需要引用imread()函数
                      from scipy.msc import imread
                      mk=imread("pic.png")
                      w=wordcloud.WordCloud(mask=mk)
                      background_color 指定词云图片的背景颜色,默认为黑色
                      w=wordcloud.WordCloud(background_color="white")



                      2.4、举个栗子:

                        import jieba
                        import wordcloud
                        txt="比你有钱的人,一定比你努力,比你努力的人,终有一天会比你有钱,生活本来就是平衡的,你不为赚钱付出辛苦,你就得为省钱烦恼,这不是鸡汤,是现实!。
                        w=wordcloud.WordCloud(width=1000,font_path="C:\\Windows\\Fonts\\simfang.ttf",height=700)
                        w.generate(" ".join(jieba.lcut(txt)))
                        w.to_file("computerlanguage.png")




                        运行结果:


                        3. matplotlib库学习

                        3.1matplotlib简介

                        Matplotlib 是Python中类似 MATLAB 的绘图工具,熟悉 MATLAB 也可以很快的上手 Matplotlib。

                        3.2、知识图谱



                        文章转载自心在远方AND走在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论