Python + wordcloud + jieba 十分钟学会生成中文词云


当前第2页 返回上一页

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))

20170527170453706.jpg

20170527170355021.png

20170527170622129.png

总结

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

以上就是Python + wordcloud + jieba 十分钟学会生成中文词云的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

Python阶乘求和的方法

怎么删除Python

Python命令行参数是什么

Python编译器有哪些

Python中如何创建一个空字典

Python flask大刀解决跨域问题

Python爬虫如何设置代理ip

Python工作好找吗

Python中index的用法是什么

Python实现的端口扫描功能

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




打赏

取消

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

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

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

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

评论

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