wordcloud基本使用关键步骤

所需要的库

主要需要的就两个,一个是wordcloud自己,还有一个就是画图所需的plt

from wordcloud import WordCloud
import matplotlib.pyplot as plt

输入文本

text = open('constitution.txt').read()
#文本是空格隔开的词汇集合

调用接口生成词云

wordcloud.generate(text) #调用接口生成词云 步骤如下
generate(self, text)
=>
self.generate_from_text(text)
=>
words = self.process_text(text) #预处理和词频统计
self.generate_from_frequencies(words) #生成词云

预处理细节process_text

  1. 分词、保留单词字符、去除单字符
  2. 去除停用词
  3. 去除后缀s
  4. 去除纯数字
  5. 统计一元和二元词频
返回的结果是字典dict(string, int)分词的token和出现的次数

生成词云generate_from_frequencies

  • 对词计数进行排序,并归一化到0~1之间,得到词频
  • 创建图片并确定font_size初始值
  • 给self.words_赋值,记录的是出现频率最高的前max_words个词,以及对应的归一化后的词频,即dict(token, normalized_frequency)
  • 画出灰度图:词频越大,font_size越大;根据生成的随机数来决定字的水平/垂直方向。若随机数小于self.prefer_horizontal则为水平方向,否则为垂直方向;如果空间不足,优先考虑旋转方向,其次考虑将字体变小
  • 给self.layout_赋值,记录的是词和词频、字体大小、位置、方向、以及颜色,即list(zip(frequencies, font_sizes, positions, orientations, colors))
最终将信息呈现在图上
  • wordcloud.to_file(filename) 保存到文件
  • plt.imshow(wordcloud) 直接画出
完整代码如下
from wordcloud import WordCloud,STOPWORDS
import matplotlib.pyplot as plt
words = ["abstr_number","abstr_image","abstr_code_section","https","github"] 
#words为自定义的停用词 自行添加
stopwords = set(STOPWORDS)
for word in words:
    stopwords.add(word) #添加停用词```
strr = open(u'filename','r',encoding='utf-8').read()
#filename自定义
wordcloud = WordCloud(
    random_state=30, #配色方案
    background_color="white",
    width=1500,
    height=960,
    margin=5,
    stopwords=stopwords
).generate(strr)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

以下二者等价

方法一:

wordcloud = WordCloud(
#    mask=backgroud_Image, 背景图片
    random_state=30, #配色方案
    background_color="white",
    width=1500,
    height=960,
    margin=5,
    stopwords=stopwords
#    ,colormap = 'Blues'
).generate(str)
plt.imshow(wordcloud)

方法二:

wordcloud = WordCloud(
#    mask=backgroud_Image, 背景图片
    random_state=30, #配色方案
    background_color="white",
    width=1500,
    height=960,
    margin=5,
    stopwords=stopwords
#    ,colormap = 'Blues'
)
process_word = WordCloud.process_text(wordcloud,str)
ans = WordCloud.generate_from_frequencies(wordcloud,process_word)
plt.imshow(ans)

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值