用Python做结巴分词和词云图

        入职一个月,领导让我用爬虫数据做一份竞品分析报告,除了用数据条做对比分析,折线图做趋势分析,南丁格尔玫瑰图做类目构成分析,气泡图做GMV分析词云图做品质问题分析,箱线图做价格带分析,此外,我还想起了去年玩过jieba分析可以派上用场了,在做词频分析方面​。代码如下:

先做分词,自动拆解出各种常见词汇出现的频次:

# 导入库
import jieba
# 加载文本数据
txt = open(r"C:\Users\Administrator\Desktop\分词.txt","r",encoding="utf-8").read()
# 分词
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word] = counts.get(word,0)+1
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
# 获取前多少个词  注意数组下标不要越界
for i in range(10000):
    word,count = items[i]
    
# 参考自: https://www.zhihu.com/question/424396838/answer/1509880609
# print 应该小写,然后.format及其后面的东西应该包含在print()的小括号内你的format后面少了东西,应该是两个变量名,
# 比如是para1, para2,应该写成print("{0:<10}{1:>5}".format(para1, para2)),其中{0},{1}分别指代format里的para1, 
# para2<表示左对齐,>表示右对齐,所以{0:<10}表示para1左对齐占10个位置,{1:>5}表示para2右对齐占5个位置
    print("{0:<10}{1:>5}".format(word,count))

 

可视化渲染(生成词云图的图片):

#  导入库
import jieba
import wordcloud
from imageio import imread

# 读取图片
mask = imread(r"C:\Users\Administrator\Desktop\五角星.jpg")

# 读取数据
f = open(r"C:\Users\Administrator\Desktop\分词.txt","r",encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)

# 自定义词云元素
w = wordcloud.WordCloud(font_path="msyh.ttc",mask = mask,width = 800,height=600,background_color="yellow")

# 导出生成词云图
w.generate(txt)
w.to_file(r"C:\Users\Administrator\Desktop\生成的词云图.png")

# 渲染效果
word_cloud.generate(text_cut)
plt.subplots(figsize=(18,12))
plt.imshow(word_cloud)
plt.axis("off")

 

# 完整代码

# 导入相关的库
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

# 加载并处理分词
text = open(r"C:\Users\Administrator\Desktop\分词.txt",encoding ="utf-8").read()
text = text.replace('\n',"").replace("\u3000","")
text_cut = jieba.lcut(text)
text_cut = ' '.join(text_cut)

stop_words = open(r"C:\Users\Administrator\Desktop\分词.txt",encoding ="utf-8").read().split("\n")

# 读取背景图片,也可以输入中文
background = Image.open(r"C:\Users\Administrator\Desktop\五角星.jpg")
graph = np.array(background)

word_cloud = WordCloud(font_path="msyh.ttc",  # 原参数 simsun.ttc  /   msyh.ttc
                       background_color="white",
                       mask=graph, # 指定词云的形状
                       stopwords=stop_words)

# 渲染效果
word_cloud.generate(text_cut)
plt.subplots(figsize=(12,8))
plt.imshow(word_cloud)
plt.axis("off")

 

 

参考自​:https://www.bbsmax.com/A/amd0w0bD5g/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章