查看原文
其他

用词云图看Sustainability期刊热门题目

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:方   言,中南财经政法大学金融学院

文字编辑:戴   雯 

技术总编:张馨月

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营在不久前已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!   

在之前的推文《用词云图看2020社科基金课题~》中,我们已经介绍了词云图的相关用法,并结合jieba分词来绘制词云图,由于jieba只针对中文进行分词操作,本期当中,我们要在上周发布的推文《在Sustainability上发文最多的原来是这些高校》基础上,利用nltk库对论文题目进行分词操作,并用词云图直观地了解Sustainability上发表论文的热门课题,同时对词云图的一些具体用法进行介绍。

1.利用nltk对论文题目进行分词

首先,我们需要将在《Sustainability上发表的文章题目抓取下来,数据获取的过程参考推文《在Sustainability上发文最多的原来是这些高校》,将题目输出到txt文档中,以便于我们在Python中读入论文题目。我们先调用需要用到的一些库:
import nltkfrom nltk import word_tokenizefrom wordcloud import WordCloud, STOPWORDSfrom nltk import FreqDistimport re
接着,我们将抓取下来的论文题目读入到Python中:
with open (r'C:\Users\PC\Desktop\论文题目.txt','r',encoding = 'utf-8') as f: title=[i.strip() for i in f.readlines()] print(title)
结果如下,我们成功的读入了论文题目:

读入论文题目进行分词、去除标点符号以及去除停用词(在后台回复“Sustainability停用词”即可获得停用词文件):
stopwords=set(STOPWORDS)with open(r'C:\Users\PC\Desktop\停用词表.txt',encoding='UTF-8') as f: stop_words=[i.strip() for i in f.readlines()] for word in stop_words: stopwords.add(word)title = nltk.sent_tokenize(str(title))filter_text = re.sub(r'[^a-zA-Z0-9\s]','',string= str(title))filter_text = [word for word in filter_text.split(' ') if word not in stopwords ]print(filter_text)
运行结果如下所示:

接下来我们进行词频统计:
fdist=FreqDist(filter_text)print(fdist)for a,b in fdist.items(): print(str(a)+":"+str(b))
结果如图所示:

可以看到拆分为单词一共有240948个,以及相关单词与其出现的频率,这为我们下面做词云图打下了基础。

2.词云图的制作

利用nltk分词制作词云图的方法与使用jieba分词做词云图的方法基本一致,现在我们利用前文进行的词频统计结果进行词云图的绘制。
首先,在制作词云图之前需要调用相关库:
import matplotlib.pyplot as pltfrom PIL import Imageimport numpy as np
接下来,我们导入背景图,便可使用WordCloud来制作词云图:
images = Image.open("picture.jpg")   #导入背景图maskImages = np.array(images) w=WordCloud( background_color='white', # 设置背景颜色 font_path="msyh.ttc", #设置输出词云的字体为微软雅黑 width=800, height=400, #设置词云图的宽度,高度        max_words=1000,    #设置词云显示最大单词数量 min_font_size=1,         stopwords=stopwords,  #设置停用词使用我们设置的stopwords mask=maskImages, #设置词云形状 scale=25 #设置词云清晰度,scale的值越大,词云图越清晰 )wordcloud=w.generate_from_frequencies(fdist) #加载词云文本#展示图片plt.figure(figsize = (20,10))plt.imshow(wordcloud,interpolation='bilinear') plt.axis("off") #设置显示的词云图中无坐标轴plt.show()w.to_file('title.png')
运行结果如图所示:


这里我们可以看到,在该期刊发布的热门课题与Sustainability可持续发展、Development发展、China中国、Environment环境、Urban城市、Rural农村、Energy能源、Water水资源、Soil土壤、Green绿色、Quality质量、Climate气候、Carbon碳等方面相关的,这也正是与可持续发展息息相关的话题。
完整程序如下:
import nltkfrom nltk import word_tokenizefrom wordcloud import WordCloud, STOPWORDSfrom nltk import FreqDistimport reimport matplotlib.pyplot as pltfrom PIL import Imageimport numpy as npwith open (r'C:\Users\lenovo\Desktop\论文题目.txt','r',encoding = 'utf-8') as f: title=[i.strip() for i in f.readlines()] #strip()去除换行符,不去除则会在分词中显示stopwords=set(STOPWORDS)with open(r'C:\Users\lenovo\Desktop\停用词表.txt',encoding='UTF-8') as f: stop_words=[i.strip() for i in f.readlines()] for word in stop_words: stopwords.add(word)title = nltk.sent_tokenize(str(title))filter_text = re.sub(r'[^a-zA-Z0-9\s]','',string= str(title))filter_text = [word for word in filter_text.split(' ') if word not in stopwords ]fdist=FreqDist(filter_text)images = Image.open("picture.jpg")maskImages = np.array(images)w=WordCloud( background_color='white', # 设置背景颜色 font_path="msyh.ttc", #设置输出词云的字体为微软雅黑 width=800, height=400, #设置词云图的宽度,高度 max_words=1000, min_font_size=1,         stopwords=stopwords, mask=maskImages, scale=25 #设置词云形状 )wordcloud=w.generate_from_frequencies(fdist) #加载词云文本#展示图片plt.figure(figsize = (20,10))plt.imshow(wordcloud,interpolation='bilinear') plt.axis("off") #设置显示的词云图中无坐标轴plt.show()w.to_file('title.png')
ps:在每次重新执行程序的时候,词云图都会随机的排列顺序,因此你所执行出的词云图可能和作者截图不一样哦~




对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
用Python把新婚祝福打满公屏!

震惊!知名数据分析软件竟被某度翻译“亲切称呼”为“斯塔塔”

喜临涛门,月满人圆

Python3.8新秀海象符成功出道
“合”我在一起—merge
在Sustainability上发文最多的原来是这些高校

Python中的这些运算符你真的会用吗?

字符串函数总动员

用词云图看2020社科基金课题~
建议收藏!Python精选推文干货合集
xpose和sxpose,谁是卧底?
让你的数据一目了然--label命令介绍
Python推文合集基础篇(下)|算法简介
【小白指南】Python中有哪些数据类型?(附推文合集)
轻松获取通行数据——cntraveltime命令介绍
让Stata完美牵手中国地图之cnmapsearch
自然语言分析——利用NLTK进行文本预处理
寻找B站的最爱--8月B站全站榜爬虫
cnaddress命令——实现经纬度转换为中文地址
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存