1. 开发环境
- Windows 10 企业版
- Pycharm 2019.01 EAP Community Edition
- Python 3.7
2. 前言
根据上一个案例中(主页寻找《requests爬取冷笑话合集》)获得的冷笑话,我们接下来将对爬取的结果进行分析。看看冷笑话网站上提供的冷笑话里面都是由什么内容组成的。
以下是爬取的内容案例:(冷笑)
1、“大爷,我现场采访您一下,您这样晨跑锻炼坚持几年了?”
“姑娘别挡道!我尿急! ”
2、“请问你是做什么工作的?”
“哦。我的工作是杀僵尸。”
“嗯?可是这个世界上没有僵尸啊! ”
“你以为它们是怎么没有的?”
3、中午去买菜,感觉都不太新鲜了。
老板:早上刚到的,都新鲜的。
我:这菜看着就蔫蔫的啊?!
老板:从早上到现在,它以为没人要自己了,这不垂头丧气么!
我。。。
4、我问他:你今天怎么没上班儿啊?
表弟:那大舌头老板说,让我上班的时候,顺路捎十块钱的“砂纸”,结果我听成了“烧纸”
我:那也不至于开除你啊
表弟又说:老板看我买错了,让拿出去扔了,我跟他说,留着吧,万一再用上呢?
2.准备工作
要完成对冷笑话文字分析的目的,要确定分析的思路。将网络爬虫爬取到的文字保存到.txt文件中,程序自动读取文档中的文字信息,将其读出为字符串。
采用正则表达式对文字进行筛选,去除掉字符串列表中的无关字符,例如“的”,“地”,“得”等等无意义的助词等。
接下来就是工作的核心,将获取的字符分词,采用python的库jieba
完成。jieba
可以对中文字符串自动分解为自然语言的词语,可以用于对语言中的关键词汇提取。
为了更好的展现冷笑话里出现的高频词汇,将采用词云的方式进行展示。
所有工作用到的库如下:
codecs
由于读取的文本文档是纯中文的,采用python自带的open
打开文本的时候容易出错,因此采用该方法。
re
正则表达式的库
jieba
中文分词库
wordcloud
词云库
matplotlib
绘图库
4.结果分析
根据以上过程绘制的词云如下图所示:
人物:特朗 普老板 老公 男友 姑娘 先生 女友 女朋友 哥们
量词:一下,两个,一个,一定,一次,一天,
5.源代码分享
# encoding: utf-8
"""
@version: 1.0
@author: Jarrett
@file: run_word_cloud
@time: 2020/3/20 18:17
"""
import jieba
import codecs
import re
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
filename = "./mytxtfile.txt"
f = codecs.open(filename,encoding='UTF-8')
mytxt = f.read()
f.close()
mytxt = re.sub(r"\d","",mytxt)
mytxt = re.sub(r"、","",mytxt)
mytxt = " ".join(jieba.cut(mytxt))
font_path="msyh.ttc"
wc = WordCloud(
font_path=font_path,
background_color='white', # 背景色
#mask=image, # 背景图
#stopwords=STOPWORDS, # 设置停用词
max_words=100, # 设置最大文字数
max_font_size=100, # 设置最大字体
width=800,
height=1000,
)
# 生成词云
#image_colors = ImageColorGenerator()
wc.generate(mytxt)
# 使用matplotlib,显示词云图
plt.imshow(wc) # 显示词云图
plt.axis('off') # 关闭坐标轴
plt.show()
# 保存图片
wc.to_file('news.png')
6.总结
1.分析冷笑话的内容其实是比较物料的,倒是可以应用在其他的途径中,例如法律文书,小说书籍等等。
3.接下来想做一个做词云的小程序,这样可以本地化运行。
4.合作咨询事宜请私信。【微店】【樱桃智库】。