cedit多行文本设置透明背景会重叠_python:电商用户评价文本分析(wordcloud+jieba)...
一、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")
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)...相关推荐
- cedit多行文本设置透明背景会重叠_PPT脱白教程11期【形状篇2】聊聊形状和文本框的那些事儿~...
[前言] 上一篇简单聊了聊形状在PPT中发挥的作用,今天就深入了解一下PPT的功能. 18年参加 @秦阳 老师第一届<我给母校送模板>的活动中,@Bobbie 老师在分享中讲过一句话:文本 ...
- R可视化包ggplot2设置透明背景实战
R可视化包ggplot2设置透明背景实战 目录 R可视化包ggplot2设置透明背景实战 #ggplot2设置透明背景语法 #ggplot2绘图
- 透明怎么弄_最新版微信如何设置透明背景?这样设置,效果令人惊喜
微信叒更新了,你的微信有更新吗?听说这次更新是安卓端的先更新,苹果端的还不能更新.今天小编要跟大家分享的是新版微信应该如何设置透明背景,不清楚微信透明背景长什么样子的?没关系,给你看看设置透明背景之后 ...
- vue 背景透明度_Visual Studio 2017 设置透明背景图
一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...
- Visual Studio 2019 设置透明背景图(傻瓜式教学)
Visual Studio 2019 设置透明背景图 一.前言 二.设置背景图片的扩展程序 三.编辑主题 一.前言 给大家分享一下,如何为VS2019设置透明背景图.下面是一张设置后的图片. 二.设置 ...
- notepad设置背景颜色_Word2017中如何设置透明背景图和取消背景图
如何在Word2017中设置透明背景图 1.打开Word文档 2.选择"插入"-"形状",选择并绘制你所需要的背景图形状 3.选中所绘的形状,点击右键,选择&q ...
- VSCode设置透明背景,解决透明度导致全局字体模糊问题
VSCode 设置透明背景,解决透明度的问题 但这个方法有点个缺点,就是透明度的问题,照片透明度越高,那么字体的透明度也高,导致代码或者菜单选项看不清 网上找到的大多数教程都是使用这个方法 /*bac ...
- 在互联网大数据的背景下,社交电商的发展
随着互联网的发展,大数据也应时代而生.从社交媒体到企业个人,每时每刻都通过互联网产生大量的数据. 如今互联网企业是怎么利用大数据的? 例如抖音:喜欢健身的人,抖音就给他推送的就是健身内容,而喜欢美食, ...
- css设置透明背景,背景色透明度
背景透明度 1.设置透明背景色rgba background-color:rgba(220,38,38,0.2); 2.通过opacity属性改变透明度 background: #43bff5; op ...
- android自定义透明圆形,Android给TextView设置透明背景、圆角边框
第一种方法:在drawable文件夹下新建一个文件设置背景样式 代码: 在drawable文件夹下面新建text_view_border.xml <?xml version="1.0& ...
最新文章
- Windows 7 64位机上OpenCV2.4.3的编译、安装与配置
- hdu 1404/zoj 2725 Digital Deletions 博弈论
- 中国计算机学会CCF推荐国际学术会议和期刊目录-数据库/数据挖掘/内容检索
- python批量生成,用python批量生成简单的xml文档
- vue中v-on指令的使用之Vue知识点归纳(四)
- uni-app的事件传参
- 微型计算机的输出有,微型计算机必不可少的输入/输出设备是()。 - 百科题库网...
- 转:不同的行业和工作的真实情况是怎样的?
- 分享8个超酷的HTML5相册动画应用
- MATLAB 常见取整函数
- MATLAB中四阶单位矩阵,matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列......
- Win10系统安装office后excel等文件图标显示异常
- 深度理解相机中的各个参数(对比度、饱和度、亮度、曝光度、锐度)
- CSS特效三:简单的便签效果
- 工具类-随即获取姓名-ZH
- 卫哲:99%创业者在这3方面经常会犯错误
- 乾坤物联带你了解UWB发展史
- dbNSFP:非同义突变功能注释数据库
- PHP易支付网站源码+免签约接口
- mysql的mvcc和lbcc