词云,又称文字云、标签云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。常见于博客、微博、文章分析等。
基本概念:
1.语 料 库:预料库是我们要分析的所有文档的集合
2.中文分词:指的是将一个汉字序列切成一个一个单独的词
3.停 用 词:数据处理的时候,自动过滤掉某些字或词,如:web,网站等
基本操作步骤如下:
1.构建预料库
2.语料库文件读取
3.中文分词
分词包:jiebe.cut(content)
.content:需要分词的句子
.返回segment:分词的词组
(词库可到搜狗下载,然后用深蓝词库转换工具转成无拼音的文本格式)
jieba.add_word(w) 向分词词典增加新词w
4.词频统计--分组统计各词组数量
5.移除停用词
6.绘制词云图
下面是我在jupyter上运行的代码部分:
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
from scipy.misc import imread
import imageio
from PIL import Image
from os import path
#open("abc.txt",encoding="gbk").read()
#
def grey_color_func(word,font_size,position,orientation,random_state=None,**kwargs):
return "hsl(0,0%%,%d%%)"%random.randint(60,100)
#对文本进行读取
txt=open("huozhe.txt",encoding="utf-8").read()
#对添加新的中文分词(如人名等)
#对文本进行分词处理
words = jieba.lcut(txt,cut_all = False)
#cut_all:是否采用全模式
#HMM:是否采用HMM模型
#读取停用词,创建停用词表
stopwords = [line.strip() for line in open("CS.txt").readlines()]
#stopwords.add("浩介")
#去除停用词,并统计词频
counts = {}
for word in words:
#不在停用词表内
if word not in stopwords:
#不统计单个的字
if len(word) ==1:
continue
else:
if word in counts:
counts[word] += 1
else:
counts[word] = 1
#list方法的作用是吧元组转换成列表。
items = list(counts.items())
#进行降序排序
items.sort(key = lambda x:x[1],reverse=True)
#查看前 ?? 个结果。
for i in range(30):
word,count = items[i]
print("{0:<10}{1:>5}".format(word,count))
text = open("huozhe.txt",encoding="utf-8").read()
#结巴分词
mytext = jieba.cut(text,cut_all=False) #采用精准模式,true为全模式
wt = " /".join(mytext)
bg_image = imageio.imread('demo2.jpg')
print("图片加载成功")
#设置词云相关参数
wc = WordCloud( #设置背景颜色
background_color = "white",
#设置最大显示的字数
max_words = 200,
#设置背景图片
mask = bg_image,
#此处添加停用词库——需要上门导入
stopwords = stopwords,
#设置中文字体,词云默认字体是“DroidSansMono.ttf字体库”,不支持中文
font_path = "simsun.ttf",
#设置字体最大值
max_font_size = 500,
#设置有多少种随机生成状态,即有多少种配色方案
random_state = 30,
#轮廓线宽度
contour_width=3,
#轮廓线颜色
contour_color = 'steelblue',
)
mycloud= wc.generate(wt)#生成词云
#设置生成图片的标题
plt.title("Jie_You")
#展示词云图
plt.imshow(mycloud)
#设置是否显示 X、Y 轴的下标。
plt.axis("off")
plt.show()
#保存所生成的词云图
#mycloud.to_file('test.jpg')
mycloud.to_file('test.jpg')
注:1.上图是我用于生成词云图的样图。2.预料库为 余华的短篇小说《活着》。3.停用词为CS.txt,下载自网络。另外自己又添加了部分停用词。
中文分词详细介绍【https://blog.csdn.net/jiajikang_jjk/article/details/83744936】