python如何做词云


本文摘自php中文网,作者爱喝马黛茶的安东尼,侵删。

词云已经成为当今火热的话题,究竟如何生成词云呢?本文以python生成中文词云为例,来给大家讲解如何自己作出词云。

python生成中文词云需要的两个Python类库:

jieba:中文分词分词工具

wordcloud:Python下的词云生成工具

代码组成简介

代码部分来源于其他人的博客,但是因为bug或者运行效率的原因,我对代码进行了较大的改变

代码第一部分,设置代码运行需要的大部分参数,你可以方便的直接使用该代码而不需要进行过多的修改

第二部分为jieba的一些设置,当然你也可以利用isCN参数取消中文分词

第三部分,wordcloud的设置,包括图片展示与保存

相关推荐:《python视频教程》

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

##Use the code by comment ##

关于该程序的使用,你可以直接读注释在数分钟内学会如何使用它

# - * - coding: utf - 8 -*-

from os import path

from scipy.misc import imread

import matplotlib.pyplot as plt

import jieba

# jieba.load_userdict("txt\userdict.txt")

# 添加用户词库为主词典,原词典变为非主词典

from wordcloud import WordCloud, ImageColorGenerator

# 获取当前文件路径

# __file__ 为当前文件, 在ide中运行此行会报错,可改为

# d = path.dirname('.')

d = path.dirname(__file__)

stopwords = {}

isCN = 1 #默认启用中文分词

back_coloring_path = "img/lz1.jpg" # 设置背景图片路径

text_path = 'txt/lz.txt' #设置要分析的文本路径

font_path = 'D:\Fonts\simkai.ttf' # 为matplotlib设置中文字体路径没

stopwords_path = 'stopwords\stopwords1893.txt' # 停用词词表

imgname1 = "WordCloudDefautColors.png" # 保存的图片名字1(只按照背景图片形状)

imgname2 = "WordCloudColorsByImg.png"# 保存的图片名字2(颜色按照背景图片颜色布局生成)

my_words_list = ['路明非'] # 在结巴的词库中添加新词

back_coloring = imread(path.join(d, back_coloring_path))# 设置背景图片

# 设置词云属性

wc = WordCloud(font_path=font_path,  # 设置字体

               background_color="white",  # 背景颜色

               max_words=2000,  # 词云显示的最大词数

               mask=back_coloring,  # 设置背景图片

               max_font_size=100,  # 字体最大值

               random_state=42,

               width=1000, height=860, margin=2,# 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离

               )

# 添加自己的词库分词

def add_word(list):

    for items in list:

        jieba.add_word(items)

add_word(my_words_list)

text = open(path.join(d, text_path)).read()

def jiebaclearText(text):

    mywordlist = []

    seg_list = jieba.cut(text, cut_all=False)

    liststr="/ ".join(seg_list)

    f_stop = open(stopwords_path)

    try:

        f_stop_text = f_stop.read( )

        f_stop_text=unicode(f_stop_text,'utf-8')

    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)

if isCN:

    text = jiebaclearText(text)

# 生成词云, 可以用generate输入全部文本(wordcloud对中文分词支持不好,建议启用中文分词),也可以我们计算好词频后使用generate_from_frequencies函数

wc.generate(text)

# wc.generate_from_frequencies(txt_freq)

# txt_freq例子为[('词a', 100),('词b', 90),('词c', 80)]

# 从背景图片生成颜色值

image_colors = ImageColorGenerator(back_coloring)

plt.figure()

# 以下代码显示图片

plt.imshow(wc)

plt.axis("off")

plt.show()

# 绘制词云

# 保存图片

wc.to_file(path.join(d, imgname1))

image_colors = ImageColorGenerator(back_coloring)

plt.imshow(wc.recolor(color_func=image_colors))

plt.axis("off")

# 绘制背景图片为颜色的图片

plt.figure()

plt.imshow(back_coloring, cmap=plt.cm.gray)

plt.axis("off")

plt.show()

# 保存图片

wc.to_file(path.join(d, imgname2))

总结

如果你想用该代码生成英文词云,那么你需要将isCN参数设置为0,并且提供英文的停用词表。

以上就是python如何做词云的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

mac版Python如何安装模块

Python3.6和3.7有什么区别

归纳与总结一:requests的使用

如何利用Python函数求导数

Python中的map怎么使用

Python实现对文件中图片生成带标签的txt文件方法

Python初学者常见的七种错误及解决方法

如何用Python画三角形

Python数据竖着怎么变横的?

Python实现购物系统实例介绍

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...