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()
效果:
嗯。。。看来在文章里强调客户和工作很重要