使用jieba、wordcloud做扶摇小说词云图

使用jieba、wordcloud做扶摇小说词云图

一、环境

1.win7、anaconda3.5.1。
2.python包 pandas、numpy 、matplotlib、PIL、jieba、wordcloud。
3.以扶摇小说为素材,用jieba分词,然后以wordcloud展示。本文有两种实现办法:(1)用结巴分词,然后从分词明细直接画词云图;(2)分词、做词频统计、筛选做词云图。

二、方法一

  分词,从明细数据直接画词云图。代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import jieba
from wordcloud import WordCloud, ImageColorGenerator

filename = “扶摇.txt”
txt = open(filename, “r”, encoding=”utf8”, errors=”ignore”).read()
words = jieba.cut(txt)
result = “/”.join(words) # 只有用”/”或” “等分割开的,才能用于构建词云图

停用词

停用词,使用在图表中将不显示

no_name = [“一个”, “一样”, “那些”, “起来”, “早已”, “然后”, “知道”, “便是”, “今日”, “这个”, “像是”, “身子”, “如今”,”出去”,”居然”,”有点”,”只有”,”回来”,”身体”,”一句”,”别人”,”再次”,”动作”,”为了”,”之下”,”一只”,”一半”, “这个”,”便是”,”倘若”,”突然”,”只是”,”不敢”,”他们”,”我们”,”见到”,”声音”,”心想”,”如此”,”只见”,”之中”,”不能”,”一个”, “知道”, “什么”, “不想”, “不是”, “甚么”, “一声”, “咱们”, “别人”, “一句”, “不知”]

初始化自定义背景图片

bg_img = “fuyao.jpg” #注图片背景ps成白色
image = Image.open(bg_img)
graph = np.array(image)

wordcloud配置

wc = WordCloud(
font_path=”simhei.ttf”, # 设置字体
background_color=’white’, # 背景颜色
width=image.size[0], # 设置宽,我这里设置和背景图片宽一样
height=image.size1, # 设置高,我这里设置和背景图片高一样
max_font_size=70, min_font_size=10, # 字体最大/最小值
stopwords=no_name, # 设置停用词,不在词云图中显示
max_words=2000, # 设置最大显示的字数
mode=’RGBA’
)
wc.generate(result)

绘制文字的颜色以背景图颜色为参考

image_color = ImageColorGenerator(graph) # 从背景图片生成颜色值
wc.recolor(color_func=image_color)

保存图片的名字

img_name = filename[:filename.rfind(“.”):] + “_词云图” + “.png”

生成图片

wc.to_file(img_name)

显示图片

plt.figure(“词云图”) # 指定所绘图名称
plt.imshow(wc) # 以图片的形式显示词云
plt.axis(“off”) # 关闭图像坐标系
plt.show()

三、方法二

  分词、做词频统计、筛选做词云图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import jieba
from wordcloud import WordCloud, ImageColorGenerator

文件地址,默认程序和txt文件放在同一文件夹下

filename = “扶摇.txt”
txt = open(filename, “r”, encoding=”utf8”, errors=”ignore”).read()

停用词(可以用在jieba分词时,也可以使用在词云图作图时)

stopwords = [“一个”, “一样”, “那些”, “起来”, “早已”, “然后”, “知道”, “便是”, “今日”, “这个”, “像是”, “身子”, “如今”,”出去”,”居然”,”有点”,”只有”,”回来”,”身体”,”一句”,”别人”,”再次”,”动作”,”为了”,”之下”,”一只”,”一半”, “这个”,”便是”,”倘若”,”突然”,”只是”,”不敢”,”他们”,”我们”,”见到”,”声音”,”心想”,”如此”,”只见”,”之中”,”不能”,”一个”, “知道”, “什么”, “不想”, “不是”, “甚么”, “一声”, “咱们”, “别人”, “一句”, “不知”]

使用jieba分词

segmentDFs=[]
segs=jieba.cut(txt)
for seg in segs:
if len(seg) > 1:
segmentDFs.append(seg)
segmentDF = pd.DataFrame({‘segmentDFs’: segmentDFs})

print(segmentDF)

按文章进行词频统计

segStat_wc = segmentDF.groupby(by=[‘segmentDFs’])[‘segmentDFs’].agg({‘计数’: len}).reset_index().sort_values(‘计数’,ascending=False)

获取排序在前1000的词语

wc_dict=segStat_wc[:1000].set_index(‘segmentDFs’).to_dict()

初始化自定义背景图片

bg_img = “fuyao.jpg” #注图片背景ps成白色
image = Image.open(bg_img)
graph = np.array(image)

wordcloud配置

wc = WordCloud(
font_path=”simhei.ttf”, # 设置字体
background_color=’white’, # 背景颜色
width=image.size[0], # 设置宽,我这里设置和背景图片宽一样
height=image.size1, # 设置高,我这里设置和背景图片高一样
max_font_size=70, min_font_size=10, # 字体最大/最小值
stopwords=stopwords, # 设置停用词,不在词云图中显示
max_words=2000, # 设置最大显示的字数
mode=’RGBA’
)

有频数统计时,画词云图使用generate_from_frequencies函数,而只有明细数据时,使用generate

wc.generate_from_frequencies(wc_dict[‘计数’])

wc.to_file(r”wordcloud1.png”)

绘制文字的颜色以背景图颜色为参考

image_color = ImageColorGenerator(graph) # 从背景图片生成颜色值
wc.recolor(color_func=image_color)

保存图片的名字

img_name = filename[:filename.rfind(“.”):] + “_词云图2” + “.png”

生成图片

wc.to_file(img_name)

显示图片

plt.figure(“词云图”) # 指定所绘图名称
plt.imshow(wc) # 以图片的形式显示词云
plt.axis(“off”) # 关闭图像坐标系
plt.show()

参考文档:
https://sysheng.cn/article/34.html
文档地址:
https://github.com/aibing0803/learningpublic


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值