• 用Python实现一个词频统计(词云+图)


    第一步:首先需要安装工具python

    第二步:在电脑cmd后台下载安装如下工具:

    (有一些是安装好python电脑自带有哦)

    有一些会出现一种情况就是安装不了词云展示库

    有下面解决方法,需看请复制链接查看:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

    第三步:

    1.准备好你打算统计的文件,命名为 家.txt,保存到桌面

    2.准备一个做背景的图片,命名为girl.jpg,同样保存到桌面 

    第四步:插入代码

     1 import re # 正则表达式库
     2 import collections # 词频统计库
     3 import numpy as np # numpy数据处理库
     4 import jieba # 结巴分词
     5 import wordcloud # 词云展示库
     6 from PIL import Image # 图像处理库
     7 import matplotlib.pyplot as plt # 图像展示库
     8 
     9 # 读取文件
    10 fn = open('C://Users//Thinkpad//Desktop//家.txt','rt') # 打开文件
    11 string_data = fn.read() # 读出整个文件
    12 fn.close() # 关闭文件
    13 
    14 # 文本预处理
    15 pattern = re.compile(u'	|
    |.|-|:|;|)|(|?|"') # 定义正则表达式匹配模式
    16 string_data = re.sub(pattern, '', string_data) # 将符合模式的字符去除
    17 
    18 # 文本分词
    19 seg_list_exact = jieba.cut(string_data, cut_all = False) # 精确模式分词
    20 object_list = []
    21 remove_words = [u'', u'',u'', u'', u'随着', u'对于', u'',u'',u'',u'',u'',u' ',u'',u'',u'',u'',
    22                 u'通常',u'如果',u'我们',u'需要'] # 自定义去除词库
    23 
    24 for word in seg_list_exact: # 循环读出每个分词
    25     if word not in remove_words: # 如果不在去除词库中
    26         object_list.append(word) # 分词追加到列表
    27 
    28 # 词频统计
    29 word_counts = collections.Counter(object_list) # 对分词做词频统计
    30 word_counts_top10 = word_counts.most_common(10) # 获取前10最高频的词
    31 print (word_counts_top10) # 输出检查
    32 
    33 # 词频展示
    34 mask = np.array(Image.open('C://Users//Thinkpad//Desktop//girl.jpg')) # 定义词频背景
    35 wc = wordcloud.WordCloud(
    36     font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体格式
    37     mask=mask, # 设置背景图
    38     max_words=200, # 最多显示词数
    39     max_font_size=100 # 字体最大值
    40 )
    41 
    42 wc.generate_from_frequencies(word_counts) # 从字典生成词云
    43 image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案
    44 wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
    45 plt.imshow(wc) # 显示词云
    46 plt.axis('off') # 关闭坐标轴
    47 plt.show() # 显示图像

    (其中代码中有打开路径,每个人存的位置不一样,自己复制粘贴过来哦)

    第五步:正常运行

    (内附一张背景图)

  • 相关阅读:
    BZOJ1527 : [POI2005]Pun-point
    2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
    2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016)
    NAIPC-2016
    BZOJ2498 : Xavier is Learning to Count
    ACM ICPC Vietnam National Second Round
    XVI Open Cup named after E.V. Pankratiev. GP of Ukraine
    XVI Open Cup named after E.V. Pankratiev. GP of Peterhof
    HDU5509 : Pattern String
    BZOJ4583 : 购物
  • 原文地址:https://www.cnblogs.com/LuDuo/p/10652234.html
Copyright © 2020-2023  润新知