【上中课程】词云Word Cloud(标签云、词频分析、文本分析)的实现——应用jieba库和wordcloud库

        词云,又称文字云、标签云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。常见于博客、微博、文章分析等。

基本概念:

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

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