一、问题简介
本文的内容围绕网站http://openaccess.thecvf.com/CVPR2018.py中所列的文献信息进行。该网站中可获取2018年的CVPR 论文的开放版本(由计算机视觉基金会提供)。对于这个网页上的论文标题与作者信息,需要通过爬虫技术将其整理在文本中,并对其进行预处理,包括分词、词频统计等。之后,需要对研究热点词汇、高产作者、论文数量、论文标题长度等信息进行统计分析,并将分析结果进行可视化展示和说明。
在本文中,我使用了八种不同的可视化方案对上述信息进行了不同角度的展示和分析,具体在后文中进行阐述。
二、数据的获取和预处理
2-1使用爬虫获取文本
我使用bs4、lxml和requests库对网页上的信息进行爬取,其中rewquests库负责对网页进行访问,bs4和lxml库对网页进行解析。最后将获得的信息存储到csv文件中,如图2-1、图2-2和图2-3所示。
图2-1 通过爬虫获得的作者信息
图2-2通过爬虫获得的标题信息 图2-3作者数量和标题长度
2-2数据预处理
获取了网页上的原始数据后,接下来对其进行分词和词频统计的处理。对标题词汇进行分词和词频统计的核心代码如下。其中我选取了一些常用的无用词汇进行剔除。
hamletTxt = getText() #得到原始数据
words = hamletTxt.split() #对原始数据按空格分隔
counts = {} #定义存储词频的字典
#创建需要剔除的单词列表
remove_words = ['for', 'and', 'with', 'a', 'of','in',
'from','to','the','using','by']
#进行计数
for word in words:
if word in remove_words:
continue
else:
counts[word] = counts.get(word, 0) + 1
#将字典存储到csv文件中
pd.DataFrame(counts,index=[0]).to_csv('hotword.csv')
得到处理后的词频数据文件如图2-4所示。
图2-4处理后得到的词频
对作者信息进行分词和词频统计的核心代码如下。
hamletTxt = getText2() #得到原始数据
words = hamletTxt.split(',') #根据‘,’将作者名分开
counts = {} #定义存储词频的字典
#进行计数
for word in words:
counts[word] = counts.get(word, 0) + 1
# 将字典存储到csv文件中
pd.DataFrame(counts,index=[0]).to_csv('hotauthor.csv')
得到处理后的作者词频数据文件如图2-5所示。
图2-5<