提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、数据概览
二、文本处理
1、引入库
2、读入数据
3、处理数据
三、词云图绘制
前言
在上一章节进行简单爬虫学习后,继续拓展爬虫能力,并尝试抓取了一些文本数据。因此,本章节对这些文本数据进行简单分析、制作词云图。
词云:通过形成“关键词云层”或“关键词渲染”,对网络文本中出现频率较高的“关键词”的视觉上的突出。
一、数据概览
本文的数据处理基础是一份文件名为 danmus_data 的csv文件,共有1922行文本数据。简单观察这些数据,可以发现其中有长、短句,包含各种符号、空格,因此后续处理需要考虑这些情况。
二、文本处理
安装 wordcloud 、 jieba 包
1、引入库
import pandas as pd
import csv # 打开csv文件
import jieba # 中文分词
import wordcloud # 词云图绘制
from PIL import Image # 用于打开词云背景图片
import numpy as np # 用于将图片转化为数组
2、读入数据
以csv格式打开文件,并使用其数据创建一个列表。
with open('danmus_data.csv','r',encoding='utf-8-sig') as f:
danmus_list=list(csv.reader(f))
# print(type(danmus_list))
3、处理数据
首先,文本中存在空格,需要对其进行清除。
danmus_clean1=[str(danmus_list).replace(' ','')]
# print(danmus_clean1)
其次,利用jieba对文本进行分词。
此处需要拓展jieba库的相关知识,来源:jieba分词的最详细解读_qq_45288176的博客-CSDN博客_jieba库为什么叫结巴
danmus_seg=''.join(danmus_clean1) # 将文本数据转换为字符串格式 words=list(jieba.lcut(danmus_seg)) # 利用jieba库进行分词 # print(type(words),words)
分词结果展示:其中有不少标点符号
再次,去掉分词结果中的单字
danmus_clean2 = [word for word in words if len(word)>1] # 保留长度>1的变量 # print(danmus_clean2)
最后,导入停用词库,对文本中的停用词进行过滤。
此处需要拓展停用词的相关知识,停用词:停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词),停用词主要包括英文字符、数字、数学字符、标点符号及使用频率特高的单汉字等。来源:百度百科
由于停用词过滤输出结果为字符串,还需要将字符串转化为列表的数据格式,便于下一步进行词语图绘制。
停用词
with open('stopwords.txt','r',encoding='utf-8') as sw:
stopwords_list=list(csv.reader(sw)) # 打开停用词表并转换为列表格式
outstr='' # 设置空字符串,用于储存停用词表过滤后的分词
for word in danmus_clean2: # 遍历分词后列表中的每一个单词
if word not in stopwords_list: # 如果单词不在停用词表中
if word != 't': # 如果单词不为制表符
outstr += word # 将该单词加入字符串中
outstr += ' ' # 将结果以空格隔开
danmus_clean3=outstr.split() # 将结果转换为list格式
# print(type(danmus_clean3),danmus_clean3)
三、词云图绘制
image = numpy.array(Image.open('background.png')) # 打开图片文件并转换为数字格式,图片为文件需要存储在工作目录中
wordCloud = wordcloud.WordCloud(
width = 1600, #词云的高度
height = 1200, #词云的宽度
font_path = "HGBTH_CNKI.TTF", # 字体路径 在C:WindowsFonts目录下找一个中文样式的字体复制到工作目录
background_color = "white", # 背景颜色
mask = image # 图片的轮廓 #可选属性,不选择默认是矩形词云
).generate(" ".join(danmus_clean3))
wordCloud.to_file("词云图.png")
print('词云图已生成')
词语图背景选用了策导的照片(抠图后)
最后呈现的词云图效果~



