文本主题与分类(一)--WORD_CLOUD词云的使用

1.导入数据包,分词包,等初始设置

import warnings
warnings.filterwarnings("ignore")#忽略警告 https://blog.csdn.net/u013544265/article/details/28617527
import jieba    #分词包
import numpy    #numpy计算包
import codecs   #codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode 
import pandas as pd  
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib
matplotlib.rcParams['figure.figsize'] = (10.0, 5.0)
from wordcloud import WordCloud#词云包

2.读入数据

df = pd.read_csv("./data/entertainment_news.csv", encoding='utf-8')#读入数据
df.head()

在这里插入图片描述

3.对数据进行清洗和格式处理

  • 去除空白行
df = df.dropna() #去除空缺行
  • 将文本内容生成一维列表
content=df.content.values.tolist()#content生成一维列表语句
content

在这里插入图片描述

  • 分离出所有的词语便于统计
segment=[]#用于放置所有词语
for line in content:
    try:
        segs=jieba.lcut(line)
        for seg in segs:
            if len(seg)>1 and seg!='\r\n':#字数大于1(可以去除标点和单个字),不等于换行符 
                segment.append(seg)#将单词加入列表中
    except:
        print(line)
        continue
  • 将读入的一维列表转化为dataframe格式使用pandas进行数据操作
words_df=pd.DataFrame({'segment':segment})#将列表转化为可以处理的dataframe格式
words_df.head()

在这里插入图片描述

  • 加入停用词
#words_df.head()
stopwords=pd.read_csv("data/stopwords.txt",index_col=False,quoting=3,sep="\t",names=['stopword'], encoding='utf-8')#quoting=3全不引用 https://www.cnblogs.com/datablog/p/6127000.html
#index_col->不使用第一列作为行索引,控制csv中的引号常量,  分隔符, 设置列名
print(stopwords)
#stopwords.head()
words_df=words_df[~words_df.segment.isin(stopwords.stopword)]#选出不在停用词里的词
words_df.head()
  • 进行词频统计
words_stat=words_df.groupby(by=['segment'])['segment'].agg({"计数":numpy.size})#agg是基于列的聚合操作,groupby是基于行的集合操作,统计分组个数
words_stat.head()

在这里插入图片描述

  • 将词条放回dataframe中并进行排序
words_stat=words_stat.reset_index().sort_values(by=["计数"],ascending=False)#词条返回dataframe中,并且以计数作为排序方法,降序排序
words_stat.head()

在这里插入图片描述

4.形成词云图

#根据词频做词云
wordcloud=WordCloud(font_path="data/simhei.ttf",background_color="white",max_font_size=80)#手动给了一个微软的字体,背景色白色,最大的字号多大
word_frequence = {x[0]:x[1] for x in words_stat.head(1000).values}#取出前1000个词语做词云,构建词典词条+词频
wordcloud=wordcloud.fit_words(word_frequence)#fit一下制作词云
plt.imshow(wordcloud)#显示

在这里插入图片描述

5.自定义模板的词云图

#自定义背景模板 https://blog.csdn.net/xky1306102chenhong/article/details/81569863
from scipy.misc import imread
matplotlib.rcParams['figure.figsize'] = (15.0, 15.0)
from wordcloud import WordCloud,ImageColorGenerator#引进词云+颜色生成器
bimg=imread('image/entertainment.jpeg')#读入图片
wordcloud=WordCloud(background_color="white",mask=bimg,font_path='data/simhei.ttf',max_font_size=200)#背景色,底版模型,字体, 最大字号
word_frequence = {x[0]:x[1] for x in words_stat.head(1000).values}#生成词频字典
wordcloud=wordcloud.fit_words(word_frequence)
bimgColors=ImageColorGenerator(bimg)#提取背景颜色
plt.axis("off")#不显示坐标尺寸
plt.imshow(wordcloud.recolor(color_func=bimgColors))#重置背景色

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值