温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Python怎么实现一个词云功能

发布时间:2021-05-08 16:49:36 来源:亿速云 阅读:202 作者:Leah 栏目:开发技术

使用Python怎么实现一个词云功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Python的优点有哪些

1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。

一、相关模块

jieba:中文分词

wordcloud :Python词云库

imageio:读取图形数据

安装:

pip install jieba
pip install wordcloud
pip install imageio

二、wordcloud四大类

功能
WordCloud([font_path, width, height, …])生成和绘制词云对象
ImageColorGenerator(image[, default_color])基于图片的色彩
random_color_func([word, font_size, …])随机生成颜色
get_single_color_func(color)创建一个颜色函数,它返回一个色调和饱和度

三、wordcloud类

1、WordCloud类

class wordcloud.WordCloud(
    font_path=None, width=400, height=200, margin=2, 
    ranks_only=None, prefer_horizontal=0.9, mask=None, 
    scale=1, color_func=None, max_words=200, min_font_size=4, 
    stopwords=None, random_state=None, background_color='black', 
    max_font_size=None, font_step=1, mode='RGB', relative_scaling='auto', 
    regexp=None, collocations=True, colormap=None, normalize_plurals=True, 
    contour_width=0, contour_color='black', repeat=False, include_numbers=False, 
    min_word_length=0, collocation_threshold=30)

2、WordCloud参数详解

参数详解
font_path词云图的字体路径(OTF或TTF格式)
width画布的宽度、默认为400,如果mask不为空时,设置为mask获取图片的大小
height画布的高度,默认为200,如果mask不为空时,设置为mask获取图片的大小
prefer_horizontal默认值0.9;当值<1时,遇到不合适的地方时,算法将词体自动旋转
mask默认为None;如果不为空,指定了画布的图形,则width和height值不生效,使用提供的图形的大小
contour_width如果mask不为空,并且contour_width>0,将描绘出mask获取图片的轮廓,值越大,轮廓的线越粗
contour_color使用Mask时,描绘图片轮廓的颜色
scale图片生成后放大缩小时的分辨率
min_font_size词云图显示的最小字体,默认为4
max_font_size词云图显示的最大字体
max_words词云显示的最大词数
font_step字体步长
stopwords不显示的词,如果没有设置,则使用默认的内置的STOPWORdS列表;如果使用generate_from_frequencies参数,则忽略
background_color背景颜色
mode默认为"RGB",当mode="RGBA"并且background_color为None时,将会显示透明背景
relative_scaling字体大小与词频的关系,默认值为auto
color_func默认为None,color_func=lambda *args, **kwargs:(255,0,0)词云的字体颜色将这设置为红色
regexp使用正则切分,默认为r"\w[\w']+",如果使用generate_from_frequencies则此参数不生效
collocations是否包含两个词的搭配,默认为True,如果使用generate_from_frequencies则此参数不生效
colormap设置颜色的参数,默认为"viridis",如果使用color_func参数,则此参数不生效
normalize_plurals是否删除尾随的词,比如's,如果使用generate_from_frequencies参数,则此参数不生效
repeat是否重复词组直到设置的最大的词组数
include_numbers是否包含数字,默认我False
min_word_length最小数量的词,默认为0
collocation_threshold默认为30,整体搭配的评分等级

3、WordCloud类方法详解

方法功能
fit_words()根据词频生成词云
generate_from_frequencies()根据词频生成词云
generate()根据文本生成词云
generate_from_text()根据文本生成词云
process_text()将长文本分词,并去除屏蔽词
recolor()对输出颜色重新着色
to_array()转换为numpy数组
to_file()保存为图片文件
to_svg()保存为SVG(可缩放矢量图形)

四、实例

1、简单图案

使用Python怎么实现一个词云功能

代码:

import wordcloud

# 词云使用的文字
text = "lemon"

# 使用wordcloud.WordCloud类,并传入相关的参数
wc = wordcloud.WordCloud(background_color="white", repeat=True)
wc.generate(text)

# 保存图片
wc.to_file('test1.png')

2、自定义图片

使用Python怎么实现一个词云功能

代码:

import wordcloud

# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
import imageio
mk = imageio.imread("333.jpg")

# 词云使用的文字
text = "lemon"

# 使用wordcloud.WordCloud类,并传入相关的参数
wc = wordcloud.WordCloud(background_color="white", repeat=True,mask=mk)
wc.generate(text)

# 保存图片
wc.to_file('test1.png')

3、从文本读取

使用Python怎么实现一个词云功能

代码:

import wordcloud
import jieba

# 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
import imageio
mk = imageio.imread("chen.jpg")

# 使用wordcloud.WordCloud类,并传入相关的参数
wc = wordcloud.WordCloud(background_color="white",
                         prefer_horizontal=0.5,
                         repeat=True,
                         mask=mk,
                         font_path='/System/Library/Fonts/STHeiti Light.ttc',
                         contour_width=2,
                         contour_color='pink',
                         collocation_threshold=100,
                         )

# 对来自外部文件的文本进行中文分词,得到string
f = open('gong.txt', encoding='utf-8')
txt = f.read()
txtlist = jieba.lcut(txt)
string = " ".join(txtlist)

# 将string变量传入w的generate()方法,给词云输入文字
wc.generate(string)

# 保存图片
wc.to_file('test.png')

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI