小白都能学会的Python基础 第六讲:综合实战2 - 大数据分词与词云图绘制

1.华小智系列 - Python基础(案例版)

第六讲:综合实战2 - 大数据分词与词云图绘制

配套书籍:《Python大数据分析与机器学习商业案例实战》第16章
中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个个单独的词,我们知道,在英文的行文中,单词之间是以空格作为分界符的,而中文的词语则没有一个形式上的分界符,因此在分词这一层面,中文比英文要复杂一些。

1、大数据分词技巧

1.jieba库的安装
在进行文本大数据分词前首先需要安装一个中文分词库jieba库,安装方法可以通过PIP安装法来安装,以Windows系统为例:Win + R快捷键调出运行框,输入cmd后回车,然后在弹出框中输入“pip install jieba”的方法来进行安装,如果安装失败可以尝试清华镜像pip安装法。
安装完jieba库之后就可以利用它进行分词操作了。首先回顾下13.3.2节演示的简单案例,然后我们再进行一些更深入的讲解,演示代码如下:

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

其中第1行代码引入jieba库;第2行代码通过cut()函数对里面的文本内容进行分词,分词后的结果赋给变量word;第3和4行代码通过for循环,打印分词后的结果,结果如下所示:

我
爱
北京
天安门

中文分词的核心就是利用jieba库的cut()函数来进行分词,上面演示的案例较为简单,下面以一个较长的文本内容来进行中文分词及词频统计。

2.读取文本内容,并进行分词
信托行业报告
(电脑浏览器端打开,然后点击可以下载)

下图所示为2017年的信托行业年度报告,其共有约20万字,对于业务分析人员来说,他其实关心的是这近20万字的报告中哪些内容更重要,一个简单实现手段就是看哪些词出现的频率最高,那么其对应内容的重要程度可能就越高,如果要实现这么一个功能,就需要先进行中文大数据分词然后进行词频统计。
在这里插入图片描述
对该txt文件中的文本内容进行分词的代码如下:

import jieba
report = open('信托行业年度报告.txt', 'r').read()
words = jieba.cut(report)  

第1行引入jieba库;第2行通过open()函数打开txt文件,参数’r’表示以读取方式打开txt文件,并通过read()函数读取其中的文本内容;第3行这通过cut()函数对读取到的文本进行分词操作。
注意这里得到的words并不是一个列表,而是一个迭代器,所谓迭代器其实和列表很相似,为方便理解,可以把它理解成一个“隐身的列表”。想要获取迭代器里的元素,不能够直接通过print(words)来获取结果,而需要通过for循环才来查看迭代器里的元素,如下所示:

for word in words:
    print(word)

此时的结果如下图所示:
在这里插入图片描述
这样就能把分完的词一一打印出来了,但现实生活中我们可能只需要其中的三字词汇或者四字词汇,那么这时候就需要用到下面的处理手段了。到这里,其实分词这一关键步骤已经做完了,下面就是把结果更好地呈现出来了。
3.提取分词后的4字词
有的时候我们并不关心所有长度的词汇,因为有的两字词汇虽然出现的频率多,但其实可能没有什么特别的含义。这里我们以提取大于等于四个字的词汇为例讲解下如何按特定的要求来获取词汇,代码如下:

words = jieba.cut(report)
report_words = []
for word in words:  # 将大于等于4个字的词语放入列表
    if len(word) >= 4:
        report_words.append(word)
print(report_words)

首先创建一个report_words的列表,然后遍历words中的每一个元素,如果该词汇的长度大于等于4则把它放到report_words列表中,最后把它打印出来,结果如下:
在这里插入图片描述
可以看到里面有的词重复出现了很多次,比如上图圈出来的一些“信托公司”。那么这个report_words列表还可以再深度挖掘,比如希望能够统计出这个列表里的高频词汇,那么就需要用到下面的小技巧了。感兴趣的读者也可以代码中的数字4改成3或者2,看看短词的内容。

2、词频统计技巧

统计高频词汇的词频相对而言并不复杂,需要用到一个小技巧:引入collections库中的Counter()函数就可以统计列表中每个词语的频次了,代码如下:

from collections import Counter
result = Counter(report_words) 
print(result)

这样便可以打印输出每个词的出现频次,如果你想看出现频次最多的前50名,那么可以利用most_common()函数来获取高频词及其出现次数,代码如下:

result = Counter(report_words).most_common(50)  # 取最多的50

将result打印出来可以看到运行效果如下:
在这里插入图片描述
可以看到里面的一些高频词还是能体现出整个信托行业的一个情况的,比如最近几年的信托行业年度报告里便频繁提到信息技术与人工智能这类词,那这个可能也的确是行业未来发展的一个趋势。
完整代码如下:

import jieba  # 分词库,需要单独pip安装
from collections import Counter  # 自带的库,无需安装

# 1.读取文本内容,并利用jieba.cut功能来进行自动分词
report = open('信托行业报告.txt', 'r').read()  # 可以自己打印下report看一下,就是文本内容
words = jieba.cut(report)  # 将全文分割,获取到的是一个迭代器,需要通过for循环才能获取到里面的内容

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

# 3.获得打印输出高频词的出现次数
result = Counter(report_words).most_common(50)  # 取最多的50print(result)

3、词云图绘制

在进行词云图绘制前首先需要安装一个wordcloud库,安装方法可以通过PIP安装法来安装,以Windows系统为例:Win + R快捷键调出运行框,输入cmd后回车,然后在弹出框中输入“pip install wordcloud”的方法来进行安装,如果直接安装失败可以尝试清华镜像pip安装法。
(1)词云图初步绘制
在5.1.1节我们已经获取到了分词后的结果report_words,上一节获取的都是4字以上的词语,也可以将代码中的数字4改成自定义的数字。在绘制词云图前,首先引入相关库:

from wordcloud import WordCloud  # 这个库需要单独pip安装下

引入

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值