python统计文章中高频词汇并生成词云

LZ的同事写的文章经常被公司或者上级部门发表,LZ对此觉得同事写的文章一定有什么套路或者经常使用的词句,所以LZ收集了6篇同事的文章希望统计出其文章的高频词语以此可以效仿。

首先,把6篇文章放在同一个Text文档中,准备好词云需要的背景图片(有没有无所谓),然后,开始撸代码。。。。

import jieba.analyse #引入词库
import cv2 #图片处理
from PIL import Image
#from scipy.misc import imread
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator #词云
import docx
from matplotlib.font_manager import *

import codecs
import jieba
from collections import Counter  #统计
import matplotlib.pyplot as plt #数据可视化工具
from wordcloud import WordCloud
import imageio

# 1.读取数据
with open("E:\Desktop\pxx1.txt", "rb") as f:
    text = f.read()

# 2.基于 TextRank 算法的关键词抽取,top100
keywords = jieba.analyse.textrank(text, topK=100, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))
file = ",".join(keywords)  #逗号分隔


list = jieba.cut(text)
c = Counter()

    #给分词定义条件进行筛选统计词频
for x in list:
    if len(x) > 1 and x != '\r\n':
        c[x] += 1

with open(r'E:\Desktop\bb.txt', 'w', encoding='gbk') as fw:
    for (k,v)in c.most_common():
        fw.write(k+' '+str(v)+'\n')
    fw.close()


# 指定中文字体,不然中文显示框框
font = r'./font/simhei.ttf'
print(file)
# 指定背景图,随意
image = cv2.imread('G:/Picture/413x626.jpg')

wc = WordCloud(
    font_path=font,
    background_color='white',  # 背景色
    mask=image,  # 背景图
    stopwords=STOPWORDS,  # 设置停用词
    max_words=100,  # 设置最大文字数
    max_font_size=100,  # 设置最大字体
    width=800,
    height=1000,
)

# 生成词云
image_colors = ImageColorGenerator(image)
wc.generate(file)

# 使用matplotlib,显示词云图
plt.imshow(wc)  # 显示词云图
plt.axis('off')  # 关闭坐标轴
plt.show()

# 保存图片
wc.to_file('news.png')


fig, ax = plt.subplots()
myfont = r'./font/simhei.ttf'
N = 20
words = []
counts = []
for line in open(r'E:\Desktop\bb.txt'):
    line.strip('\n')
    words.append(line.split(' ')[0])
    counts.append(int(line.split(' ')[1].strip('\n')))
colors = ['#FA8072']

#绘制前十条数据(N=20)
rects = ax.barh(words[:N], counts[:N], align='center', color=colors)
ax.set_yticklabels(words[:N],fontproperties="SimHei")
ax.invert_yaxis()
ax.set_title('pxx文章中的高频词汇TOP20',fontproperties="SimHei", fontsize=17)
ax.set_xlabel(u"出现次数",fontproperties="SimHei")
plt.show()

效果:

python统计文章中高频词汇并生成词云_第1张图片

python统计文章中高频词汇并生成词云_第2张图片

嗯。。。看来在文章里强调客户和工作很重要

你可能感兴趣的:(Python数据分析,python,数据可视化)