加入收藏 | 设为首页 | 会员中心 | 我要投稿 许昌站长网 (https://www.0374zz.cn/)- 专属主机、负载均衡、智能边缘云、云防火墙、数据加密!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

怎么用Python做中文词云?一文带你看懂云词的实现方法

发布时间:2022-02-25 13:29:24 所属栏目:语言 来源:互联网
导读:怎么用Python做中文词云?一些朋友比较好奇中文词云的实现,因此这篇文章就主要给大家介绍Python实现中文词云的方法,下文的示例代码对大家了解Python实现词云的方法有一定的帮助,感兴趣的朋友接下来一起跟随小编来学习一下吧。 一、相关模块 jieba:中文分
      怎么用Python做中文词云?一些朋友比较好奇中文词云的实现,因此这篇文章就主要给大家介绍Python实现中文词云的方法,下文的示例代码对大家了解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、简单图案
 
 
 
    代码:
 
import wordcloud
 
# 词云使用的文字
text = "lemon"
 
# 使用wordcloud.WordCloud类,并传入相关的参数
wc = wordcloud.WordCloud(background_color="white", repeat=True)
wc.generate(text)
 
# 保存图片
wc.to_file('test1.png')
 
    2、自定义图片
 
 
 
    代码:
 
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、从文本读取
 
 
 
    代码:
 
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')

(编辑:许昌站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读