小项目 使用jieba分词 并根据背景图片生成词云图

jieba 分词 + 词云图

  • 安装所需要的库
    • 导包
  • 详细代码解释
        • 定义分词函数
        • 初始化Wordcloud
        • 计算词频
        • 绘制默认颜色的词云图
        • 生成与背景图片颜色的词云

安装所需要的库

我所用的是anaconda 的notebook 所以有一些库不需要格外安装

pip install jieba
pip install wordcloud

导包

from wordcloud import WordCloud, ImageColorGenerator
import jieba
from scipy.misc import imread
from collections import Counter

详细代码解释

stopwords = {}
isCN = 0 #默认启用英文分词
back_coloring_path = r"xxxx" # 设置背景图片路径
imgname1 = r"./WordCloudDefautColors.png" # 保存的图片名字1(只按照背景图片形状)
imgname2 = r"./WordCloudColorsByImg.png"# 保存的图片名字2(颜色按照背景图片颜色布局生成)
my_words_list = ['xxxx'] # 在结巴的词库中添加新词
stopwords_path = r 'xxxxx'  # 定义停用词的文件路径
back_coloring = imread(r"xxxx")# 设置背景图片-----back_coloring 为3维数组

定义分词函数

def jiebaclearText(text):
    mywordlist = []                                
    seg_list = jieba.cut(text, cut_all=False)
    liststr="/ ".join(seg_list)                      #未经处理的文本分词结果列表
     f_stop = open(stopwords_path, encoding='utf-8')     #打开停用词词表
     try:
         f_stop_text = f_stop.read( )                      #获取停用词词表中的内容
     finally:
         f_stop.close( )
    f_stop_seg_list = f_stop_text.split('\n')
    for myword in liststr.split('/'):      #获取初次分词结果中的每一个词
        if not(myword.strip() in f_stop_seg_list) and len(myword.strip())>1:
            mywordlist.append(myword)
    return ''.join(mywordlist)

初始化Wordcloud

wc = WordCloud(font_path=r'C:\Windows\Fonts\COOPBL.TTF',  # 设置字体
               background_color="white",  # 背景颜色
               max_words=2000,  # 词云显示的最大词数
               mask=back_coloring,  # 设置背景图片
               max_font_size=100,  # 字体最大值
               min_font_size=20,
               random_state=42,
               width=900, height=800, margin=2,)

计算词频

## 方法一:
word_dict = Counter(mywordlist)
## 方法二:
import nltk
 word_dict = nltk.FreqDist(mywordlist)

绘制默认颜色的词云图

wc.generate_from_frequencies(worddict)
image_colors = ImageColorGenerator(back_coloring)       # 从背景图片生成颜色值
plt.figure(figsize=(18,18))
# 形状与背景图片一致,颜色为默认颜色的词云
plt.imshow(wc)
plt.axis("off")
plt.show()     # 绘制词云
wc.to_file(imgname1)    # 保存图片

生成与背景图片颜色的词云

wc.generate_from_frequencies(worddict)
image_colors = ImageColorGenerator(back_coloring)        # 从背景图片生成颜色值
plt.figure(figsize=(18,18))
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
plt.show()
wc.to_file(imgname2)    # 保存图片

原文 请参考 https://blog.csdn.net/tanlangqie/article/details/80493888

你可能感兴趣的:(数据分析,词云图,jieba分词,词频统计,文本分析,绘制词云图)