自己做的网站如何联网,阿里云 网站,描述建设网站的一个具体步骤,招标网站免费内容目录 一、模块介绍二、WordCloud常用的方法1. generate(self, text)2. generate_from_frequencies(frequencies)3. fit_words(frequencies)4. generate_from_text(text) 三、进阶技巧1. 设置蒙版2. 设置过滤词 WordCloud 是一个用于生成词云的 Python 库#xff0c;它可以… 内容目录 一、模块介绍二、WordCloud常用的方法1. generate(self, text)2. generate_from_frequencies(frequencies)3. fit_words(frequencies)4. generate_from_text(text) 三、进阶技巧1. 设置蒙版2. 设置过滤词 WordCloud 是一个用于生成词云的 Python 库它可以根据提供的文本数据创建出美观的视觉化图像其中文本的大小和频率成比例。同时也提供了丰富的绘制功能, 可以结合 matplotlib 库进行复杂的操作 关键的方法就是WordCloud方法 一、模块介绍
导入模块
from wordcloud import WordCloud该类的定义如下:
def __init__(self, font_pathNone, width400, height200, margin2,ranks_onlyNone, prefer_horizontal.9, maskNone, scale1,color_funcNone, max_words200, min_font_size4,stopwordsNone, random_stateNone, background_colorblack,max_font_sizeNone, font_step1, modeRGB,relative_scalingauto, regexpNone, collocationsTrue,colormapNone, normalize_pluralsTrue, contour_width0,contour_colorblack, repeatFalse,include_numbersFalse, min_word_length0, collocation_threshold30):... ... 其中各个参数和属性的说明如下:
font_path: 字符串, 词云中字体格式文件的路径
用于字体的字体路径OTF或TTF。默认为Linux机器上的DroidSansMono路径。如果你在其他操作系统上或没有这个字体你需要调整这个路径。
width: 整数默认400, 画布的宽度。
height: 整数默认200, 画布的高度。
prefer_horizontal: 浮点数默认0.90
尝试水平适应相对于垂直适应的比例。如果 prefer_horizontal 1算法会在单词不适应时尝试旋转单词。目前没有内置方法仅获取垂直单词。
mask: 数组或None默认None
如果不为None给出在何处绘制单词的二进制掩模。如果mask不为None将忽略width和height并使用mask的形状。所有白色#FF或#FFFFFF条目将被视为“屏蔽”而其他条目则可以自由绘制。
contour_width: 浮点数默认0
如果mask不为None且contour_width 0绘制掩模轮廓。
contour_color: 颜色值默认black, 掩模轮廓颜色。
scale: 浮点数默认1
计算与绘制之间的缩放。对于大的词云图像使用scale而不是更大的画布尺寸会显著更快但可能导致单词的拟合更粗糙。
min_font_size: 整数默认4, 使用的最小字体大小。当这个大小没有更多空间时停止。
font_step: 整数默认1, 字体的步长。font_step 1可能会加速计算但可能给出较差的拟合。
max_words: 数量默认200, 最大单词数。
stopwords: 字符串集合或None
将被消除的单词。如果为None将使用内置的STOPWORDS列表。如果使用generate_from_frequencies则忽略。
background_color: 颜色值默认black, 词云图像的背景颜色。
max_font_size: 整数或None默认None
最大单词的最大字体大小。如果为None则使用图像的高度。
mode: 字符串默认RGB
当mode为RGBA且background_color为None时将生成透明背景。
relative_scaling: 浮点数默认auto
单词相对频率对字体大小的重要性。如果relative_scaling0只考虑单词排名。如果relative_scaling1频率是两倍的单词将有两倍的大小。如果你想同时考虑单词频率和不仅仅它们的排名relative_scaling大约0.5通常看起来不错。如果为auto则除非repeat为真否则设置为0.5此时设置为0。版本更新:: 2.0默认现在是auto。
color_func: 可调用默认None
有参数word, font_size, position, orientation, font_path, random_state的可调用函数为每个单词返回一个PIL颜色。覆盖colormap。有关指定matplotlib色谱的信息请参见colormap。要创建单色的词云使用
color_funclambda *args, **kwargs: white。单色也可以使用RGB代码指定。例如
color_funclambda *args, **kwargs: (255,0,0)设置颜色为红色。
regexp: 字符串或None可选
在process_text中分割输入文本为标记的正则表达式。如果指定为None则使用r\w[\w]。如果使用generate_from_frequencies则忽略。
collocations: 布尔默认True
是否包括两个单词的搭配二元组。如果使用generate_from_frequencies则忽略。
colormap: 字符串或matplotlib色谱默认viridis
从每个单词随机抽取颜色的matplotlib色谱。如果指定了color_func则忽略。
normalize_plurals: 布尔默认True
是否去除单词末尾的s。如果为True一个单词以s结尾和不以s结尾都出现时去掉以s结尾的单词并将它的计数加到没有s结尾的版本上——除非单词以ss结尾。如果使用generate_from_frequencies则忽略。
repeat: 布尔默认False
是否重复单词和短语直到达到max_words或min_font_size。
include_numbers: 布尔默认False, 是否将数字作为短语包含进来。
min_word_length: 整数默认0, 单词必须有的最少字母数才能被包含。
collocation_threshold: 整数默认30
大二元组必须具有高于此参数的Dunning似然性搭配分数才能被计为大二元组。默认值30是任意的。属性
words_: 字符串到浮点数的字典, 关联频率的单词令牌。2.0后words_ 是一个字典
layout_: 元组列表字符串, 浮点数, 整数, 整数, 整数, 整数, 颜色
编码拟合的词云。对于每个单词它编码字符串、规范化频率、字体大小、位置、方向和颜色。频率由最常出现的单词归一化。颜色格式为rgb(R, G, B)。二、WordCloud常用的方法
1. generate(self, text)
接收一个字符串作为输入计算文本中各单词的频率并生成相应的词云。这是最基础也是最常用的方法之一。
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 示例文本
text This is a simple example showing how to generate a word cloud using the generate method. Generate method uses the input text directly.# 创建WordCloud对象
wordcloud WordCloud(width800, height800, max_words100, background_colorwhite).generate(text)# 显示词云
plt.figure(figsize(8, 8), facecolorNone)
plt.imshow(wordcloud)
plt.axis(off)
plt.tight_layout(pad0)
plt.show()2. generate_from_frequencies(frequencies)
直接接收一个字典其中键是单词值是该单词的频率用来生成词云。这适用于已经计算好词频的情况。
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 示例文本
dic {This: 120, example: 90, showing: 80, word: 70, cloud: 60, Generate: 50, method: 40, text: 30, input: 20, directly: 10}
# 创建WordCloud对象
wordcloud WordCloud(width800, height800, max_words100, background_colorwhite).generate_from_frequencies(dic)# 显示词云
plt.figure(figsize(8, 8), facecolorNone)
plt.imshow(wordcloud)
plt.axis(off)
plt.tight_layout(pad0)
plt.show()3. fit_words(frequencies)
这个方法接收一个字典其中键是单词值是对应的频率然后根据这些频率生成词云。类似于generate_from_frequencies
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 示例文本
dic {This: 120, example: 90, showing: 80, word: 70, cloud: 60, Generate: 50, method: 40, text: 30, input: 20, directly: 10}
# 创建WordCloud对象
wordcloud WordCloud(width800, height800, max_words100, background_colorwhite).fit_words(dic)# 显示词云
plt.figure(figsize(8, 8), facecolorNone)
plt.imshow(wordcloud)
plt.axis(off)
plt.tight_layout(pad0)
plt.show()4. generate_from_text(text)
接收一个字符串作为输入计算文本中各单词的频率并生成相应的词云。类似于generate。
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 示例文本
text This is a simple example showing how to generate a word cloud using the generate method. Generate method uses the input text directly.# 创建WordCloud对象
wordcloud WordCloud(width800, height800, max_words100, background_colorwhite).generate_from_text(text)# 显示词云
plt.figure(figsize(8, 8), facecolorNone)
plt.imshow(wordcloud)
plt.axis(off)
plt.tight_layout(pad0)
plt.show()三、进阶技巧
1. 设置蒙版
蒙版设置, 设置蒙版之后, 词云的形状就会显示为设置的蒙版形状
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import numpy as np
from PIL import Imagemask_image np.array(Image.open(./static/img.png))# 示例文本
text This is a simple example showing how to generate a word cloud using the generate method. Generate method uses the input text directly.# 创建WordCloud对象
wordcloud WordCloud(width800, height800, maskmask_image, max_words100, background_colorwhite)wordcloud.generate_from_text(text)# 显示词云
plt.figure(figsize(8, 8), facecolorNone)
plt.imshow(wordcloud)
plt.axis(off)
plt.tight_layout(pad0)
plt.show()2. 设置过滤词
对于一些不希望出现的词, 可以通过设置stopword过滤, 实现方法有两种
在切词阶段, 将过滤词剔除, 过滤词要求是一个集合{}在生成词云阶段, 使用stopword参数添加过滤词数组, 注意, 此时如果通过generate_from_frequencies方法生成, 此参数则忽略 方式一:
stop_words {?, , 有, 其, 非常, 的, 为, 所, , 和, ”, , \\u3000, 乎, , 这, 不, 在, 比, “, , 而, 很, 被, 我, 那}
datas [... ...] # 词云数据
cloud_data []
for data in datas:qdatas jieba.lcut(data)qdata_filter [word for word in qdatas if word not in excludes]cloud_data.extend(qdata_filter)wordcloud WordCloud(font_path./static/msyh.ttc,background_colorwhite,colormapmagma,max_font_size40,random_state42,max_words300,# 宽width1000,# 高height880,mask mask_image
).generate( .join(cloud_data))方式二:
stop_words {?, , 有, 其, 非常, 的, 为, 所, , 和, ”, , \\u3000, 乎, , 这, 不, 在, 比, “, , 而, 很, 被, 我, 那}
datas [... ...] # 词云数据wordcloud WordCloud(font_path./static/msyh.ttc,background_colorwhite,colormapmagma,max_font_size40,random_state42,max_words300,# 宽width1000,# 高height880,mask mask_image,-- 设置过滤词stopwordsstop_words
).generate(datas)