一、wordcloud:文本分析

1、导入wordcloud和数据可视化包matplotlib:

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
%config InlineBackend.figure_format="svg"

2、导入文本:这里以三国演义小说为例

#读取文本
text = open(r"C:UsersAdministratorDesktopsg.txt",encoding="UTF-8").read()

3、使用WordCloud绘图,WordCloud参数如下:

  • font_path : string //字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = r"C:WindowsFontssimfang.ttf"
  • width : int (default=400) //输出的画布宽度,默认为400像素
  • height : int (default=200) //输出的画布高度,默认为200像素
  • prefer_horizontal : float (default=0.90) //词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 )
  • mask : nd-array or None (default=None) //如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。
  • 除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png'),
  • 背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。
  • scale : float (default=1) //按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。
  • min_font_size : int (default=4) //显示的最小的字体大小
  • font_step : int (default=1) //字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差。
  • max_words : number (default=200) //要显示的词的最大个数
  • stopwords : set of strings or None //设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS
  • background_color : color value (default=”black”) //背景颜色,如background_color='white',背景颜色为白色。
  • max_font_size : int or None (default=None) //显示的最大的字体大小
  • mode : string (default=”RGB”) //当参数为“RGBA”并且background_color不为空时,背景为透明。
  • relative_scaling : float (default=.5) //词频和字体大小的关联性
  • color_func : callable, default=None //生成新颜色的函数,如果为空,则使用 self.color_func
  • regexp : string or None (optional) //使用正则表达式分隔输入的文本
  • collocations : bool, default=True //是否包括两个词的搭配
  • colormap : string or matplotlib colormap, default=”viridis” //给每个单词随机分配颜色,若指定color_func,则忽略该方法。
  • fit_words(frequencies) //根据词频生成词云【frequencies,为字典类型】
  • generate(text) //根据文本生成词云
  • generate_from_frequencies(frequencies[, ...]) //根据词频生成词云
  • generate_from_text(text) //根据文本生成词云
  • process_text(text) //将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies) )
  • recolor([random_state, color_func, colormap]) //对现有输出重新着色。重新上色会比重新生成整个词云快很多。
  • to_array() //转化为 numpy array
  • to_file(filename) //输出到文件
#绘图
#创建画板
plt.figure(figsize=(10,8),dpi=80)
#字体路径
font = r"C:WindowsFontssimfang.ttf"
#绘制词云图
wc=WordCloud(font_path=font,width=800,height=500,scale=2,mode="RGBA",background_color=None).generate(text)
#显示词云
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg1.png")

二、添加jieba包进行分词

1、根据文本生成词云图

jieba分词模块有三种分词模式:

  • 1.全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。
  • 2.精确模式:试图将句子最精确地切开,适合文本分析(类似LTP分词方式),较为贴合实际工作需求。
  • 3.搜索引擎模式:在精确模式的基础上对长词再次切分,提高召回率,适合用于搜索引擎分词,更加细化了。

jieba分词方法如下:

  • jieba.cut 接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式或精准模式;HMM 参数用来控制是否使用 HMM 模型。
  • jieba.cut_for_search 接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8。

注意点:

  • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及jieba.lcut_for_search 直接返回 list。
  • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

1.1、导入包

#导入jieba包
import jieba

1.2、jieba全模式、精准模式以及搜索引擎模式案例示范。

#案例
seg_list = jieba.cut("小明来到杭州阿里巴巴" , cut_all=True)
print("全模式:"+"/".join(seg_list))  #全模式
seg_2 = jieba.cut("小明来到杭州阿里巴巴",cut_all=False)
print("精准模式:"+"/".join(seg_2)) #精准模式
seg_3 = jieba.cut("小明来到杭州阿里巴巴")
print("默认模式:"+",".join(seg_3))  #默认模式
seg_4 = jieba.cut_for_search("李华来自杭州,毕业于浙江大学,现在在日本早稻田大学深造")
print("搜索引擎模式:"+",".join(seg_4)) #搜索引擎模式

jieba.cut()默认模式是精准模式。

1.3、读入文本

#打开文本
text=open(r"C:UsersAdministratorDesktopsg.txt",encoding="UTF-8").read()

jieba默认模式对文本进行分词

#中文分词
text = " ".join(jieba.cut(text))
print(text[:50])

1.4、绘图

#绘图
#创建画板
plt.figure(figsize=(10,8),dpi=80)
#创建词云图
wc=WordCloud(font_path=font,width=800,height=500,scale=2,mode="RGBA",background_color=None).generate(text)
#生成图像
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg2.png")

对比先前看出,经过jieba.cut()分词之后,显示的词更加符合中文的词语划分习惯。

  • 自定义背景图片显示词云图:
#增加词云图形象
#创建画板
plt.figure(figsize=(10,8),dpi=80)
#自定义背景图片
mask = plt.imread(r"C:UsersAdministratorDesktoptimg.jpg")
#生成词云图
wc=WordCloud(mask=mask,font_path=font,width=800,height=500,scale=2,mode="RGBA",background_color=None).generate(text)#font_path=font缺少会乱码
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg3.png")

自定义背景原图
显现结果

注意点:与分析英文文本不同,中文文本如果不加font_path参数,中文无法显示。

#增加词云图形象
#创建画板
plt.figure(figsize=(10,8),dpi=80)
#自定义背景图片
mask = plt.imread(r"C:UsersAdministratorDesktoptimg.jpg")
#生成词云图
wc=WordCloud(mask=mask,width=800,height=500,scale=2,mode="RGBA",background_color=None).generate(text)#font_path=font缺少会乱码
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg3.png")

对于中文路径,在”C:WindowsFonts“路径下选择字体,但是直接复制字体名称过来,发现还是读入错误,这是因为字体显示的名称不一定是字体的引用名称。

解决方法:选择目标字体,右击选择属性,显示的名称才是我们目标的字体。

1.5 从自定背景图片中获取颜色

#从图片中获取颜色
#导入包
from wordcloud import ImageColorGenerator
plt.figure(figsize=(10,8),dpi=80)
#绘图
mask=plt.imread(r"C:UsersAdministratorDesktoptimg.jpg")
wc=WordCloud(mask=mask,font_path=font,width=800,height=500,scale=2,mode="RGBA",background_color=None).generate(text)
#从背景图片获取颜色
image_color = ImageColorGenerator(mask)
wc.recolor(color_func=image_color)
#显示
plt.imshow(wc,interpolation="nearest")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg4.png")

2、提取关键词权重,根据词的频率生成词云图

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,allowPOS=())

参数说明:

  • 1.sentence 为待提取的文本。
  • 2.topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20。
  • 3.withWeight 为是否一并返回关键词权重值,默认值为 False。
  • 4.allowPOS 仅包括指定词性的词,默认值为空,即不筛选,若提供则仅返回符合词性要求的关键词。

jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件。

2.1 导入分析包

#导入分析包
import jieba.analyse

2.2 读取文本

#读取文本
text = open(r"C:UsersAdministratorDesktopsg.txt",encoding="UTF-8").read()

2.3 生成词频

#生成词频
freq = jieba.analyse.extract_tags(text,topK=200,withWeight=True)
print(freq[:5])
#转换成字典
freq = {i[0]:i[1] for i in freq}
for i,(k,v) in enumerate(freq.items()) :print({k:v},end="")if i ==10:break

2.4 绘制词云图

#绘图
plt.figure(figsize=(10,8),dpi=80)
mask=plt.imread(r"C:UsersAdministratorDesktoptimg.jpg")
font = r"C:WindowsFontssimhei.ttf"
#绘图
wc=WordCloud(mask=mask,font_path=font,width=800,height=500,mode="RGBA",background_color=None).generate_from_frequencies(freq)
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg5.png")

注意点:从文本中提取词频后,直接导入生成词云图,但是报错:list object has no attribute items。需要对结果进行再次转化,改成字典类型。

转换字典类型后,生成词云图正常。转化代码:freq = {i[0]:i[1] for i in freq}。

3、实战案例:电商女士服装评论

1、导入包

#导入数据分析包
import pandas as pd

2、读取数据

#读取数据
data = pd.read_csv(r"E:dataWomens-Clothing-E-Commerce-ReviewsWomens Clothing E-Commerce Reviews.csv",dtype="object",encoding="UTF-8")
data.head()

3、数据清洗

3.1 选取子集

#选取子集
reviewData=data["Review Text"]
reviewData.head()

3.2 去重

#去重
reviewData=reviewData.dropna()
reviewData.shape

4、获取文本

#获取文本数据
#遍历文本
text=""
for i in reviewData.values:i=i.lower().replace(".","").replace("!","").replace(",","")#去除符号text = text+" ".join(jieba.cut(i))

5、根据文本生成词云图

#根据文本生成词云图
#创建画板
plt.figure(figsize=(10,8),dpi=80)
#生成词云图
wc = WordCloud(width=800,height=500,scale=2,background_color=None,mode="RGBA").generate(text)
#显示视图
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg6.png")

正则表达式获取文本:

  • 导入包
#导入re包
import re

  • 正则表达式去除标点符号,获取文本
#获取文本
text=""
for i in reviewData.values:#正则表达式去除符号temp = re.compile(r",.!")i=temp.sub("",i)text = text+" ".join(jieba.cut(i))

  • 绘制词云图
#绘图
plt.figure(figsize=(10,8),dpi=80)
mask=plt.imread(r"C:UsersAdministratorDesktoptimg1.jpg")
wc = WordCloud(mask=mask,width=800,height=500,scale=2,background_color=None,mode="RGBA").generate(text)
#从图片获取颜色
image_color = ImageColorGenerator(mask)
wc.recolor(color_func=image_color)
#显示视图
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg7.png")

dress自定义背景图

6、根据词频生成词云图

  • 获取文本
#获取文本
text=""
for i in reviewData.values:temp = re.compile(r",.!")i = temp.sub("",i.lower())text=text+"".join(jieba.cut(i))

  • 获取词频
#获取词频
freq=jieba.analyse.extract_tags(text,topK=100,withWeight=True)
print(freq[:5])

  • 转换为字典dict
#转换为字典
freq = {i[0]:i[1] for i in freq}
for i,(k,v) in enumerate(freq.items()):print({k:v},end="")if i ==10:break

  • 绘制词云图
#绘图
#创建画板
plt.figure(figsize=(10,8),dpi=80)
#自定义背景图片
mask=plt.imread(r"C:UsersAdministratorDesktoptimg1.jpg")
#绘制词云图
wc=WordCloud(mask=mask,width=800,height=500,mode="RGBA",background_color=None,stopwords=("was","my","so","but")).generate_from_frequencies(freq)
#获取照片颜色
image_color=ImageColorGenerator(mask)
wc.recolor(color_func=image_color)
#显示图片
plt.imshow(wc,interpolation="nearest")
plt.axis("off")
plt.savefig(r"C:UsersAdministratorDesktopsg8.png")

对比文本生成的词云图和词频生成的词云图,所获得的词还是有差别的,根据文本获得词云图更符合我们的需求。

cedit多行文本设置透明背景会重叠_python:电商用户评价文本分析(wordcloud+jieba)...相关推荐

  1. cedit多行文本设置透明背景会重叠_PPT脱白教程11期【形状篇2】聊聊形状和文本框的那些事儿~...

    [前言] 上一篇简单聊了聊形状在PPT中发挥的作用,今天就深入了解一下PPT的功能. 18年参加 @秦阳 老师第一届<我给母校送模板>的活动中,@Bobbie 老师在分享中讲过一句话:文本 ...

  2. R可视化包ggplot2设置透明背景实战

    R可视化包ggplot2设置透明背景实战 目录 R可视化包ggplot2设置透明背景实战 #ggplot2设置透明背景语法 #ggplot2绘图

  3. 透明怎么弄_最新版微信如何设置透明背景?这样设置,效果令人惊喜

    微信叒更新了,你的微信有更新吗?听说这次更新是安卓端的先更新,苹果端的还不能更新.今天小编要跟大家分享的是新版微信应该如何设置透明背景,不清楚微信透明背景长什么样子的?没关系,给你看看设置透明背景之后 ...

  4. vue 背景透明度_Visual Studio 2017 设置透明背景图

    一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...

  5. Visual Studio 2019 设置透明背景图(傻瓜式教学)

    Visual Studio 2019 设置透明背景图 一.前言 二.设置背景图片的扩展程序 三.编辑主题 一.前言 给大家分享一下,如何为VS2019设置透明背景图.下面是一张设置后的图片. 二.设置 ...

  6. notepad设置背景颜色_Word2017中如何设置透明背景图和取消背景图

    如何在Word2017中设置透明背景图 1.打开Word文档 2.选择"插入"-"形状",选择并绘制你所需要的背景图形状 3.选中所绘的形状,点击右键,选择&q ...

  7. VSCode设置透明背景,解决透明度导致全局字体模糊问题

    VSCode 设置透明背景,解决透明度的问题 但这个方法有点个缺点,就是透明度的问题,照片透明度越高,那么字体的透明度也高,导致代码或者菜单选项看不清 网上找到的大多数教程都是使用这个方法 /*bac ...

  8. 在互联网大数据的背景下,社交电商的发展

    随着互联网的发展,大数据也应时代而生.从社交媒体到企业个人,每时每刻都通过互联网产生大量的数据. 如今互联网企业是怎么利用大数据的? 例如抖音:喜欢健身的人,抖音就给他推送的就是健身内容,而喜欢美食, ...

  9. css设置透明背景,背景色透明度

    背景透明度 1.设置透明背景色rgba background-color:rgba(220,38,38,0.2); 2.通过opacity属性改变透明度 background: #43bff5; op ...

  10. android自定义透明圆形,Android给TextView设置透明背景、圆角边框

    第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建text_view_border.xml <?xml version="1.0& ...

最新文章

  1. Windows 7 64位机上OpenCV2.4.3的编译、安装与配置
  2. hdu 1404/zoj 2725 Digital Deletions 博弈论
  3. 中国计算机学会CCF推荐国际学术会议和期刊目录-数据库/数据挖掘/内容检索
  4. python批量生成,用python批量生成简单的xml文档
  5. vue中v-on指令的使用之Vue知识点归纳(四)
  6. uni-app的事件传参
  7. 微型计算机的输出有,微型计算机必不可少的输入/输出设备是()。 - 百科题库网...
  8. 转:不同的行业和工作的真实情况是怎样的?
  9. 分享8个超酷的HTML5相册动画应用
  10. MATLAB 常见取整函数
  11. MATLAB中四阶单位矩阵,matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列......
  12. Win10系统安装office后excel等文件图标显示异常
  13. 深度理解相机中的各个参数(对比度、饱和度、亮度、曝光度、锐度)
  14. CSS特效三:简单的便签效果
  15. 工具类-随即获取姓名-ZH
  16. 卫哲:99%创业者在这3方面经常会犯错误
  17. 乾坤物联带你了解UWB发展史
  18. dbNSFP:非同义突变功能注释数据库
  19. PHP易支付网站源码+免签约接口
  20. mysql的mvcc和lbcc

热门文章

  1. 4.企业安全建设指南(金融行业安全架构与技术实践) --- 内控合规管理
  2. 11.go 环境变量
  3. 1.Ubuntu Server下搭建LAMP环境
  4. Extjs MVC讲解
  5. Influx kafka
  6. Ubuntu1404+Django1.9+Apache2.4部署配置1安装
  7. 你知道数据库索引的工作原理吗?
  8. 34_注解的定义与反射调用
  9. 10月11 小结: 你又贪玩了不是?
  10. Yii 2.0 权威指南 (5) 应用结构