5.2 数据可视化分析——词云图绘制

本文详细介绍了如何使用jieba库进行中文分词,包括基本用法、读取文本内容分词、按指定长度提取词及统计高频词汇。同时,通过wordcloud库展示了如何绘制词云图,包括基本形状、特定形状以及特定颜色的词云图。最后,以新浪微博内容为例,演示了从爬取到绘制词云图的完整流程。

5.2.1 用jieba库实现中文分词

  • 要从中文文本中提取高频词汇,需要使用中文分词(Chinese Word Segmentation)技术。分词是指将一个文本序列切分成一个个单独的词。我们知道,在英文的行文中,单词之间以空格作为分隔符,而中文的词语之间没有一个形式上的分解符,因此,中文分词比英文分词要复杂一些。在Python中,可以利用jieba库来快速完成中文分词。

1.jieba 库的安装与基本用法

import jieba
word = jieba.cut('我爱北京天安门')
for i in word:
    print(i)

注意:用cut()函数分词得到的word不是一个列表,而是一个迭代器。所谓迭代器其实和列表很相似,可以把它理解成一个“隐身的列表”。但是迭代器里的元素要通过for循环语句来访问,所以第3行代码和第4行代码不能改写成print(word)。

2.读取文本内容并进行分词

  • 下面先来讲解如何从文本文件中读取内容并进行分词,代码如下:
import jieba
report = open('信托行业报告.txt','r').read()
words = jieba.cut(report)
for word in words:
    print(word)

3.按指定长度提取分词后的词

  • 这里以提取长度大于等于4个字的词为例进行讲解,代码如下:
import jieba
report = open('信托行业报告.txt','r').read()
words = jieba.cut(report)
report_words = []
for word in words: #将长度大于等于4个字的词放入列表
    if len(word) >= 4:
        report_words.append(word)
print(report_words)

4.统计高频词汇

  • 统计高频词汇并不复杂,用collections库中的Counter()函数就可以完成,代码如下:
import jieba
report = open('信托行业报告.txt','r').read()
words = jieba.cut(report)
report_words = []
for word in words: #将长度大于等于4个字的词放入列表
    if len(word) >= 4:
        report_words.append(word)
        
from collections import Counter
result = Counter(report_words)
print(result)

  • 这样便可以打印输出每个词的出现次数。如果只想看出现次数排名前50位的词,可以用most_common()函数来完成,将上述第10行代码改写成如下代码:
import jieba
report = open('信托行业报告.txt','r').read()
words = jieba.cut(report)
report_words = []

for word in words: #将长度大于等于4个字的词放入列表
    if len(word) >= 4:
        report_words.append(word)

from collections import Counter
result = Counter(report_words).most_common(50) #取最多的50组
print(result)
  • 将result打印输出,结果如下图所示。可以看到,里面的一些高频词还是能体现整个行业的某些情况的。例如,最近几年行业年度报告里频繁提到“信息技术”与“人工智能”这类词,那么它们也的确体现了行业的未来发展趋势。
    在这里插入图片描述

5.2.2 用wordcloud库绘制词云图

1.wordcloud库的基本用法

  • 以前面做了长度筛选的分词结果report_words为例讲解wordcloud库的基本用法,代码如下:
  • 如果wordcloud安装失败,可参考python中安装wordcloud的方法
# 1.读取文本内容,并用jieba库中的cut()函数进行分词
import jieba
report = open('信托行业报告.txt','r').read()
words = jieba.cut(report)

# 2.通过for循环语句提取列表words中长度大于等于4个字的词
report_words = []
for word in words: #将长度大于等于4个字的词放入列表
    if len(word) >= 4:
        report_words.append(word)
#print(report_words)

# 3.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值