广告位联系
返回顶部
分享到

使用python生成定制化词云的代码

python 来源:互联网 作者:佚名 发布时间:2024-09-04 22:29:22 人浏览
摘要

数据可视化已成为我们理解复杂信息的关键工具。词云,作为一种流行的数据可视化形式,能够将大量文本数据中的关键词以视觉化的方式呈现,让我们迅速捕捉到文本的核心。本文将通过P

数据可视化已成为我们理解复杂信息的关键工具。词云,作为一种流行的数据可视化形式,能够将大量文本数据中的关键词以视觉化的方式呈现,让我们迅速捕捉到文本的核心。本文将通过Python编程语言,使用jieba和wordcloud库,并基于斗破苍穹第一章的内容,生成一个具有特定形状的词云。

环境搭建

在开始之前,确保你的Python环境中安装了必要的库。如果尚未安装,可以通过以下命令进行安装:

1

2

3

4

5

pip install matplotlib

jieba

wordcloud

numpy

pillow

读取与准备文本

我们将使用《斗破苍穹第一章》的文本作为示例。首先,确保文本文件以UTF-8编码保存,以避免编码错误:

1

2

with open('斗破苍穹第一章.txt', 'r', encoding='utf-8') as file:

    text = file.read()

中文分词

中文文本处理的第一步是分词。我们使用jieba库,它是中文文本分词的常用工具:

1

2

3

import jieba

cut_text = jieba.cut(text)

word = ' '.join(cut_text)

定义停用词

在生成词云之前,我们需要定义一组停用词,以排除那些在文本中频繁出现但对分析没有太大意义的词:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

stopwords={

    '了', '的', '和', '是', '我', '你', '这', '就', '有', '在', '也', '一', '不', '人', '都', '一个',

    '我们', '他', '她', '得', '地', '很', '到', '说', '要', '去', '上', '说', '知道', '能', '看',

    '自己', '出来', '过', '着', '听', '觉得', '但是', '而且', '因为', '所以', '虽然', '如果', '就是',

    '只有', '可以', '什么', '哪', '哪个', '那些', '什么', '怎么', '怎样', '这么', '那么', '这样', '那样',

    '一点', '一些', '一点', '一些', '一下', '一下', '一会儿', '一点儿', '现在', '然后', '再', '曾经',

    '曾经', '曾经', '曾经', '或者', '或者', '以及', '或者', '跟', '跟', '同', '和', '与', '跟', '同',

    '跟', '与', '跟', '和', '与', '而且', '并且', '或者', '还是', '或者', '或者', '又', '也', '还',

    '再', '另外', '那',

    '然后',

    '接着',

    '之后',

    '起来',

    # ... 其他语气助词 ...

}

选择词云形状

词云的形状可以是任何形式,本例中我们将使用一张图片来定义词云的形状:

1

2

3

4

5

from PIL import Image

import numpy as np

 

pic = Image.open('test1.png')

pic_array = np.array(pic)

现在,我们将所有元素结合在一起,生成词云:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

import wordcloud

from matplotlib import colors

 

color_list = ['black', 'red', 'blue', 'green']

colormap = colors.ListedColormap(color_list)

 

wc = wordcloud.WordCloud(

    mask=pic_array,

    font_path='simhei.ttf',

    background_color='white',

    colormap=colormap,

    stopwords=stopwords

)

 

wc.generate(word)

显示词云

最后,我们使用matplotlib库来显示我们生成的词云:

1

2

3

plt.imshow(wc, interpolation='bilinear')

plt.axis('off')

plt.show()

结语

通过上述步骤,我们不仅学习了如何使用Python生成词云,还了解了如何通过jieba进行中文分词,以及如何使用wordcloud库自定义词云的生成。

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

import matplotlib.pyplot as plt

import jieba

import wordcloud

from PIL import Image

import numpy as np 

from matplotlib import colors

 

# 读取文本文件

str1 = open('斗破苍穹第一章.txt', 'r', encoding='utf-8').read()  # 确保使用正确的编码

 

cut_text = jieba.cut(str1)    # 分词处理

word = ' '.join(cut_text)       # 以空格分割文本

 

 

color_list = ['black', 'red','blue','green']

colormap = colors.ListedColormap(color_list)  # matplotlib色图

 

# 使用Pillow读取图片

pic = Image.open('test1.png')  # 读取图片

 

# 将Pillow图像转换为numpy数组

pic_array = np.array(pic)

 

wc = wordcloud.WordCloud(

    mask=pic_array,               # 使用转换后的数组作为背景图形

    font_path='simhei.ttf',       # 可以改成自己喜欢的字体

    background_color='white',     # 词云图背景颜色可以换成自己喜欢的颜色

    colormap=colormap,

    stopwords={

        '了', '的', '和', '是', '我', '你', '这', '就', '有', '在', '也', '一', '不', '人', '都', '一个',

        '我们', '他', '她', '得', '地', '很', '到', '说', '要', '去', '上', '说', '知道', '能', '看',

        '自己', '出来', '过', '着', '听', '觉得', '但是', '而且', '因为', '所以', '虽然', '如果', '就是',

        '只有', '可以', '什么', '哪', '哪个', '那些', '什么', '怎么', '怎样', '这么', '那么', '这样', '那样',

        '一点', '一些', '一点', '一些', '一下', '一下', '一会儿', '一点儿', '现在', '然后', '再', '曾经',

        '曾经', '曾经', '曾经', '或者', '或者', '以及', '或者', '跟', '跟', '同', '和', '与', '跟', '同',

        '跟', '与', '跟', '和', '与', '而且', '并且', '或者', '还是', '或者', '或者', '又', '也', '还',

        '再', '另外', '那',

        '然后',

        '接着',

        '之后',

        '起来',

        # ... 其他语气助词 ...

    }

)

 

wc.generate(word)  # 生成词云

 

# 显示词云图

plt.imshow(wc, interpolation='bilinear')  # 使用bilinear插值可以使词云看起来更平滑

plt.axis('off')

plt.show()


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计