惯例,首先po上需要用到的工具的github链接吧:
链接:word_cloud
介绍:A little word cloud generator in Python. Read more about it on the blog post or the website. The code is Python 2, but Python 3 compatible.链接:jieba
介绍:“结巴”中文分词:做最好的 Python 中文分词组件
代码展示
人生苦短,先po代码!
1 | # encoding=utf-8 |
代码讲解
分两个部分:
jieba:
先看这段代码:1
word_freq = dict(jieba.analyse.extract_tags(text_source, topK=100, withWeight=True))
重点在jieba.analyse.extract_tags
这个方法,里面有3个参数:
- text_source:原始博文的字符数据
- topK:这个指的是出现最多的100个关键字,你可以调节这个数值
- withWeight:这个是让数据返回时带上对应的频率值,也是这个代码中的一个关键点。
由于返回的数据是一个list
,而词云的方法generate_from_frequencies
接收的是一个dict
,所以最后把它转化为一个字典。
WordCloud:
这里我们只要注意WordCloud
这个类初始化时要填入的参数:1
2
3
4
5
6
7
8
9wc = WordCloud(
background_color='black', # 背景底色
mask=bg_pic, # 设置背景图
max_words=2000, # 设置最大显示的字数
font_path=r"C:\Windows\Fonts\AdobeHeitiStd-Regular.otf",
# 设置中文字体,使得词云可以显示(词云默认字体是“DroidSansMono.ttf字体库”,不支持中文)
max_font_size=200, # 设置字体最大值
random_state=50, # 设置有多少种随机生成状态,即有多少种配色方案
)
每个参数后面都加上了注释,使用技巧上是,可以修改background_color
,max_font_size
,random_state
这几个参数来调整图片显示的效果。
font_path
这里我用的是我电脑上的字体路径
bg_pic
这里我是使用了from scipy.misc import imread
scip中的imread
方法,把图片以数据的形式读入,这样就可以把要展示的文字以图片轮廓的形式展现出来。
输出/展示
1 | #展示词云图 |
我们可以展示词云,也可以导出到文件,中间我还用正则把博文的文件名提取出来作为词云图的文件名。
最后,一张自定义关于博文的词云图就生成在了代码的本地目录了。
词云图嵌入到博文中
查看了Next的官网,看到了一个内置标签,找到突破容器宽度限制的图片这个标签的使用1
2
3
4
5
6
7
8
9<!-- HTML方式: 直接在 Markdown 文件中编写 HTML 来调用 -->
<!-- 其中 class="full-image" 是必须的 -->
<img src="/image-url" class="full-image" />
<!-- 标签 方式,要求版本在0.4.5或以上 -->
{% fullimage /image-url, alt, title %}
<!-- 别名 -->
{% fi /image-url, alt, title %}
使用以下:1
{% fi /image-url, alt, title %}
只要设置/image-url
改为图片的路径。
我的所有图片放到了Hexo\source\uploads
这个文件夹内的。
而Next的主题是有把uploads这个文件路径放到环境变量中的
只要写如:/uploads/<filename>.jpg
路径就可以了。
最后,一幅自定义的词云图就可以展示在你的博客里咯,
这个技能你get√到了吗? 赶紧用起来吧!